libfeihu Blog

浅谈工程师成长——关于成长的三个小故事

浅谈工程师成长——关于成长的三个小故事

Stay Hungry, Stay Foolish —— Steve Jobs

成长是一个长久的话题,尤其是我们身处科技爆炸的信息时代。吴军在《浪潮之巅》中说:

科技的发展不是均匀的,而是以浪潮的形式出现。每一个人都应该看清楚浪潮,赶上浪潮,如此,便不枉此生。 —— 吴军

我们也同样处于这样一股浪潮之中,这是最好的时代,过去几十年中的技术变革超过了数百年,我们每天都有可能做着改变世界的事情,一行代码可能影响数以千万的用户。这也是最坏的时代,面对着技术的爆炸式更新,技术以比以往任何一个时候都快的速度被淘汰,每个人都面临着巨大的压力,焦虑时刻伴随着我们。

诞生于移动互联网时代的字节是一家年轻的公司,它有着年轻的产品线,年轻有朝气的员工。虽然一切都很年轻,但其业务正处于短视频这股浪潮之中,机遇与挑战并存。

最近团队有很多新加入的校招/实习生,大部分同学都是客户端零基础,在学校没有任何客户端的开发经验。公司相较于学校的差异很大,如何能够快速适应给新人们带来了很大的压力。

同时还有毕业不久的同学在经过了一段时间的职场历练之后,逐渐适应了工作的节奏,但工作中需求接着需求,很多时候没有提升的时间。似乎一个月掌握的知识就足以应对接下来很多年的工作,未来的成长在哪里?在学校面临就业这单一目标时,可以按部就班向前冲,目标清晰明确。但毕业之后我们面临着无数的选择,失去了帮我们铺好道路的学校,现在的每条道路都需要我们自己选择、面对。如何能够做到既低头脚踏实地,又抬头仰望星空?

本文便想聊一聊有关工程师成长的话题。

目录


成长中的那些故事

刚开始在准备本文时,想讲的特别多,恨不得把过去自己遇到的所有问题,踩过的坑都汇聚一起,一股脑灌输给大家。然而很快就放弃了这一想法,一方面这不现实,如果要写下来篇幅将长到无法想象。另一方面,从小到大我们已经经历了那么多填鸭式的教育,效果怎么样?凭什么认为这次会有好的效果?

本文也不想深入讨论技术,毕竟鱼那么多,如何能穷尽?并且对于已经久经沙场的工程师来说,掌握一门技术本身并不是很困难。

记得很多年前看过乔布斯的一个演讲,那是在斯坦福大学的毕业典礼上,他并没有讲述如何创造伟大的公司,如何做伟大的产品,而是讲了三个小故事,故事中的几句话我记忆犹新。作为一名普通的工程师,我想以同样的方式,借着三个小故事来讨论成长。

主动

我毕业后的第一份工作也是一家互联网公司,从老家南下来到深圳,经历了整晚火车的轰隆声后,乘坐1号线从大冲站出来,被眼前的魔幻的景象所震惊,一边是被拆的破乱不堪的工地(后来才知道那片工地是多年之后价值千金的地段),另一边是高楼林立的现代都市。虽说去过大城市,但第一次看到深圳的大楼时,依然激动的无法言语,不是因为高楼本身,而是那些嵌在大楼上的一个个logo:联想、康佳、中兴、迈瑞、甲骨文。直到现在我还清晰的记得当时天空的白云很低很厚,仿佛触手可及,不像中部地区的天空那样高远。我如同从山洞中钻出的原始人一般,看到电视中的企业真实的展现在眼前,激动的说不出话,心想,这就是我想要来的地方。

那时移动互联网刚刚开始,诺基亚还占据着市场统治地位,四大操作系统像后来色彩斑斓的共享单车一样争夺着市场:Symbian、iOS、Android和Windows Mobile,那时所在的部门就有了一个极具野心的目标,一个叫做UI Engine,支持四个操作系统的跨平台方案,我想那是后面很多年各种跨平台方案的鼻祖了吧。

加入公司后,成天和老司机们私混在一起,熬夜发版、午休时玩dota,因为底子薄,那时可能是成长最快的一段时间。记得入职培训时一个技术大牛介绍调试方法,说日志比debug好用,当时我不明所以,问道,怎么打日志?大牛估计被我突然问的发懵,答:在想打的地方打。可想而知,我依然没听懂。

正是这一年的时间,我从学校完成的职场的初步转换。也正是那时,我从mentor那里听到职业生涯中的第一个影响至今的建议,新人最重要的两个字:主动。

没错,不是什么大秘密,但大道至简,不是么。但在当时年少轻狂的我听来,心想这算哪门子建议,说了等于没说。然而知道和做到却完全不同,直到多年以后,再回过头看走过的路,才发现这竟是工作后最重要的两个字。

作为工程师,我们可以主动去做的事情有很多,以需求开发周期来说,需求评审阶段主动了解需求收益,与产品经理讨论需求如何做更好,了解其背后的逻辑;开发阶段主动去理解三方库、底层原理,主动使用更“好”的架构设计,考虑扩展性,追求代码洁癖;需求完成后主动关注需求上线情况,主动总结沉淀,了解竞品。你看,同样都是做需求,主动做需求与被动接受需求在事情上有多么大的区别。从成长来看,短期可能没有明显差异,但一旦拉到更长时间范围来看,两者的差距会越来越大。这也是为什么毕业生刚开始起点一样,但随后几年成长速度呈现的差异巨大,主动性在这里面几乎起到了决定性的作用。

主动实际上是一种态度,驱动这种态度的是更为内在的东西,比如好奇心、对优雅代码的追求、对成长的渴望等,进一步抽象是真、善、美🐶。

为了追求“好”代码,计算机领域衍生出了很多理论,比如《重构》中的大量重构方法,四人帮提出的23种《设计模式》等(但想要记住这么多工具的确很困难,我印象最深的是“坏味道”,锻炼自己的“嗅觉”,找到代码中的“坏味道”,然后基于对“好”代码的追求去做重构),这些追求驱动着工程师们的主动性,推动个人的成长和科技的发展。

正如乔布斯所说:Stay Hungry, Stay Foolish!

停止抱怨,行动起来

30岁之前你培养习惯,30岁之后习惯成就你 —— 出处未知

我在第一家公司仅待了一年,它曾是一家辉煌的公司,但我们常调侃自己的工作方式很小作坊,因为那时刚好处于移动互联网的最初阶段,整个行业并没有成熟可借鉴的地方,大家都在摸着石头过河。而非科班出身的我总是充满不自信,似乎对规范有着一种很强的执拗。有段时间每天都深夜才能回家,记得有一天打车到楼下之后,深夜街头空无一人,不经意抬头看到月亮,想起之前住一块的同学说一周没见过我,我忽然觉得该换个地方了。于是有了第一次跳槽。

这次选择是从互联网跳到了外企,因为那份执拗,想看看成熟行业的软件开发是什么样。于是每天过起了朝九晚五的生活,由于业务的成熟稳定,一年的代码甚至不如以前一个月,之前也听过微软工程师平均一年的代码量是1000行,可能是真的😂。虽说如此,在这里我有了毕业以来最大的收获,并听到对我影响至今的第二句话。

当时研发部门经理是一位上了年纪的德国人(德国人从外表很难看出年纪),他像往常一样召开了一次部门会议,会议的内容我早已忘记,但他在会上说的一句话让我铭记于心:

Never complaint. Turn complaint to a proposal. Turn proposal to an action.

会后我将它记录在Evernote上,笔记创建的日期显示是2012/5/4。

抱怨是创新的来源,每一个抱怨的背后都是机遇,每一个能将抱怨转化为行动的人更有机会取得成功,大到国家政权,小到产品、工具和SDK。乔布斯因为不满随身听/CD的臃肿与容量而创造了iPod,迅速带领苹果走出泥潭。因为不满功能机而发明了iPhone,开启了智能手机时代,将苹果带到全球市值最高的公司;马云因为不满淘宝交易的安全性所以有了支付宝;张小龙因为不满移动端的社交体验,所以有了微信,让腾讯拿到了移动互联网时代最重要的船票;Thiago de Arruda在提交多次MR被拒后,因为不满Vim的研发效率和兼容,所以有了NeoVim,而这也促使Vim更新速度大幅提升;软件开发者因为效率的低下而创造了无数的工具、SDK。这样的例子不一而足。他们有一个共性,不抱怨,采取行动。

在此之前我经常抱怨需求太多没有时间学习,抱怨在学校没有学过网络、数据库、操作系统,抱怨没有机会进行技术交流等,但抱怨之后没有任何行动,陷入抱怨 -> 不作为 -> 抱怨的恶性循环。也正在是听到这句话之后,我才尝试打破这个循环,开始花大量时间恶补计算机基础,那段时间将计算机领域的经典书籍几乎看了个遍。为了有机会沉淀,也搭建个人博客,开始尝试写高质量的技术文章。

有人会说学那么多东西根本不知道什么时候会用到,但如同乔布斯在演讲中说的collecting the dots一样,你无法提前预料将来,只需求静静收集,在未来的某一刻,过去所学将会派上大用场。对我来说一个深刻的例子便是这篇在支付宝追查闪退的六个日与夜,这个闪退问题用到了汇编、编译、链接、信号、debug工具等等知识,如果没有过去那些看似派不上用场的积累,恐怕耗费的时间不知道要花多久了。

停止抱怨,行动起来。

独立思考

最后一个话题想聊一聊独立思考。

在学校时我们有明确的目标,中学是为了考大学,大学是为了就业,有学校、老师、师兄师姐早已帮我们定好了目标,虽然道路崎岖,但目标明确。什么应该做,什么不应该做很清晰,答案已经被无数人验证过。我们要做的只是努力,按部就班即可。可工作之后一切都变了。

我们从小是在各种习题海洋中成长的,客观题只有唯一答案,机器都可以阅卷。除客观题外,还有所谓的主观题,如思考题、阅读理解,但它们其实并不主观,因为主观意味着一千个读者眼中有一千个哈姆雷特,但我们的世界中,主观题只有一个标准答案。所以我们养成了看到问题时就会去想它的正确答案是什么的习惯,在做题之前就想着它有没有参考答案,做完之后如果没有参考答案我们甚至会觉得无法进行下去。但毕业后才逐渐发现,不管是工作,还是生活,根本没有人给你参考,更没有答案,只有结果,所有的结果只有靠时间才能得到验证,也许是一天,也许是一年,也许是一辈子。在习惯了有标准答案之后,我们的生活和工作仿佛失去了前进的勇气,只能被动接受。

我很喜欢看NBA,记得有段时间每场球结束后,我都会去对应球星的贴吧里面看贴子,其实是想看大家的“答案”,大家如何看待这场比赛,是否有和我意见一致的。对于看书、电影也一样,喜欢读完之后去看影评、书评,看别人是什么想法,似乎别人能够给我答案。工作后逐渐不敢发表自己的看法,大家趋于思想统一,在群体思想面前不敢表达自我,独立思考能力在逐渐丧失。

在2013年的某一天,有个朋友来家里玩,忘记具体是聊到什么话题,我突然意识到自己独立思考能力在逐渐丧失,做事全凭感觉,这对我的工作和生活产生了巨大的影响。于是跑去图书馆开始疯狂寻找有关思考的书,《思考,快与慢》、《清醒思考的艺术》、《思考的技术》、《李天命的思考艺术》、《思考的力量》、《系统思考》、《超越感觉:批判性思考指南》等等,这两个字就像是救命稻草一样被我牢牢抓住,凡是标题中有思考两个字的书都被借了回来。

然而就像思考能力的丧失不是一瞬间造成的一样,重新拾回思考能力也并非一朝一夕可以完成。如《思考,快与慢》中的研究,大脑默认“懒惰”,能靠直觉绝对不会动脑,所以独立思考很反人性,因此思考是一种需要一直践行、长期坚持的习惯。但它会让你面对纷繁的世界时不盲从,让你在面对复杂问题时迅速抓住事物本质,让你回到不再被标准答案所束缚的世界。

技术人的思维很简单,有时候我们常常满足于这种简单,觉得很专注,我们会将偶像定为Facebook创始人扎克伯格、Linux作者Linus Torvalds、Google创始人Larry Page、字节跳动创始人张一鸣,他们都是技术人的典范。但专注并不意味着封闭自我,并不是两耳不闻窗外事,一心只读圣贤书。查理芒格说过:

认识并适应你周围世界的真实本质,不要指望世界会适应你。不断挑战和主动地修正你“最爱的观念”。认清现实,即使你不喜欢现实——尤其是你不喜欢它的时候。

做一个实际的人,不要活在自己的想象世界里,这句话也送给我自己。

写在最后

在一次离职时和一位大老板聊了一会,他讲述了自己过去如何去做职业选择,原话已经记不清,大意如下,供参考。其实和《浪潮之巅》里讲述公司的一样,寻找那股浪潮,选择最有活力的行业,选择好的公司,业务和团队,随着业务一起成长。永远不要单纯的为了职位和钱去做选择。

成长是持续性的,更是跳跃性的,它是在某一刻因为一个人、一件事或一句话在心里播下了一颗种子,接着抑或迅速抑或缓慢的生根发芽。当你回首过去,你会想起,是的,就是那一瞬间你开始有了一个想法,佛家谓之顿悟。我很喜欢的一部电影《盗梦空间》将其具象化了,改变一个人的想法只需要在他头脑中埋下一个种子,让它自己成长,最后它会毁灭整个帝国。如果多年以后,你说我就是在听君一席话之后在心中埋下了那颗成长的种子,那便是此文最大的成功。

世上的鸡汤、成功学已太多。古人云,读万卷书,行万里路。路最终都需要靠自己走,成长是个人的事情。每个人都有自己对成长的理解,以上仅是我的一些浅显认识。所谓知易行难,即使是上面的三件事我也不能完全做到,但成长一直在路上。

最后,以我喜欢的一个slogan结束此文,与大家共勉:Just do it!

(全文完)

feihu

2022.06.27 于 Shenzhen

One More Thing

Stay Hungry Stay Foolish

乔布斯斯坦福大学2005年毕业演讲,缅怀乔帮主

推荐一些书

不能免俗,推荐几本读过的,并对我有着巨大影响的书吧。

技术

  1. 《代码大全》:现实软件开发世界的百科全书
  2. 《深入理解计算机系统》:将它称为技术书籍中的九阳神功毫不为过
  3. 《编码的奥秘》:如果大学老师这样教学,中国的计算机行业会有更多的人才吧

行业&视野

  1. 《浪潮之巅》:了解科技行业最好的书籍,技术人文笔的巅峰
  2. 《黑客与画家》:stackoverflow创始人,他不仅创办了程序员最喜欢的网站,还对互联网有着先知一般的认知

思考

  1. 《高效能人士的7个习惯》:亚里士多德说“卓越不是单一的举动促成的,而是由习惯决定”,而这本书便讲的便是习惯
  2. 《财富自由之路》:李笑来不仅只有币圈和新东方,这本书会刷新你的认知,网上各种有关认知觉醒类书/公众号的鼻祖
  3. 《金字塔原理》:如何让表达更有条理