一个 32 岁「老」码农的复盘:初出茅庐
欧雷 发表于
相信你看到标题时已经想到这是述说自己职业经历并加以总结的文章——没错,正如你所想的那样!
这是个文章系列,内容涵盖工作经历、工作风格、职业愿景等部分。
写这个系列的目的,主要有三:尽可能完整地复盘下迄今为止的职业经历,看看自己都取得了什么成果,还有哪些不足需要改进;供同行做个参考对比,希望我身上不好的地方能够避免,好的地方可以学习;想让有可能跟我合作的人对我有所了解,好评判是否是一个可以合作的对象,节省一些打听试探的时间,提高效率。
在之前也写过职业或人生复盘类的文章,如 2016 年的《一个前端的职业轨迹》和 2018 年的《上半生,息止安所。》。它们的内容与本文互为补充,都看过之后会对我的经历与想法了解得更加全面些。
先说一部分结论——每个人的经历也许会相似,但绝不会相同,无论成败都是自己的,「成功」是可以跟他人分享的,但「失败」只能自己含泪吞下;一个人的能力大小,与「时间」没有必然关系,比如「年龄」、「工作经验」,真正的影响因素是经历的「事情」以及相关的「思考」,其实就是「知识」与「智慧」;「老」是外界根据年龄对我的刻板印象,我觉得自己还很「年轻」。
看了下简历,来杭州之后目前为止已经服务过 5 家公司,算上来杭之前的话就是 6 家,一直做前端开发相关工作。虽然每段经历中都可能会有不如意的地方,但我还是对它们心存感激,因为多少都让我有所成长,成为了「我」的一部分。
根据这几段工作经历在我职业生涯中所起到的作用,将其等分为三个阶段,本文是其中的第一阶段。
无名作坊
由于之前写的文章中介绍过在这家公司的大体经历,所以我直接引用过来——
通过表哥的介绍,我去了他同学所在的公司工作。这是一份真真正正与前端开发有关的工作,正式开始了我的职业生涯。
要做前端开发,HTML、CSS 和 JS 是必会的三个技能。虽说不是炉火纯青,但在之前自己折腾博客时已经给 HTML 与 CSS 加了很多技能点,可 JS 我是一点儿都不会。为了能够顺利通过面试,前几天到书店买了两本 JS 相关的书恶补:一本 JS 基础的,一本 jQuery 的。
面试时我很是紧张,回答问题磕磕巴巴吞吞吐吐的,都急得出了一身汗……本来已经不抱期望了,可没想到竟然过了!应该是因为我是被介绍来的,并且那里是间小作坊。
当时这家公司在做的是一个自助建站平台。可能是看我没有什么复杂 web 应用的开发经验,刚去时是让我做测试相关工作。做了没一个月,实在是无法继续忍受做这种没有一点兴趣的事情,于是找老板商量让我做本职工作。
虽然我如愿开始做前端开发相关的工作了,但还是没分一些复杂点的功能给我,都是些没啥挑战性的边边角角。
在那里工作还没到一年时,我辞职了。原因无外乎那么两个:钱给不到位;成长空间小。
说起来,至今为止我有三段工作经历与「可视化搭建」多多少少沾了边,这家算是第一家。因为当时我是个刚入行的小白,对这类系统的价值和意义完全不懂……
记得这家公司真正的老板应该是个朝鲜族人,在日本有一家公司,而我上面所说的「老板」实际是我在的公司的负责人;我所在的公司主要业务就是给那家在日本的公司做东西,有时也会接点别的活。
人员构成除了「老板」之外,有日语翻译、财务、美工、后端开发、测试各一名,算上我前端开发共三名。「老板」也是写后端代码,所以总共两名后端开发。前端用 jQuery,后端用 .NET。
这里的开发方式有点奇特,记得好像是没有用代码版本管理工具,而是通过远程桌面还是什么登陆到 Windows Server 上,具体记不太清了。
由于不分派给我复杂点、有挑战些的功能,完成后总是还有些剩余时间,我就利用那些时间去网上继续学习 HTML、CSS 和 JS,然后拿自己的博客练手。
当时网络上的资源丰富程度与现在完全没法比,记忆中就是去脚本之家、 蓝色理想、CSS森林和张鑫旭的博客等地方;再不就是在 CSS、JS 的 QQ 群里潜水,默默地看各路大神「华山论剑」。那时候连知乎都没有(或许是我不知道?我好像是 2011 年左右注册的),更别说思否(SegmentFault)和掘金了。
在这家公司里,大家之间基本没有技术交流,并且实在是没啥历练,干了几个月我就跑路了……听说那里在我走之后没多久就倒闭了……不算「老板」,另外三个开发人员,一个去了北京,一个去了无锡,另一个转行了。
回过头来看,这家公司对我来说的意义,一是让刚经历糟糕境遇的我得到慰藉,二是使我初步了解了真正从事软件开发的人的状态是什么样和如何协作。
安恒信息
2011 年的愚人节,我入职了一家安全领域的杭州公司,它的业务范围包括 web 安全、应用安全、数据库安全等,客户群体是电信行业、政府机关等。了解的人可能会知道,2008 年北京奥运会、2016 年杭州 G20 峰会等重大活动中都有它的身影——安恒信息。
这家公司的工作时间是早 8 点半到晚 5 点半,与在老家那个小作坊工作时每天 6 点左右就要起来相比好多了。巧的是,我刚体验没几天 5 点半下班,就开始每天晚上 9、10 点钟下班了,因为接了一个中国移动的项目。
当时所在的项目组就我一个前端,是拿他们之前做过的一个项目让我熟悉,并参考着做新的那个项目;一些功能都是跟我搭配的后端开发进行讲解的,说起来他也应该算我上司。这个项目除了我们两个,还有一个测试。
我们做的项目是一个 B/S 架构的 web 漏洞扫描应用,叫「明鉴®WEB应用弱点扫描器」,提供了 web 漏洞、网页木马及网页篡改等弱点扫描模块,使用户能够全方位地实时检测网站的安全情况。扫描结果中会展示出弱点名称、等级、分类等信息,还有详细的修复建议帮助用户避免再次出现相同漏洞。网站地址可以选择所属行业及分类等,用户可以更加快速地管理及查找网站地址。
在这个项目中,前端用 jQuery,后端是 Java,更底层的是另外一个组用 C++ 开发的漏洞扫描引擎。原来已经有 C/S 架构的版本,我们做的是 web 版的。具体长啥样,以及交互是怎样的,可以对照着那些安全卫士、杀毒软件进行脑补。
这里的代码版本管理用的是 SVN,要提交代码好像还得跟管理员申请权限,与 Git 相比真是难用得一批……之后工作的公司里用的都是 Git,也许对代码版本管理工具的选择是跟公司所处行业有关?
经过一个月左右的加班奋战,终于熬过去了……在那之前一直不知道做这行会如此加班,给我上了深刻的一课。在那期间,精神一直紧绷着,生怕不能按时交付,心理压力很大;还好结果还不错,之后过了一段 5 点半正常下班的日子。虽然每天加班到很晚,但双休还是保证了,对比现在杭州的大环境,也算还好了。
从入职起的半年左右时间里,都是在做那个 web 应用弱点扫描器,只不过前一个月左右是为了中国移动那个项目而做,算是定制的;后来以那个版本为基础改造成了比较通用的版本,并强化了一些功能,变得更稳定。
2011 年年末,为了防范快速发展的互联网所带来的新的安全威胁,公司决定开发新的产品——明鉴®网站安全监测平台。
这是一套软、硬件一体化监测平台,是「明鉴®WEB应用弱点扫描器」的升级版。采用远程监测技术对 web 应用提供 7 × 24 小时实时安全监测服务。具有 web 漏洞、网页木马、网页篡改、网站可用性及网页关键字等监测模块。用户通过 web 页面进行新建、修改任务等操作,将数据传到服务端之后,再将指令下发到底层引擎,从而进行对指定网站的周期性检测。
由于这个项目是从零开始,并且缺少交互设计师,产品的原型设计就落到了我的肩上,让我体验了一次开发之外的角色,使我对生产流程中各个环节有了更深的了解。后来项目组又来了两个 Java 开发,而前端依然是我一个……
记得大概是 2012 年年末,公司又接了中国移动的项目,我们也又开始了持续一个月左右的加班到晚上 9、10 点的日子。因为已经有过这种经历,心态上相对来说好了些,毕竟人的适应能力是很强的。
然而,在验收时中国移动的对接人总反复——说有的功能做得不对,按照他们说的改了之后还说不对,反反复复不知改了多少遍,感觉就像是在故意找茬儿一样。本来每天加班赶工心理压力就大,再加上客户像是在玩儿我们一样,心态有些崩了。可能是工作太过劳累及心情问题,那段时间胸部有点痛,就跟项目组的负责人开玩笑似地说:「我这算工伤吗?」
在这家公司虽然比上家做了很多事情,但也没啥具有挑战性的;再加上公司的性质,长时间集中式高强度地加班与那种难搞的客户,我顶不住了;另外,虽说算上别的项目组的前端总共有 5 人左右,但除了在群里偶尔说说话,也没啥交流,基本没有分享和培训。最终,在 2013 年工作快两年的时候,我撤了。
在这里工作期间,唯一稍微有那么一丢丢挑战的,就是查看监测数据报表时如何传参的问题,这还属于我自己给自己找事儿干——
在工作的开发过程中有个查看报表的需求——从某个页面点击按钮打开报表页面(该页面为新建窗口)。进入报表页面的入口不是固定的页面,也不是固定的按钮,因此不同种类的报表传递的参数不同,并且各组参数之间没什么共同性。原本的实现方式是通过 URL 的 queryString 将参数传递到报表页面,正如前面所说,不同种类的报表传递的参数不同,于是报表页面就会出现以下一些问题:
- URL 过长,看起来很不美观;
- 需要对 queryString 进行解析与判断来判别是什么类型的报表;
- 如果未来多加一些类型的报表的话,判断也会随之增多,这样不仅代码量增加,维护起来也有点困难,还影响性能;
- 安全性欠佳,通过 queryString 找到规律的话,通过浏览器地址栏随便地输入一个符合规律的 URL 就能获得想要看的数据。
鉴于以上几点,我利用父子页面能够互相访问对方
window
对象的特性,想了一个「页面间隐式传递参数」的方式。
安恒带给我的成长是:让我体会到了什么叫做「工作压力」,锻炼了应对高强度加班时的心理素质;增加了除了测试、开发之外的工种体验;使我 jQuery 用得很熟练了。
说实在的,回过头来看这家公司福利方面还是可以的:五险一金、法定年假、每年体检、年节礼品、周年旅游、部门活动、双休保障等。
参加的第一次年会上,被评为「优秀新人员工」,得到一个奖杯(实际是一个好像是铜做的圆盘)和一块 Swatch 手表,所在团队获得项目奖。总裁 Frank 在讲话时还很激动地说:「我们要有自己的写字楼!」过了几年,真的实现了!
可能是由于总裁是美国海归,公司里的每个人入职都要取个英文名字,有时同事之间就是用英文名来称呼。我的当然是跟在 Twitter、GitHub 等外国网站上一样,叫「Ourai」。
我现在才突然意识到,职业生涯中的前两家公司可以说都完全是项目交付型(不等于外包)的!这种类型的公司最大的特点就是,deadline 基本是死的,不能延后的。做项目时无论如何都要尽全力严防死守,得在 deadline 之前顺利交付完成。
由于这种公司是靠不断接项目来养活的,所以如果没啥项目接的话,员工是轻松了,但公司就要挂了;若是项目接到手软,公司就活得滋润了,可员工就要忙得不可开交,基本天天加班,鸭梨山大。
忽然想到曾经谁问过我一个问题:「你是愿意做项目?还是愿意做产品?」——哦~原来如此。
总结
这个阶段,是我开始了解「前端工程师」是什么以及行业状态的阶段。由于公司业务单调,或者没被分配复杂需求的原因,让我觉得这两家公司所做的事情都没啥挑战,并且同事之间没什么技术交流,让自己成长受限。
非工作的业余时间主要用来做三件事:在网上找技术学习资料,看看知乎上的技术问题,利用自己的博客来练练手;去日语学校跟外教学习,有时课程安排在工作日,就得下班直接赶过去;看看动漫,玩玩游戏。
这段期间还参加了一些线下活动,有第六届、第七届 D2 论坛,还有中国国际动漫节与同人展会。