HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

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

  • 2022-06-28
  • 本文字数:5473 字

    阅读完需:约 18 分钟

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

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!


(全文完)

One More Thing

Stay Hungry Stay Foolish

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

推荐一些书

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


技术


  1. 《代码大全》:现实软件开发世界的百科全书

  2. 《深入理解计算机系统》:将它称为技术书籍中的九阳神功毫不为过

  3. 《编码的奥秘》:如果大学老师这样教学,中国的计算机行业会有更多的人才吧


行业 &视野


  1. 《浪潮之巅》:了解科技行业最好的书籍,技术人文笔的巅峰

  2. 《黑客与画家》:stackoverflow 创始人,他不仅创办了程序员最喜欢的网站,还对互联网有着先知一般的认知


思考


  1. 《高效能人士的 7 个习惯》:亚里士多德说“卓越不是单一的举动促成的,而是由习惯决定”,而这本书便讲的便是习惯

  2. 《财富自由之路》:李笑来不仅只有币圈和新东方,这本书会刷新你的认知,网上各种有关认知觉醒类书/公众号的鼻祖

  3. 《金字塔原理》:如何让表达更有条理


原文链接:https://feihu.me/blog/2022/engineer-growth/

2022-06-28 15:176487

评论

发布
暂无评论
发现更多内容

消息队列并不能解耦

Xargin

Nginx利用resolver实现动态upstream

运维研习社

nginx 运维 5月日更 动态负载均衡

女裤裤兜如何影响工业设计?

脑极体

交叉验证

Qien Z.

5月日更 交叉验证

爆赞!GitHub上首本IntelliJ IDEA操作手册,标星果然百万名不虚传

Java 编程 程序员 架构师 IntelliJ IDEA

21分钟 MySQL 入门教程

???

MySQL 编程

21岁就走了“狗屎运”(4面拿字节跳动offer Java岗)

Java架构师迁哥

ubuntu64 位搭建 OpenVINO 系统(下篇)

IT蜗壳-Tango

5月日更

架构训练营模块 5 作业

Geek_649372

架构实战营

HashMap源码分析(一)

泽睿

源码分析 hashmap

原来真的有外卖员转行学Java,还三面“拿下”拼多多offer!

Java架构师迁哥

随机数在区块链中的应用

CECBC

这是我在银四拿到的第6个offer!分享我的成功秘籍:阿里巴巴 Java 面试参考指南(2021 最新版)

Java 程序员 架构 面试

限时分享:Alibaba技术官整理出来的Java零基础学习笔记

Java架构师迁哥

架构师实战营模块五

ifc177

SM和PO如何参与Daily Scrum——《Scrum指南》重读有感(3)

Bruce Talk

Scrum 敏捷 随笔 Agile

有点东西,GC与内存泄漏之间的联系分不清,居然也可以进微软?

Java架构师迁哥

小王毕业两年转行学Java,现在过得比科班生过得还好?

Java架构师迁哥

Spark如何进行动态资源分配

数据社

spark 5月日更

通过混沌测试发现 HTTP/2 缺陷

卫智雄

🔎【Java源码探索】深入浅出的分析 ThreadPoolExecutor

洛神灬殇

Java 线程池工作原理 ThreadPoolExecutor 5月日更 Worker

【Flutter 专题】119 图解简易 ACEFrameAnimated 帧动画

阿策小和尚

5月日更 Flutter 小菜 0 基础学习 Flutter Android 小菜鸟

Redis集群JedisCluster的pipeline自定义实现

叫我阿柒啊

redis cluster pipeline JedisCluster lettuce redission

LogBack 日志等级设置无效,原因竟然是因为这个

楼下小黑哥

spring springboot logback

已经成功拿到字节offer,阿里内部二十三万字 Java 面试题总结

Java 程序员 架构 面试

Redis - 持久化

旺仔大菜包

redis

基于ECS搭建FTP服务

若尘

阿里云 服务器 5月日更

Java也太卷了,应届生找工作都需要准备这些知识点了!

Java架构师迁哥

人生算法:复利,营造长期的局部垄断

石云升

读书笔记 思维模型 5月日更 人生算法

阿里内部面试手册,Github 上获赞 80K,无论工作几年都可以看看

Java 编程 架构 面试

华为内部论坛爆火的一份:Java面试培训笔记,秒变资深面试官

Java架构师迁哥

浅谈工程师成长——关于成长的三个小故事_语言 & 开发_比伦_InfoQ精选文章