写点什么

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

  • 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:176602

评论

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

频面试题合集

helloworld1024fd

JavaScript 前端

预约报名!阿里云EDA上云解决方案直播开启

阿里云弹性计算

EDA

详解KubeEdge边缘网络项目EdgeMesh

华为云开发者联盟

云计算 云原生 后端 边缘计算 企业号九月金秋榜

Elasticsearch聚合学习之一:基本操作

程序员欣宸

Elastic Search 9月月更

基于阿里云GPU云服务器的AIACC助力UC搜索业务性能提效380%,每年节省数千万成本

阿里云弹性计算

神龙 加速引擎 TensorRT QTC

库调多了,都忘了最基础的概念《Mysql相关知识》

知识浅谈

MySQL 9月月更

「趣学前端」桂花留晚色,聊聊zlib压缩

叶一一

node.js 前端 9月月更

Qt实现文本编辑器(二)

中国好公民st

c++ qt 9月月更

「趣学前端」“寓教于乐”的Node.js学习记录

叶一一

node.js 前端 9月月更

Java常见名词解释

源字节1号

软件开发 后端开发

关于 DynamoDB

Joseph295

「趣学前端」图片操作之“多媒体顶流”不羁的一生

叶一一

node.js 前端 9月月更

数据治理(十五):Ranger 管理 Hive 安全

Lansonli

数据治理 9月月更

SpringCloud Feign 远程调用(史上最详细讲解)

SpringCloud Fegin 9月月更

vivo 全球商城:电商平台通用取货码设计

vivo互联网技术

Java 系统设计 服务器

nft平台搭建:nft商城开发nft平台开发

开源直播系统源码

NFT 数字藏品 数字藏品开发 数字藏品系统

手部骨骼跟踪能力,打造控制虚拟世界的手势密码

HarmonyOS SDK

美团前端二面高频面试题合集

loveX001

JavaScript 前端

打通JAVA与内核!一个ReentrantLock锁的实现原理

Java快了!

java;

文盘Rust -- 如何把配置文件打包到二进制文件里

京东科技开发者

rust 后端 文件 配置文件 spring-boot

分布式事务解决思想以及实现方案

想要飞的猪

3PC 2PC注意事项 TCC 本地消息表

近期对前端性能优化的总结

南城FE

性能优化 前端 性能 性能提升

还能把浏览器当作 Web 服务器?骚操作,学废了~

掘金安东尼

前端 9月月更

专业低代码如何选型?看这12项关键能力

牛刀专业低代码

低代码 低代码开发 低代码平台

架构实战营模块七作业

zhihai.tu

OpenHarmony源码的编译构建

坚果

OpenHarmony 9月月更

社招前端二面面试题

夏天的味道123

JavaScript 前端

MySQL架构与历史

阿柠xn

MySQL innodb 事务 sql 9月月更

Python基础(三) | Python的组合数据类型

timerring

Python. 9月月更

腾讯前端二面面试题(附答案)

beifeng1996

JavaScript 前端

社招前端必会面试题

bb_xiaxia1998

JavaScript 前端

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