我是dog君,一名95后前端小兵,互联网前端开发工程师,坐标北京。希望能够认识大家,如果这篇文章能让你感到共鸣,欢迎添加我的微信,dm120225,我们可以一起来探讨,互相学习,共同进步,期待你的到来。
大家好,非常开心能够加入简书平台,和大家一起学习交流,这是我在简书发表的第一篇文章,如有不妥之处,还望大家能够留言批评指正。
首先做下自我介绍吧,我是一名95后,互联网前端小兵,大家可以叫我dog君(这个名字好奇怪),毕业于北京某211,自动化专业,目前坐标北京。那么身为自动化专业的我,到底是怎样接触到前端开发这个岗位,并且是怎样学习的?在求职过程中遇到了什么问题,又是怎么解决的?在前端以后的发展道路上应该怎么走?我决定今天写下我的故事,分享给大家。
我与前端结缘
第一次与前端结缘,是在2017年的暑假,那时候的我正在读大二。相信大家跟我一样,刚刚步入大学的时候,对身边的一切充满了新鲜感,各种社团,学生组织层出不穷,于是我加入了学生会和好多社团,开始了我肆无忌惮的生活。基本上从大一玩到了大二,每天的生活就是,能睁眼就起,睁不开就睡,想上课就上,不想上就不去,晚上才是和学生会社团的哥们弟兄们happy的时刻。说句实话,现在让我回想起当时的日子,那还真是年轻啊!
这种日子持续了将近两年,在大二下学期快期末考试了,我意识到了,学生会和社团,我已经玩不了了,因为到了大三,就会换届,我们自然而然就退居二线。那么我还能干点啥?这两年除了搞这个搞那个,学习不咋地,娱乐项目倒是积累了不少。结果越想越多,从这次期末考试挂科,想到了毕业后失业,想到了给人刷碗洗盘子,想到了娶不上媳妇儿,想到了大街上要饭。。。这压力,瞬间就上来了。于是和各路大神交流之后,了解到可以出去实习来锻炼我自己。可我能干什么呢?哎!对啊,我做过社团会长,学生会部长,我有学生工作经历,而且对人事管理这一块比较擅长,于是,我看了各大招聘网站的需求,发现我可以去做HR!好,说干就干。写了份简历,开始海投,功夫不负有心人,58同城旗下中华英才网招聘HR实习生,面试通过,开始了我的暑期实习生涯。
第一次实习
我想象中的HR工作,都是很高大上的,坐在办公室里面,每天管理管理员工,做个招聘,给领导汇报会报工作,穿梭于各大办公楼。我可能是想多了,我去那只是每天给人打电话,约人家来面试的。不过也正是在这个过程中,我接触到了前端,你身为一个HR,要跟人家技术聊天,那么首先你必须要懂点技术的东西呀!了解了前端 java 安卓 IOS 大数据等多个岗位介绍后,我发现,前端竟然如此简单,几个标签,定义几个样式,就能把网页给做出来了!(我当时简直是太天真,还是年轻)说干就干,于是在实习期结束后回到学校,开始了我前端的学习生涯。
写了这么多,现在才步入正轨,前面竟然都是铺垫,哈哈。感谢你能够读到这里哦,亲爱的朋友。
学习前端迷茫期
2017年9月份,我回到了学校,开始了我前端的学习生涯。在大三上学期,我真的迷茫了一个学期,走了很多的弯路。那时候毕竟是一个学生,能想到的学习方法首选那当然是看书。于是我买了Head First系列丛书,一本html css的,一本js的,两本1500多页啊,还好我练就了大学生期末考试的必胜功力,一天一本书,一周一学期。看完这两本书之后,我发现,哦,挺有意思的啊,但是让我写代码我还是不会啊!我连个div span标签我都不会写,写代码还在用记事本,大家都是这么写代码的嘛?不对呀,我看大佬们屏幕上的代码都花花绿绿的可好看了,我怎么用记事本?我开始了自我怀疑,每天都很焦虑。解决焦虑的办法,是继续看书,我自以为学到了很多,心里边会很舒服,暂缓一下,然而我还是不会写代码,这,持续了整整一个学期。
寒假期间,我加了好多前端学习交流群,我当时已经准备放弃前端了,因为实在学不会这玩意儿,我太难了。在和他们交流的过程中,他们有的说让我看视频,有的说让我培训去,有的说让我边看书边敲,说啥的都有,那我综合考虑了一下,培训是不可能的,啥条件啊,钱谁出啊,于是我选择了看视频,当时我就想着,本来我自己什么都不会,那我还有啥不能尝试的,人都这样了,那指定干啥事都触底反弹啊!
步入正轨
开学了,回到学校,我给我自己这个学期制定了两个目标,这学期结束,一个是要出去做前端实习,一个是减到190斤以下(我身高182,体重当时230)。不知道我哪里来的鸡血,我竟然很兴奋,啥都不会,干啥啥不行,吃啥啥没够,有个目标就兴奋,大概已经破釜沉舟了吧,什么都不在乎了,哈哈,干就完了铁子!
2018年3月1日,我正式开始了我的前端学习生涯。那时候,真的是日复一日的重复,机械的过日子,但是每天都和打鸡血一样,没有假期,没有周末,没有聚会,连吃饭都是一个人。早上起床大概七点半到八点,该上课上课,没课就坐在电脑前,打开视频,带上耳机,开始看视频。视频是一章节一章节的,每个章节分了好多小节,所以每个视频的时间也不是很长,看完每个小节的视频,我都会去做练习,真枪实弹的去写代码,我的编辑器也从记事本换成了sublime,换成了vscode(我可专业了。哈哈)学完html css ,我开始制作网页。一开始我做了拼多多的官网,然后发现没啥难度,于是顺便做了天猫,淘宝,京东的官网,都是静态的,纯html css。之后学习js,跟着老师去做练习,什么变量,循环语句,条件语句,函数,对象,作用域,闭包,原型链,垃圾回收等等吧,反正当时我觉得我学的还挺好,每天还是很兴奋的,晚上大概九点,出去跑个步,回来洗个澡,然后继续敲代码到一点两点,上床睡觉,这种日子持续了大概三个月。
找前端实习
2018年5月下旬,我出去找实习工作。在我找实习的时候,我还不会框架这么高级的玩意儿,仅仅凭着html css js等一点点一丢丢的基础去找工作,我也纳闷我哪里来的勇气,或许这就是男人吧,被生活逼疯的男人。现在想想当时能让我来面试的公司,那HR绝对是真爱。不过,面试的过程也非常的曲折。首先我们学校在北京偏远的小山村,昌平西风口地铁站下车(有没有人猜到我是哪个大学的了,哈哈),然后每次去面试基本上半天时间就没了,如果面试上午一场下午一场,那么这一天我可以在市里浪荡江湖了都。面试了有十几家,有五分钟就完事的,有聊到HR了说我没经验不行的,有让我转岗的,有喷我的,说我这水平出来找什么工作,反正各种各样吧,不过我没有放弃,神挡杀神,佛挡杀佛,生而为人,不服就是磕,都这样了我还怕谁呀?干就完了呗。功夫不负有心人,感谢某OA公司,感谢我人生导师超哥给了我实习的机会,感谢在我学习前端路上遇到的所有朋友们。我终于没有辜负我在开学时定下的目标,完成了本学期结束找到实习,那么第二个减到190斤以下呢?当然!我也做到了!从230斤,三个月的时间,瘦到了190斤,从跑一公里就开始喘,到轻松拿下十公里,到每天十公里强度的跑步,三个月的时间,我拿掉了40斤的肥肉,那个感觉,爽!好嗨哟!感觉人生已经到达了高潮!感觉人生已经到达了巅峰~~
来到公司,再次迷茫
期末考试结束,第二天我屁颠屁颠的去了公司报道,签了合同,领了电脑,但是,我发现一个问题,就是为什么给我这么多的账号密码啊!还有什么 git jenkins wiki gitlab OA等等,我靠,这都是啥啊,视频里面都没讲过啊!我慌了。公司的同事们告诉我,框架用的是angular,以前早有耳闻,现在用的是vue React比较多,angular很少的,那么我怎么进入了一家搞angular的公司,我嘛也不会呀!这就是从自己学习到公司正式开发的过渡阶段,在这个阶段不仅仅是技术上的改变,更多的是社会角色的转变,你从一个学生,变成了一个员工,你从学校,来到了公司,公司是以盈利性为目的的一个组织,那么你想活下去,就要为公司创造价值。我能创造什么价值,我只会html css 和简单的js,框架不会,git不会,什么jenkins没有过,之前github账号都没有,更不用说gitlab了,就这样,我再次陷入了迷茫。
那我该怎么办,公司不是用angular嘛?学呗,反正我也不会,干就完了。于是又通过我之前看视频学习的形式,把angular那一套搞了一遍,在同事的帮助下,配置了git node 等并拉下来了项目。当我搞完了那套angular的课程之后,我尝试着去看公司的代码,哎哟!我竟然能看懂了!你说神奇不神奇!但是,看懂归看懂,当时我自己的编程思维并没有建立起来,我只是停留在皮毛的阶段,知道点简单的语法,能知道写的代码每一行是什么意思,但是合在一起,嗯,感觉就像一篇英文文章,每个字母我都认识,但是连起来我就不知道什么意思了,和这种感觉一样一样的。显然,我又慌了。
恰巧公司需要做一个需求,很小,但是能够把一家公司的工作流程给串一遍,一些技术也都能用到。可是,我不会啊!我连需求是个啥我都听不懂,技术上我也不知道哪个是对的哪个是错的,工作流程更不用说了,完全不懂。那怎么办,硬着头皮做呗!自己有问题,就去问啊!于是这两周的时间,办公室里面总会看到一个小胖子的身影,每天来来回回的穿梭,那没办法,不会就得问,因为做不出来,压力大,我问一下能解决一个问题,我就心里有点底。到最后,哎哟,我可算松了一口气,这个需求让我给整出来了!当时别提我有多开心了。这个需求,实际上就是一个表单验证,然后给后端发请求,做请求处理。然后参加了需求评审,排期,开发,测试,上线,代码仓库管理,jenkins持续集成等公司的工作流,总的来说,把这一套给顺下来一遍还是挺好的。但是,即使做出来了这个东西,我还是不会写代码,基本上所有的问题都是问别人,别人告诉我,我再改,和人家帮我把需求写了没什么区别。我还是迷茫。
转折点
转折点发生在接下来的两周,自从我做完公司的一个需求之后,我静下来心来,认认真真的思考了一下,对需求做了一次复盘,我记录下来了我在本次做需求的过程中都经历了什么,写成了一篇文档发在了公司的wiki上面。然后我打开了公司的后台管理的项目,从index.html开始看,看不懂的地方就去查,就去问,从登陆,到组件的封装,到权限的控制,到菜单的管理,到表单的验证,到路由相关,到业务的增删查改,到文件的上传等等,在这期间我又整理了OA后台管理系统的文件结构发表到了公司的wiki,对项目进一步的熟悉。在这个过程中我惊奇的发现,哎哟,这可了不得了,每个文件里面的代码竟然有很多如此相似的东西,从逻辑上的角度来说,大体上是相同的,只不过跟随着业务的改变,部分代码处理起来不一样而已。太兴奋了!当我再看其他模块代码的时候,我能够准确的预测到接下来他们会怎么写,应该会怎么写,代码里面必备的一些东西都有什么,怎么去辨别哪些是业务相关的,哪些是通用的,那些通用的功能都是怎么去封装起来的等等吧。就是这两周的时间,我把公司后台管理系统的代码全部看了一遍,我通了,我的编程思维建立起来了,我知道我要怎么去做了,最重要的是,我学会了复制粘贴。
我想,当我说出来我学会了复制粘贴是最重要的时候,相信大家都在抿着嘴笑吧,哈哈。其实对于一个编程小白来说,能够学会复制粘贴,确实是不容易。大家可以想一下,如果说你代码看不懂的话,不能辨认出这段代码是对的还是错的,那么你的复制粘贴有用吗?学会复制粘贴,是作为一名程序员最基本的生存本领,首先你能看懂,然后能辨别出这段代码对不对,然后需要去对比这段代码在你要做的东西能不能匹配上,最后能不能通过把这段代码进行修改后完美的适配你当前的业务逻辑,这才是基础可实用的复制粘贴。那么即使到现在,我在遇到一些问题,想要借鉴其他人的代码的时候,我也会采取这种复制粘贴的形式,在做业务的过程中,也是大量的复制粘贴,留下更多的时间去学习提升自己,我认为这是很正常的。所以说,学会复制粘贴,是一大突破。
离职,紧跟前端潮流
后来,伴随着公司组织架构的调整,业务的整改,人员的流动,我离职了。那时候我实习了大概三个月。我信心满满的出去面试,但是我发现了一个问题,就是之前公司用的是老牌Angular,然后ES5的语法,出来面试之后发现大部分的框架还都是Vue React ,用的是ES6的语法,我自身的技术栈太老了,说句时髦点的话,现在跟不上前端的潮流。经历过几次面试的打击后,我意识到了技术前沿的重要性,我开始学习ES6,因为有了之前的一些经验,现在这个阶段开始学习显得轻车熟路,我先是采用看视频的形式,把常用的ES6的语法过了一遍之后,开始研究起来了阮一峰老师的著作《ES6标准入门》。在兴奋中跌倒,在跌倒中爬起,爬起后继续兴奋,这何尝不是我们的人生,谁能拥有一个完美的人生?完美的人生一定完美吗?谁的人生没有缺陷,只有缺陷的人生才完美,经历大江大浪,体味人生百态。
当我拜读完阮一峰老师的著作后,刷了好多的面试题,我再次出去面试了。这一次和以往不同,好多的公司还是接受我的,即使我并不会Vue React。最后,我选择了一家互联网巨头,字节跳动,开启了我下一阶段的实习生涯。
进入头条后,我内心非常激动,走入办公大楼,用着最新款mac,免费三餐,房补,并且实习工资一天400!入职当天上午接受培训,大厂果然不一样,入职当天是排队的状态,在一个大厅等待,然后集体去培训,培训结束后会有leader过来接人,还给我分配了一个美女导师,哈哈。我当时所在的业务线框架是React,当时我是不担心的,学习就行了呗。然而,第一天就给我分配需求了。。。这可如何是好。打开项目的代码,看得我一脸懵逼,我只能看懂部分js的代码,然后我还发现怎么能够在js里面去写标签?难道是操作DOM?这是什么高级操作。算了,搞不懂,先学习吧,于是我又把React搞了一遍,看完视频就开始做项目了,说实在的从Angular的思想直接跨越到React还真是有点难度,因为这两个框架的思想基本上天差地别,我转换转了好长时间。不过还好,用了两天的时间看React,然后开始写需求,很快,需求完成了,这给了我大大的满足感。后面拜读了深入React技术栈和React同构实践 前端工程化这三本书,让我对React有了更深的理解。用React小半年的时间,当时我认为React无敌,React称王,什么Angular Vue都是弟弟,事实证明我想多了,直到我尝试了一下Vue。
关于在头条的生活在此就不过多展开了哈,如果你对我的故事感兴趣,欢迎添加我的微信,嘻嘻,我们可以一起进步,一个人可以走得更快,但是一个团队可以走的更远。
那是一次机缘巧合,因为当时我看不上Vue。一天上午,有个同学说他朋友想找一个人帮他做毕业设计,是一个系统,技术栈是vue和nodejs的,问问我能不能帮他搞定。什么?我是React的实践者呀,我不会Vue呀,我也不会Nodejs呀,做什么做。但是,在那位同学的好说歹说下(主要是有钱赚),我答应了他朋友,于是我的Vue和Nodejs生涯开始了。
接触到了Vue,把我带入到了一个新的世界。我靠,这个Vue,我怎么这么熟悉呀,看看双向数据绑定,指令系统,那不是Angular嘛?看看组件化,我靠,那不是React嘛?那我还学什么学呀,我都会呀。但我还是乖乖的把视频看完了,用Vue写了几个Demo后,发现,为何用Vue开发这么爽。。。我爱上了Vue,准备抛弃React,唉,我可真是个善变的家伙。哈哈,逗你的,自从把Angular React Vue都使用过之后,我思考了一下,前端三剑客html css js,那为什么会出现这三个框架,并且开发思想上有区别又有相同点?我觉得,无论是什么框架,他们脱离不开js,甚至好多的命令行工具,各种包,他们本质上来说也是js,使用三大框架进行开发,打包完成之后,还是html css js,因为浏览器他只识别html css js ,甚至你可以把三大框架理解为前端三剑客的封装。为了开发更加迅速,统一,开发了三大框架对其进行封装,为了使浏览器能够解析,又把三大框架的产物打包编译成html css js,人类实在是太聪明了,我们可以在这里看出一点,业务推动技术的进步,而技术又反过来使业务能够落地,二者形成了一个正向循环,太神奇了!
前端迷茫期
自从三大框架用过一遍之后,我再次陷入了迷茫,以前听说过三大框架,然后现在我全用过了并且在企业中有了实践,那么后面我不可能一直在守着某一个框架过日子吧,我后面的路该怎么办?前端想要再往上提升该怎么办?我就一直是一个前端了嘛?难道大家都和我的想法一样吗?我再次陷入了迷茫。
Nodejs拯救了我。后来,在做一些项目的时候,由于我要自己一个人开发后台,而我听说了nodejs可以去写后端的服务,而且发展的很成熟,然后我便开始研究起来了nodejs。说实话,当时的我已经和刚开始学前端的时候完全不一样了,我学会了一种能力,就是遇到问题解决问题,永远不要去等,等下去是没什么用的,你只有做了才有希望,在做的过程中你才会不断的思考。就像我此时此刻在写这篇文章一样,一开始我也想了很多,这样的文章到底应该怎么写,然后我发现光想没用,想干那就干起来呗,反正也不会,那么你就去学习。
学习nodejs的过程中给我开拓了后端开发的视野,我不再有之前停留在三大框架的认知里面,我知道我有很多东西并没有用过,即使我用过了,也并没有真正的掌握,即使掌握了,你确定未来这项技术会一直存在吗?技术是动态发展的,他一定是不断的进步的,就像大家都说前后端分离提高工作效率,单页应用性能好,但是并不利于SEO呀,你没有数据爬虫怎么抓,你的网站搜索排名怎么能够上去。万能的程序员们想到了一个方法,首次进行服务端渲染,带数据过来,后面再进行单页应用的开发,并据此开发了Next Nuxt前后端同构框架,所以说,遇到问题,解决问题,不管是对于个人还是公司亦或是一个国家整个世界,是一个进步的过程。
一些思考
后面的事情,写毕设,写论文,然后我毕业了,进入了一家互联网公司担任前端开发工程师,独立负责开发项目。现在已经毕业了三个月,我重学了nodejs,express,koa,并且看了koa的源码,拜读了《用得上的商学课》、《自控力》、《墨菲定律》、《好好赚钱》、《穷爸爸富爸爸》等非技术类数书籍,《koa与nodejs开发实战》、《你不知道的javascript》等技术类书籍,做了相应的笔记并且学习了nuxt全栈开发美团网等全栈视频等,我发现在这个过程中,我不仅是在学习,全量的输入,而是我有思考的过程在里面,为什么要这么做。我知道我的路还很远,技术作为一个研发来说是根本,是你傍身的一个技能。但是光有技术是不行的,你需要有对你的岗位,整个行业,人类,社会,国家,经济,民生等思考。之后你会发现,这个世界太大了,而你,很渺小,我们来到这个世界上,一定要体现出自己的价值,为人类的发展,为社会,为国家做出我们的贡献。希望大家能够多进行思考,而不要光想,行动起来,在行动中思考,想干什么事,不要总是犹豫,干就完了。陌生人,加油!
我是dog君,一名95后前端小兵,互联网前端开发工程师,坐标北京。希望能够认识大家,如果这篇文章能让你感到共鸣,欢迎添加我的微信,dm120225,我们可以一起来探讨,互相学习,共同进步,期待你的到来。