关于我-刚入门的web前端码农

叫王子龙,生于1989年的盛夏,家在山东省沂水县。2007年,高考发挥不利,只好填报清华大学的定向生,于是来到了航天航空学院。本来想想倒也不差,搞飞机。但是上了一年课明白了:这个学院原本是工程力学系,现在赶时髦改名叫航天航空学院了而已,课依旧是力学类的。甚至没有飞行器设计专业。

学一门跟自己最初想象的大相径庭的专业,是比较让人郁闷。不过本科时代浑浑噩噩,懵懂无知,既不考虑出国,又无需操心就业问题,所以一路混了下来,居然四年没挂科,最后还保研了——可惜,听从了同学的建议,没有保到计算机系,而是依旧留在了航院,跟着一个喜欢做软件的导师读硕。

大二的时候,2009年,选修一门《网页设计基础》的课程。那时候还是讲表格布局,也不追求手写代码,而是用Dreamweaver;另外学些Photoshop,以及gif制作等。最后的大作业是提交一个个人网站,当然,以我当时的水平,完全不懂JavaScript,CSS也不是太会用,只能做出一个静态网站来(当然,采用表格进行布局)。这算是入了门。

研二下学期,买了个iPad4,刚开始当然是用来看电子书。用iBooks,挺爽的。但是图书资源不够丰富,就从网上下载盗版书籍。这时候了解到EPUB这个东西,并且知道国内几家电子书发行商:云中书城,多看阅读,豆瓣阅读,等。比较之后觉得多看阅读器最好用。然而自己从北邮人BT下载来的epub基本都只是文字堆砌,排版非常难看;这个时候既没有买电子书籍的习惯,也没有太多的电子书籍可以买,于是,我决定自己制作epub。研究了几款EPUB制作软件,最喜欢Sigil,用这个软件制作了几份电子书:《中国近代史》徐中约,上下册;《撒哈拉的故事》,三毛;《青春》,韩寒。然后就复习了html/css。这算是第二步。

研二结束后的夏天,没有回家,留在实验室当苦力。当时实验室在做一个网站——嗯,实验室有牛人在啊。自己太弱,帮不上忙,于是干脆买了本《JavaScript权威指南》(第六版),自学。之前学过C/C++,但都不精,JavaScript算是我第一门系统学习的计算机语言了。读完书之后,感觉非常好,对面向对象以及函数式编程都有了更深的理解。这时候我也能在实验室帮上忙了,负责网站几个网页的布局、交互设计。我这时候信心之饱满,以为已经可以出去找份web前端的工作了,于是留意校园招聘,投了三家公司前端工程师的职位:腾讯,百度,小米。三次笔试下来,信心已经减半了——腾讯的题目涉及操作系统、C/C++、TCP/IP、算法、数据结构,前端的知识考得很少;小米出的笔试题目,有不少都是与操作系统、数据库、HTTP相关的,自己对这些不熟悉;也就百度的题目出的比较符合“前端工程师”的范围,于是只拿到了百度的面试邀请。然而第一轮的技术面,自己还是弱爆了,面试官同学想问我算法、HTTP相关的东西,我说不会……然后就没有然后了。到此,算是第三个阶段。

百度面试被拒后,自信心跌至地面。冷静地想想:确实,百度不会要一个只懂html/css/javascript的“伪前端”的。如果要了,那就不是百度了。

我还是很喜欢前端技术。于是决定进入第四个阶段:补充计算机专业知识。方法依旧是自学——很正常也很无奈,就连清华这样的国内一流大学都不专门开设JavaScript课程,计算机系的同学转到web前端开发基本靠自学。这样一个新兴的职业,要指望学校提供课程资源,绝对没戏。Nicholas也是完全自学呢。不过,学校的图书馆还是非常给力的,这方面的新书都能够借到——图书馆对于每一ISBN对应书目一般只有两份,而我基本都能借到,说明学校里搞web前端的确实不多~~

这是2013年的秋末。凛冬将至。

继百度面试之后,我又参加了小米、搜狗的前端工程师笔试。不过貌似都没有通过。还在58同城上投了10份简历,收到4家公司(有大有小)的反馈,参加了其中两家的面试,都以失败告终。这个时候,我投入前端学习已经4个月了。11月下旬,我决定停止投简历,转而继续“深造”。

2014年上半年,经历了脚踝受伤、认真写论文并总算蒙混毕业,等一系列事件,最后还是来南京上班了。定向生,伤不起。

7月份入职,到2015年6月,接近一年。工作的主要内容还是做Web前端的开发,偶尔做点Java Spring框架的维护性开发、服务器压力测试等琐碎事情。虽然与互联网公司相比,氛围、团队水平都差很多,但能做前端开发,算是万幸了。【另:此处省略一万字】。

2015年,自己的职业规划有了个更高的目标:成为全栈工程师。为此,每天下班之后,都要像学生时代那样“上晚自习”了。在前端领域灌水两年来,的确对某牛人总结的一句话颇为认同:

每过18个月,前端技术的复杂度翻一倍。

具体表现大概是这个样子的:刚学会了用Grunt来管理项目的静态资源,Gulp就出现了,而且后者更为优秀;刚把项目用AMD规范重新构建了一遍,他们就说不必用requirejs了,用browserify吧;Backbonejs还没在项目里开始使用呢,Angular就来了;刚把项目用Angular组织起来,Reactjs也来了……如此种种,不胜枚举。

2015年10~12月初,接到了一份“私活儿”,干得不亦乐乎(不过,因为自己的离职手续实在过于恶心,耽误了人家不少进度,也十分愧疚)。同时拿到一个大厂的 offer。在经历了两个月的波折后,终于离职。转战北京。

这一年其实也投了很多次简历,3月份经历了若干次面试,见了形形色色的面试官(都是在南京):有颇有诚意的创业团队(南大学生们的一个虚拟现实技术团队),有很牛逼的团队(响马的新公司,孢子社区,技术实力很不错,自己太菜,面试失败),也有些的确互相瞧不上眼的(哈哈,当然自己也真的是不符合人家的要求),也有大厂(途牛,面试通过也拿到了offer,但是最后还是因为离职失败,没能去成)。是在那些次面试之后,自己决定依靠 Node.js 来学习更多的编程技术的。

世界这么大,我想去看看。

2015年12月10日,正式入职美团,所在部门是猫眼电影。节奏一下子变得快很多,时间也总是不知不觉就过去了。三个月的试用期,记录了一点点东西。这的确是比较兴奋的三个月,学东西飞快——因为啥都不会嘛。然而再继续下去,开发压力变大,虽然业务上面熟悉了很多东西,但学技术的速度还是明显下降了,或者说趋于常态了?3月份参加了晋级答辩,很菜很菜地落选了。工作中也暴露了自己各方面的问题:脾气急躁,不会进行压力调节,责备同事,等等不好的习惯。优秀的工程师不光是技术上的,更是为人方面的。

2016年9月参与了猫眼的工程师职级评定答辩,表现也差强人意。不过评委们可能还是参考了平时的表现、积累,给通过了,于是晋级P2-2(P5)成功。在此感谢大家。到2017年5月份,在猫眼已经工作了16个月,这些时间也一直在做B端产品。使用 React 进行组件化开发,使用 webpack 进行前端工程化管理,也有一些心得了。

【下次更新,预计是 2018-03 ……】

Share