这篇文章写于去年年底,为了参加公司内部的一个征稿活动。原本只是想在博客中做一个备份,并未想过发表,但是今年互联网形式依旧严峻,再次爆发几次大规模裁员潮。时隔一年,我决定把这篇文章分享出来帮助那些对前途感到迷茫的朋友。

夜已深,提交完最后一个 commit,终于可以安心睡下。

在猎头的眼里,我不是根正苗红的程序员。何为根正苗红?计算机专业毕业,从毕业起就从事特定方向的开发工作,这才是猎头眼中的香饽饽。


我是设计出身,如果不说出来,几乎没有人知道我这段黑历史。我是一气之下逃离了设计行业,之后在徘徊和犹豫中选择了前端。毕业之后做三维设计的那段岁月,可以用悲惨形容,每当和人提起,我总会有点自嘲的说“睡过凌晨一点的办公室,吃过凌晨三点的便利店,做过凌晨五点的首班车”。但是回头想想,我却要感谢那不堪的经历,让我找到了适合自己的方向。

作为技术人员,我一直有个疑问,什么是你引以为傲的资本?面对已经来临的资本寒冬,应该何去何从?

大学期间,我每年都会给自己总结一个词语。回首做技术的这几年,我同样给自己总结了几个关键词。希望大家可以从中受益。

选择


在现在这个浮躁而又拜金的社会,我相信很多人做技术并非出于热爱,只是被互联网的高薪吸引,毕竟技术岗位非常枯燥,不仅要面对奇奇怪怪的需求,还要不停的充实自己避免被淘汰。所以想要吃好技术这碗饭并不容易。


虽然我在大学选择了设计,但我不是一个感性的人,注定无法突破设计工作的瓶颈,所以从刚开始工作,我就对自己的职业发展感到迷茫。在做三维设计的过程中,我喜欢上了参数化设计,渐渐的找到了自信,最终促使我转战技术岗位,也算是从小学习理科的归宿。我一直在思考,我喜欢什么,我适合什么,我应该从事什么岗位。我的前同事东哥和我境遇相似,只是他比我毕业早了差不多十年,毕业之后读了在职硕士,有近三年没有休过周末,这一点我很佩服。


选择的重要性不言而喻,如果方向错了,再努力也是徒劳。回首走过的这几年,我自认为我在关键的节点做出了还算正确的选择。我身边有很多对职业发展迷茫的朋友,并不是每个人都有那么好的运气和毅力,很多人依然是在抱怨中继续做着不喜欢的工作。

在我后来做面试官的时候,我接触过很多开发者。有自学转行,也有培训之后转行,但是大多都是盲目选择,并不知道自己真正适合什么,所以工作几年,依然没有太多的亮点。

自律


自律对技术人员的成长很重要。每个技术人员都要知道在什么时间该做什么事情,该看书的时候看书,该放手的时候放手。正如前文提到的,当你选择了技术行业,那么毫无疑问你必须约束自己,我们的时间是有限的,所以不可能有太多的时间去打王者,或者去刷抖音。


前段时间,我的一个发小向我吐露心事,毕业两年,依然浑浑噩噩,看不到未来,打算学习技术。我告诉他,先把基础书籍刷一遍,如果能坚持看下去,那么找一份技术相关的岗位并不难,如果看不进去,那还是算了吧,即使侥幸找到工作,天花板也是有限的。最近,我的这位发小告诉我他已经放弃了。

我一直觉得自己在大学并没学多少东西,只是学会了忍耐,磨练了意志力。在无聊烦躁的时候可以看看书。

在学生时代,我强迫自己每个假期读两本名著以及坚持绘画。现在,我强迫自己每月写一篇文章或者翻译一篇文章。

坚持


任何行业都必须坚持才会有所收获,比如我们常常谈论的三万小时定律。然而技术人员应该坚持什么?这取决于你的兴趣。坚持写博客,坚持读技术书籍,坚持做开源项目,坚持答疑解惑等等,可以坚持的东西很多,我们不知道结果如何,但过程本身就足以令人兴奋。坚持的前提是自律,如果无法约束自己,坚持也无从谈起。


刚做技术的时候,我也很迷茫,只是针对性的看一些教程,弥补自己的弱点。那时候我还不知道作为技术人员引以为傲的资本是什么,如果只是按部就班的做业务,难免让人感觉无聊。大学时,我也曾为梦想坚持过,可惜一切都成为泡影,于是我明白了梦想和现实的差别。


从我踏足技术岗之后,我开始写博客,主要记录遇到的问题。我喜欢翻译,中途加入了伯乐在线的翻译组,这段经历收获很大。不得不说,作为技术人员,如果英语不好,技术积累将非常困难。我喜欢阅读并翻译
csstricks,scotchio
上的文章。至于为什么喜欢翻译,有两方面原因吧:一方面,翻译文章有利于提升自己的英语水平;另一方面,国外的技术文章质量很高,翻译的同时可以学到很多新技术,国内很多优秀的博文也是基于国外文章翻译而来。在积累的过程中,文章逐渐得到大家的认可,尝到了一些甜头,这也成为我前进的最大动力。


现在,我坚持做开源项目,从无所下手到给开源社区做贡献需要不屑的努力和思考。作为前端工程师,选择的方向有很多,可以从优化体验入手,不经意之间可能就会诞生不错的项目。现在,看到自己的小项目得到大家的认可和喜爱,内心多了一份责任感。

忘我


我不知道究竟什么状态才算忘我,或许我也没有经历过。忘我不是不吃不喝,而是对工作的热爱,比如问题不解决就辗转难眠。程序员被认为是远离灯红酒绿的工作狂,大多数时候都与孤独为伴,从前年开始,我变得特别宅,几乎放弃了社交和娱乐活动。


之前做开源项目的时候曾有过一段时间的疯狂。因业务繁重,每晚差不多十点到家,为了能更快的完成项目的第一版,回家之后还要继续工作,凌晨一两点睡觉成为常态,那段时间真的是有点麻木,筋疲力尽。其实做设计的时候也很疯狂,那也是被逼无奈,但是最终并没有换回自己应得的一切。

很多时候我不知道这样做会换回什么,可能依然是一无所有,但是有所坚持总比无所事事要好一些。正如罗曼·罗兰说过的,“生活最大的烦恼不是工作,而是无聊”。

冷静

如果问一个面试官最看重应聘者的哪一方面,我想一定是解决问题的能力。

解决问题需要一种心境,沉着冷静是解决问题的前提。我发现很多人在遇到问题时,立刻就在 QQ
群或者论坛提问,其实都是一些比较基础的问题,这不是一个好习惯。技术人员必须学会独立思考,毕竟大多数情况下只有自己可以拯救自己。不管遇到多难的问题,首先要冷静,然后慢慢分析问题的原因。说一些我常用的解决问题的方法。

一、睡前思考。
躺在床上闭上双眼,回顾一遍遇到的问题,非常管用。记得上初中那会儿,我喜欢在睡觉之前或者上学的路上解几何题,有趣的是,往往都能得到答案。刚工作时,我还有个怪癖,喜欢在解决问题之后大吼一声甚至手舞足蹈,想要释放一种压力。所以每次遇到问题,我总是告诉自己,明天这个时候我就会大吼一声,真是有点好笑。
二、学会放松。
说一件自豪的事情,大学期间,我几乎玩遍了塞班手游,总结出很多道理,其中之一是,任何难闯的关卡在休息一晚之后都可以轻松完成,技术问题往往也是如此。

以上说的都是比较虚的方法,实际点的比如浏览 stack overflow,翻一翻 GitHub issues。


关于这一话题的故事有很多。千禧年之际,谷歌的核心系统(抓取网页然后构建“索引”)停止运转,一切都变得非常糟糕,几乎威胁到整个公司的命运。多名工程师奋战四天四夜依然无果。他们检查了所有代码的逻辑也没有发现
bug。第五天,Jeff 和 Sanjay
开始怀疑问题可能不在于逻辑,而存在于物理层面。最终,他们将索引文件转换成了二进制代码,用最原始的方式确认是机器的存储芯片被破坏了。Jeff 和 Sanjay
是谷歌唯二的高级技术专家。

追求

作为技术人员必须有所追求,比如代码洁癖。林纳斯对不规范的代码总是直言不讳,“你的代码是一坨狗屎”。不知道从什么时候开始,我也有了一点强迫症,DOM
层级,CSS 属性顺序,变量命名,末尾分号,空行等等,差一点就感觉不舒服。


除此之外,不要把工作局限在需求之内,在前东家的时候,技术经理一直强调做点工作之外的事情,申请一些专利,虽然有些面子工程的意思,不过我赞成这种观点。作为前端工程师肯定不能只是写页面,而后端工程师也不应该只是做
CRUD 的工作。


很多人不知道应该追求什么,正如前文提到的,这要看你自己的定位与兴趣,毕竟作为程序员,爱好应该非常广泛。如果你把工作作为兴趣,我觉得也无可厚非,把工作做到极致也是一种追求。

后记

如果现在回答文章开头的问题,我想只要认真做一件事情并坚持下去,或许就会成为引以为傲的资本,即使资本市场再寒冷,我们依然可以从容应对。


曹丕的《典论·论文》有句非常经典的论述:“盖文章经国之大业,不朽之盛事。年寿有时而尽,荣乐止乎其身。二者必至之常期,未若文章之无穷”。这是我记得很熟的一段话,主要是讲文章的功能性,文章是超越生死的载体,通过文章,作者可以声名远播,流芳百世。同样地,技术人员的著述以及开源项目就是实现自我价值最好的体现。