时间飞逝,又到了写年终总结的时候了。翻回看去年的总结和展望,回想起去年的雄心壮志,今年则是坎坷、困惑与焦虑的一年。
回顾过去
在这整整一年中,我所思考的和困扰的,可以由三个词来概括:成绩、成长和价值。
工作已经两年半,对自己目前取得的成绩,对自己技术成长的预期,对自己为团队创造的价值,实话实说,都不满意。
从今年年初开始,我就有点焦虑,觉得自己没有太多的成长,一直在原地踏步,已经没有刚入职时那种回顾过去会觉得自己突飞猛进的感觉(工作后做的每个比较大的需求,我都会整理保存下来 ppt,回看时就会清楚自己相比起过去进步了多少)。困于瓶颈期时,我尝试更加主动的去做事情。在那段时间,我开始关注些不仅仅是技术上的知识,例如关注了《湾区日报》,做了些读书笔记《水滴石穿》。那段时间有些收获,但当我尝试把我阅读中收获的这些想法,运用到工作中时,却发现有层层阻碍。其中细节就不展开了,这让我非常沮丧。一方面,我理解在大公司工作,最重要是“稳”。有新的方案,新的想法,首要考虑的不是这个新的方案、新的想法的收益,而是运维成本。另一方面,这也让我觉得在大公司工作非常乏味,每个人的贡献都是固定的,尤其是工程师,你的定位就是执行者。公司也已经有很多很成熟的组件,即使不太适应于业务场景,也能勉强用用,你的工作就是做做接入,其它不需要操心。
这种状况让我觉得非常的不适应。在学生时代,每一阶段、每个学期你都会学习到新的知识。而在工作中,更多的时候你是在重复做些体力活,例如,复制粘贴的完成一些需求。又例如,一遍遍的用已经成熟的方案去解决一些问题。而我其实不太喜欢这样的工作方式。我蛮希望自己是一个比较有创造力的工程师,我倾向于用不同的方案去完成类似的需求,通过真正的实践来对比不同的方案的优劣性。但在大公司来说,进度和稳定性是首要目标。只有在发展迅猛的前沿/明星项目中,你才有可能遇到各种新的问题,才有得到锻炼的机会。
互联网不是按照工龄来排资论辈,同样工作三五年,差距可能非常大。有一句话说得好,“Good judgment comes from experience, experience comes from bad judgment.”(正确的判断来自于丰富的经验,而丰富的经验来自错误的判断)。如果工作中没有太多挑战,不能促使你学习进步以应对工作的要求,一味追求保守无法得到犯错踩坑进步的机会,那你就应该停下来思考自己的未来了。我非常不希望把工作当做是一个任务,我希望工作是融于生活的,能带给我挑战和战胜难题的动力,能带给我解决问题后的成就感。如果说做为工程师,工作于己如同体力劳动般每日重复,那和流水线工人又有什么区别呢?
再一个让我不适应的,是大公司的考核机制。并不像在学生时代,你的排名和你考出来的成绩相关,和你上课积不积极听讲,有没经常举手回答问题,一点关系都没有。所以你的成绩很差,抱歉,是你不够努力,你知道是自己的原因,所以你会努力去学习让自己进步。工作则不是如此简单纯粹。由于工作中有挑战的难点并不多,每个人做的事情都差不多,那只好看谁做事比较积极主动(并非吐槽,我也非常理解)。而我不太喜欢“伪加班”,也希望工作完成后能有更多自己的时间去学习充电。因此,工作后自己取得的绩效非常平庸。我意识到再这样下去,职业生涯也许就这样了。做为一个已经不算新人的员工来说,我渴望做出成绩,希望能为团队贡献更多的价值。我觉得自己还有很多的能量,我能做的不仅仅是完成我手上的工作。我也意识需要到达一定的职位,才能去推动些什么,去改变些什么。但以我这平庸的考核,我对自己未来的发展不抱有太多的信心,所以我开始寻求改变。
既然不想再在大公司做了,我开始寻找一些有意思的创业公司。在 v2ex 上逛的时候,小红书 吸引了我的注意。CTO 来自前谷歌中国工程院副院长,团队很多海归名校的背景,非常有吸引力。在经过电面,飞到上海去面试后,我拿到了offer。然而犹豫再三,我还是放弃了。放弃的原因主要是因为我资历尚浅,5月份拿到 offer,那时我才工作了一年多,当时小红书的开发团队已经有几十人,已经算是个大团队了。但不得不说,面试官给我的感觉非常的好,如果是在更早期,团队还是小规模的时候,我一定愿意加入这样的团队。
之后就在公司内部寻找些机会,7月份到了现在的游戏工作室。小团队,后台只有几个人,听起来很有成就感。转岗之前我也有点小担心,担心难以融入,担心过来后也是打打杂,幸好过来后发现多虑了。工作室给我的感觉,很明显,大家共同的目标就是把游戏做好。当然从做社交,到做游戏,一开始还是有些不适应。做社交,本质上是各类存储的设计。游戏则不太一样,复杂的都是在业务逻辑。
下半年的工作,新的环境,新的方向。学习了新的后台框架,对比之前用的框架,自己造了个轮子,写了篇文章《简单异步应用框架的实现》,对后台异步框架的设计有一些了解,不再局限于只会用框架了。浅读了 libuv 和 libco 的源码,同样写了两篇文章《Libuv 源码阅读》 和 《浅读 Libco》,对异步和协程两种模式都有了进一步的认识。之后,在日常查问题的时候,我意识到自己定位问题的能力有所缺失,主要是对 linux 的各种监控系统状态的命令还不熟悉,操作系统和网络的知识也忘掉差不多了,所以决定重新翻读下 《UNIX 环境高级编程》、《现代操作系统》,并结合 《Linux 内核设计与实现》,了解些操作系统的理论和实现,这个系列的文章《Linux 内核系列-进程》 还没写完。
经过这阵子的摸索,我明确了之后的突破点,找到了进步的方向。虽然说,这一年,我有很多困惑、迷茫和焦虑,心情经常非常差,情绪起伏也很大。我明白这些都是成长的必经之路,这么看来,这些起起伏伏,也是蛮值得的。
展望未来
新的一年,工作上认真努力,不必多说。这里来聊聊新的一年,个人方面,我想做些什么。
今年我意识到,对于大多数项目来说,技术并不是最重要的,只要不出问题就好(虽然我热爱技术,但我也不得不承认这点)。那技术人员应该如何发挥更大的价值呢?
我给自己定的目标是:提高核心竞争力和变得更全面。
提升技术能力,这是首要目标。我希望新的一年可以把基础打扎实了,作为后台开发,操作系统和网络知识要打牢。另外了解业界流行的中间件(消息队列、数据库等)的实现,比较深入的选择一个方向(游戏引擎、数据分析、图形学、编程语言等)去研究。
另外在公司工作,技能点很容易变得非常窄。我希望自己可以变得更加全面,不希望把自己局限于后台开发,也不仅局限于技术。新的一年,我希望自己能够做一个上线的 side project 并用心运营。目前看来我应该会选择做一款独立游戏,技术上独立完成前台-接入层-后台的实现,也借此学习下游戏策划的一些思想,让自己更加了解游戏这个行业。
总结心得
今天读了陈皓的《技术人员的发展之路》,写的很好,推荐大家都读一读。这一年,有两句话,我经常对自己说的,一是:不忘初心,二是:Pursue excellence, and success will follow (追求卓越,成功就会如期而至)。
不忘初心,是提醒自己,选择了计算机的道路,是因为我喜欢编程,喜欢创造。不要因为眼前的失意去妥协自己。希望自己工作三年,五年,十年,都能保持学生的心态。stay hungry, stay foolish。
追求卓越,是因为我相信,让自己成为一个优秀的工程师,比拿到好的绩效更加重要。自己要为自己的职业生涯负责,更勇敢的去追求梦想。
大公司工作,可以带给你光环,但自己要想清楚,去掉光环后,自己还剩下些什么。也许我们都是平凡人,但平凡人也希望做出稍微那么不平凡的成绩。2017 年,希望自己不留遗憾!