注册

211 冷门文科毕业生的前端之路





白驹过隙。


毕业之景还历历在目,一晃如今却已经是两年过去。犹记得毕业时的焦虑及惆怅,在前端知识的苦海中迷茫摸索,而如今却已对前端知识得心应手,信手拈来,多了些从容和自信。从一个搞不清 JSON.parse(JSON.stringify()) 的毛头小子,到如今覆盖主流前端框架、工程化、大前端等等领域的中阶前端打工仔,短短一年多的时间,我应该是完成了一个比较大的飞跃。虽然还是留在浅浅的应用层,原理层并未深入,但是对于这种知识面的覆盖率我已经相当满意。这已经足够支撑我独自完成开源项目,足够支撑我应对工作中的各类问题,甚至还富有余地,效率提升了非常多,也拥有更多的时间去做自己喜欢做的事。


但从来没有谁的路是一帆风顺,平坦宽阔的,回想两年前的这个时候,我还在迷茫和未知中挣扎。


毕业季:在迷茫中疯狂碰壁


21年寒假结束,我便马不停蹄地赶往学校,因为毕业临近,而我却仍然没找到工作。


在春节前,和大多数人一样,我也是焦虑的。身边的朋友陆续签约实习,薪资都还不错,而我却屡次面试受挫,一路陪跑。还没有搞清楚问题出在哪里的我,不挑行业,不挑企业,只看薪资是否在 5000 元以上,也只看岗位名称是否“高大上”,比如管培生之类的。毕竟是 211 毕业,农村出身的我,只有薪资过 5000 一个要求,算不得过分。于是病急乱投医,例如什么养猪、养牛的都瞎投,结果人家还看不上我。毕竟我是文科的,笔杆子水平一般,简历上乏善可陈,成绩倒数,也没有任何奖项。这样空乏的履历如同我的钱包,缺乏竞争力使得我在诸多面试中败下阵来。


这些面试里,我印象最深的是成都知名连锁超市沃某玛。接到面试邀请后,要求着正装,我特地去租了西装皮鞋,赶了 6 小时高铁去到成都。与我一起参加面试的还有很多从北京黑龙江过来的同学。面试采取无领导开放式面试,几位面试官要求 5 人一队做游戏,两个团队一起竞争,并要求大家在游戏过程中讨论出制胜方案。我当然知道这场面试要考察的点:一是注重目标达成,二是积极参与讨论。我一开始也确实是这么做的,但是活动进行到中间,我发现这临时组建的团队,几个陌生人,几个性格各异性别不一、学校不同的人,出现了混乱。也许是出于竞争关系,其他人不在乎目标,不在乎队友,不在乎任何东西,大家不尊重别人的讲话,像一群鸭子“呱呱”乱叫。想到如此混乱敷衍的一场面试就决定了我此次远行的结果,我忽然就觉得荒唐可笑。加之早晨因为不熟悉地方并没有吃早餐,饿瘪瘪的肚子一直在抗议,我就没有再积极地参与到他们毫无结果的自说自话中了。虽然我已经找到制胜之策,但是直到游戏结束,也没人听取我的意见,但是两个队伍神奇般的都没有达成目标。毫无疑问,这场面试我并没有进入下一轮,最后也是灰溜溜地返回了学校。


这次面试,让我更加坚定了缘分这种说法,那些不合时宜出现的人或者事,那些没有选择你的,或者你没有选择的,一定是因为你们缘分不够,而不在于它不够好或者你不够优秀。


机缘巧合:接触编程


就这样盲目地找了半年,无果。在此以后,我决定利用春节假期做些什么。


学院里曾经组织过一次课外学习,是联合腾讯课堂学习微信小程序开发的课外实践课程,由学校就业中心牵头做的。学院当时的书记一下子就争取到了很多的课程兑换码,我也是第一时间就报名学习,最后顺利结业。虽然没有学到真正的技术,但因为有了这层基础,我决定春节假期好好地做一个微信小程序,学以致用,不管以后如何,全当一个兴趣爱好,总比浪费时间有意义。


寒假的每一天我都在敲代码,尽管我只会最简单的,但还是憋出了一个简单的阅读小程序。打个不恰当的比喻,如果两年后的我现在拥有高中大学的编程水平,那时候的我不过是刚学会了加减乘除。


回到开头,寒假一结束我就赶往学校。因为假期做出了小程序,我觉得我可以往程序员的方向试试。我之前在各种行业之间反复横跳,尽管我对互联网很感兴趣,但是之前一直了解、学习的是运营和广告之类的知识,也是一窍不通,加上屡次碰壁,简历上乏善可陈的优势,我意识到必须找准行业,必须把精力集中在一个点上,才能解决问题。于是结合我自己喜欢互联网,懂一点点编程这两点,我觉得往程序员发展也未尝不可一试。


开启艰辛的自学之路


开始针对性的学习。


在一个文科学院,临近毕业的时间点,开始自学编程。没有人教,没有人指导,只有我自己。虽然从小到大就是如此,除了父亲给予的部分经济支持,我一直一个人,也是习惯了。我依稀记得大创课上的老师是学校里的信息老师,于是我找他问了一个非常简单的问题。问题就是,我在写 CSS 时,把 : 误写成了 =


.title {
color = '#fff';
}

他给我说明了问题所在,给我分享了菜鸟教程的官网,让我跟着官网学习。就这么和他简单的两句对话,便是我唯一一次得到的指导,菜鸟也确实在前期的学习中给我给予了很大的帮助。而我也知道老师的意思,他是让我自己去看,毕竟学习编程这种事情,隔着屏幕很难知道你的问题,也很难做出帮助。编程的学习之路上,恐怕会遇到几千个问题,一个陌生老师怎么能回答得过来。即使是培训班的老师也未必能手把手教你,出于礼貌和自知之明,毅然决定依靠自己。


当然了,有人带没人带是天壤之别,有妈的孩子和没妈的孩子能一样吗?


编程需要编辑器,编辑器也有很多,我连用什么编辑器来学习写代码最合适都不知道,只是在学习小程序时使用的是 vscode,也只知道 vscode。那时连插件的使用都不会,下了一堆下来会出现冲突,不下的话有些功能又用不了,于是捣鼓编辑器就用了很多天。最后虽然没有彻底弄明白,但是勉强还是可以写代码了。


其实对于我来说,最痛苦的事是在前期自学找视频教程时,课程中会提到 github、less、sass 诸如此类的技术点,有时极为困惑,都有 css 了,为什么还有什么 less、sass?而这些东西都需要我自己一点一点去探索,没有人解答,哪怕只是简单的一句解释。而去询问别人呢,并不会得到什么礼貌的回应,周围的朋友都是文科生,想要寻求一点帮助确实太难。结识到一些前端朋友,也只是互相鼓励,对于很多知识点,别人也不是很懂。当然了,现在说这些似乎很矫情,似乎每个前端都是这样过来的。


面对学不完的知识点,有种一眼望不到头的感觉,更不清楚企业需要什么样的人,学到哪种程度可以进企业开发。这种感觉好像整个人漂浮在半空中,又像是溺在水里,找不到着力点,令人窒息。


对于一个初学者来说,培养编程思维、编程能力实在是太困难。毕竟不是每个人都天赋异禀,对于电脑,农村出身的我也是到了中学才开始接触,为了避免被网络游戏毒害,我在中学时期强忍对电脑的好奇,导致接触的机会更加少了。


网络教程中,很多老师会说,看文档就好了,跟着文档就可以学习了,不用费劲。如今来看这话不假,但是不适合 1 年经验以内的新人。一个人的知识储备不够,看文档只会是一件更加痛苦的事。还有源码的学习,如今的招聘市场可谓害人不浅,一个应届生、初学者居然需要知道源码和源码级别的原理,实在不可理解,工作经验 3 年的人看框架源码尚且困难,何况是应届生呢?


扯远了。


就这样,毕竟是个 211 学生,不至于蠢到不会自学。在网上搜罗学习路线,学习视频,一点一点看,一点一点敲,我终于是摸到了编程的一点点门槛。但这时的我仍然菜得不行,什么闭包、原型链、vue 在我眼里都还是模糊的概念。但是毕业临近,顾不得那么多,工作才是最要紧的事情,于是开始面试,投递简历。但老实说,这时候我还没有真正地建立编程素养,妥妥的一个门外汉,连初学者都还差点意思,没有每日编码的习惯,没有每日阅读博客的精神,还处在前期的痛苦之中,如果有个人带的话,我想结果会好很多。


但是时间不等人,由不得我了。


山重水复疑无路


时间来到四月,距离毕业之期还有两个月。我在百般失利的情况下,抱着试一试的态度向云南某机(云南最大的手机销售公司)投递了简历。幸运的是面试通过,还进入了他们的人才培养计划,本以为一切就这样顺利发展下去,可我的编程基础,却为我离开某机埋下了地雷。


我好像会,却又好像不会,我好像在努力处理好每一件事,但是我并没有做好。我最大的错误就是入职某机太早,没有趁此机会加强学习。那时候我还没有找到编程学习的窍门,没有养成每日编码的习惯,看视频缓慢的进度让我看不到希望,对什么知识点都是一知半解,有问题找不到人解答使我心生愤懑,一腔不快找不到发泄的地方,最后演变成必败的结果。


在这里给大家讲讲过程,也不怕大家笑话。


我是人才计划里第一个入职的人,带我的是整个前端的技术大佬(没有管理权,但是技术最厉害的),是腾讯离职回来养老的,应该是阿里 P8 级别。也许大佬就是大佬,眼睛里容不得一点沙子。他先教我 git,给了个网站让我自己看,也不说具体要求和细节,就你自己看,看了半天找不着方向,下班前被他考察时一脸懵逼。被他问了以后才知道他的要求,又重新学一遍。


我是真的觉得这种不善言谈的技术大牛,多少都带点病,就是自己不能给别人讲解清楚一个知识点,却总是怪罪别人能力太差。我在几家公司里遇到过几个,运气不好遇上这种导师,恐怕在这个公司的职业生涯已经宣告结束一半。遇到这种导师,希望大家勇敢的说出来换一个,就说不好磨合,不然吃亏的就是自己。


当然了,也不全是别人的问题,自己菜就好好反思。


给时间学习,做 todoList,给时间做博客,甚至 axios 都会帮你封装好,接口使用开源接口。总之就是他们的培养计划是非常好的,也非常宽容的给学习时间。但是导师自从知道我是文科生,给我的工作安排以及指导完全模糊。而我在实现目标的过程中呢,耍了点小聪明,更让人觉得我菜得不行了,坚定了让我滚蛋的决心。


哈哈~


我自己在这个导师的带领下呢,由于前期没处理好和他的关系,导致有些害怕和焦虑,以至于中间犯了很多低级的错误。中间也被 HR 约谈了,这期间我还完全不知道导师对我的偏见,以及迫切地希望我这个门外汉、文科生赶紧滚蛋的想法,还和他们有说有笑。HR 两人的一唱一和加上阴阳怪气的嘴脸一直盘旋在我脑海里,我在这后面动摇过几次,以至于在最终考核中大脑一片空白,没能正常发挥,也下定了离开的决心。


在我入职三周后,进来了两个同学,他们两人因为我之前踩的坑都给他们排过雷,所以很多错误他们没有犯,讲道理,在知识的广度还有基础上,我是比他们更好的,这期间的开发中,我不止一次的帮助过他们,大家关系到现在也仍然不错,虽然最后留下来的人中没有我。


但是就像我在开篇中说的那样,并不是某机不够好,也不是我真的不优秀,而是我们之间之间没有缘分。


柳暗花明又一村


离开某机,我心态变得愈加焦虑,时常惊醒,时常颤抖。对于未来的模糊感,使我寝食难安。我开始放平心态来学习,来弥补之前的不足,开始刷题,背面经,开始有规律的投递简历,并且面试。离开某机的第一家面试,面试官问了我一些对应届生有点难,但是还不算过分的题目,但是我并不能回答得出来。我装作很自信的样子,以为能够吼得住面试官,但是面试官问了我一句:你好像很自信?我不以为然,为什么不自信?直到很久以后,我才明白这句话的意思是:小伙子,你很菜,要谦虚。


最近几周的面试都是类似的,使我丧失了一部分信心。对于应届生,小公司不愿意花时间试错培养,也不愿意开超过 3000 的工资,而超过 3000 的公司,要求都过高,例如拿过竞赛的国奖,可我这个半路出家的文科生哪里参加过什么竞赛。


昆明这样的小地方,想找个好点的科技公司,或者说愿意要应届生的公司,很难,而公司想要招一个优秀的人才,更难。但是遇到真正的人才,这些公司也未必会开出合适的价格,除了画饼还是画饼。


面试三周,没有收到一家 offer,我已经萌生了离开昆明的想法,准备回家观望,或许备考公务员,或许另谋出路。我准备降低简历投递频率,摆烂到毕业。之前投递的两家还没有面试,我也心生退意,但是大学好室友让我再试一试,没准就成了。也是这一试,改变了我后续的命运。


最后这家面试,我没有抱着任何希望,照常写个人信息的表格,照常准备面试。结果与面试官相谈甚欢,聊了一个多小时。走到出租屋楼下的时候,HR 给我打了入职邀请的电话。我只记得那个傍晚,天气晴朗,小区门口坐着几个爷爷奶奶在吹晚风。


入职。


我仍然没摆脱从某机离开的焦虑,我从没经历真正的企业开发,我害怕犯错,我害怕完成不了任务。


我的确菜得像个小朋友。


在新公司认识了几个好朋友,也是因为他们的帮助我才走到今天,很难想象,如果没有遇到他们,我的路还要曲折多少。新公司有着新人培训和一系列的考核,纯靠背诵记忆是很难通过的,尽管后面看来考试不通过也没有太大关系,但是当时刚开始严格起来,对于应届生来说确实是一个考核指标。幸运的是,公司的领导还算包容,当时开发是基于另一个人写的简易框架,问题很多,所以没有人会认为是我的能力存在问题(也确实不是我的问题)。接触公司项目后,我的知识点像爆炸般都串起来了,我开始有意识的去深入学习,去看技术博客,去研究如何写好代码。这时候我已经具备了非常不错的编程素质了,加上遇到一个很好的小组领导,我得以最大程度地成长。


千里马常有,而伯乐不常有。


这时我已经学着写一些 Vue2 组件库了,模仿 Element UI 写过 10 来个基础组件,组件开发的学习使我对 Vue 掌握更上一层楼,也奠定了后来开发 React 组件库的基础,当然,这些都是后话。在这个公司,我在所谓的翔山代码里自顾自地写着自己认为优秀的代码,注释、变量、函数都尽量做到最好,最主要的是在公司变态的开发进度下还坚持保持清晰的代码风格。前公司的进度可能是一周写好几个页面,页面有树、查询、表格、弹窗表单、Echarts 图表等,我在离职前一周写的代码超过 10000 行,我是有认真数过的。总之,我之前零散的知识,突然爆炸般串起来了,因为公司前端基建非常差,得以接触 base64request headerBlob 等较为困难的前端知识点及 Web API。同时,还接触了 momentswiperEcharts 等库。更重要的是见识到了 Axios 都不会封装的“资深前端”,见识到了“资深前端”是如何写出 3000 多行代码而不做拆分的。


短短半年,我得到了非常大的进步。


远走他乡


但是,和所有的小公司一样,这个公司,加班严重,朝令夕改,问题响应后迟迟得不到解决,还有一个最令人讨厌的 CEO。年前两个月使用各种手段逼迫员工加班、离职,暗自修改公司奖惩制度,强迫 996。出于以上种种原因,在这里坚持半年后,我便和几个好同事一起选择了离职。而在此之前的半年的里,公司的员工已经换了至少 3 茬,很多人待不了几天,就因为加班严重而离职。


22 年春节,没有寒假。


两周后,我又回到了昆明的出租屋,距离房租到期还有一个多接近两个月,我放慢了步伐,低频率投递简历,一边玩一边学习,慢慢调整心态。几周后收到面试邀请,这回我的简历是被捞的,经过简单的笔试面试,我收到了现在这家公司的 offer。当时面试另一家也在 offer 中了,也是知名企业的技术研发部门,但是出于各种原因没有选择,现在看来无疑是正确的。我前面说过,人也好,工作也罢,我们与这些事物的相遇,是缘分,冥冥之中,那个该出现的事物一定会出现,你们将一起走过一段旅程。


出差杭州,新公司,新环境,新技术。


从农业社会进入工业社会


如果上一家公司的技术是自行车,那么现在公司的技术就是火箭。技术的复杂度与前沿程度要领先 4 ~ 6 年(尽管这个项目也是三四年前的了),业务体量、代码体量也是几百多倍。


焦虑,痛苦,害怕。


就像农业社会的人突然来到现代文明社会,看到满街的汽车和摩天大楼,有种碾压感。


全新的技术栈摆在我的面前,很多要学习的东西,而留给我的时间并不算多。


22 年的春天,杭州为了迎接亚运会正在赶工修建地铁和路面,工地上的机器 24 小时连轴转,我并不能好好的休息,加上焦虑使我睡眠很浅,我便每天早晨 7 点钟起来看视频,学到 9 点再洗漱去公司上班,晚上下班后,又经常学到深夜。就这样持续两周,我大概已经能够熟练的编写新技术栈的代码了,但是公司项目里用到的一些配套技术,还有公司自研的组件,都需要我去持续研究。


其实进入公司第二天就开始接需求了,接到了一个看似很简单,却又很难的需求。公司的基础建设现在仍然令我瞠目结舌,很多东西我以前都没有接触过,以至于我理解起来有些困难。当时带我的师兄,是个不善言谈的“真程序员”,我问他的问题被他误解后给我讲解了很深奥的理论知识,而我面对这样的东西的时候一头雾水,并不能帮助我解决实际问题。幸运的是,由于他很忙,换了另一个人带我,这个同事有着丰富的经验,性格很好,也很会给新人讲解问题,以及了解新人到底真正想要得到的帮助。在各方努力下,我开始渐渐有了感觉,领导也很重视我,给我布置了很多很有难度的任务,在这些任务中,我开始熟悉公司的代码,系统架构,业务流程,开始有了掌控感,能够 hold 住所有需求。同时,我也开始带新来的同事,这令我开始以更高的姿态去和别人对话,开始学会选择,学会拒绝,学会刚柔并用,学会更好地处理问题,推动事务的前进。


这一年,领导很拼,我跟着领导也很拼,做了很多建设,做了很多优化,尽管结果上可能并没有太好,但是我工作的量,以及负责的事务却在团队里是很拔尖的。


找到自我


工作之余,写完了一个 React 入门项目,使用 React + React-router + Redux + React-redux + json-server 实现的一个后台管理系统。紧接着又将我之前的静态页面小程序改造,技术栈使用 Taro,也就是 React + TS + Dva + 微信云开发。但这时其实我对 TS 还有 Taro 都是不熟悉的,基本是找的开源项目搭建了项目基础结构,TS 用得也不多。但是这次最大的收获是学会了一点 UI 设计,给自己的小程序加了很多有意思的小功能,但是不得不说代码写得很烂,对 Taro 一窍不通,文档都没怎么看过,代码结构存在很大的问题。不过马上一年了,今年夏天准备把小程序使用 Uniapp + Koa + TS + Vue3 再次重构一遍。


在此期间,我还投入到 Webpack 的学习中,虽然翻来覆去学了好几次,但是都不是很认真,不过看看文档写写配置没什么问题了。除了每天刷几篇博客外,下半年主要精力还是投入在公司业务里,直到 10 月份回成都后,才有了更多的时间。这时我已经计划自己单独写一个 React 组件库了,看了很多文章和源码,学习到了不少东西。在 12 月份左右写了 12 个组件,但是属于是初体验,很多东西没考虑,比如主题定制、国际化等。在 12 月也就终止了项目,觉得应该能做得更好,所以重新设计了项目架构,甚至图标库也是完全自己搭建。不过因为新年到来,一直搁置到现在。


这几个月,主要还是因为受亲戚所托,给他们开发了一个 app,也算不得外包,就是亲戚的原因,没法拒绝。这次开发直接写吐了,功能多不说,连带 UI、需求、合同、前端都让我一个人干了,所以很累。因此 3 月到 5 月这段时间不是很想写代码,简单看了下 Nest.js 入门,顺带学了下 Koa,下一步准备把 Koa 巩固下,组件库的事得放一放了。


写在最后


与朋友见过几次,都说我开始卷起来了。也确实是的,几乎每天都在看博客,编码的习惯也开始养成了,会的很多,不会的更多。但是焦虑已经没有了,更多的是沉稳,对于可能会出现的一些变化已经做好了心理准备。现在走进了一个难得的舒适区,我准备多躺一会儿,这样的机会,不是人人都有,这样的时光,在人生的长途旅行里,可不多见。


也祝大家都能达成所愿。

0 个评论

要回复文章请先登录注册