【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

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

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

评论

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

飞桨全量支持业内AI科学计算工具——DeepXDE!

飞桨PaddlePaddle

人工智能 深度学习 开源

使用 NGINX 在 Kubernetes 中对 TCP 和 UDP 流量进行负载均衡

NGINX开源社区

nginx Kuber udp tpc 企业号 2 月 PK 榜

GhatGPT在信息安全方面的应用

HummerCloud

ChatGPT

风险洞察之事件总线的探索与演进

京东科技开发者

京东云 事件总线 京东技术 数据管道 风险洞察

微服务拆分治理最佳实践

京东科技开发者

数据库 微服务 京东云 京东技术 安全接口

搜索EE场景排序链路升级

京东科技开发者

模型 搜索 EE 企业号 2 月 PK 榜 Explore & Exploit

程序员的终点不一定是技术!

这我可不懂

低代码 项目经理 低代码平台

软件测试 | 霍格沃兹线下班开课啦!

测吧(北京)科技有限公司

测试

AI for Science系列(二):基于AI框架的CFD工具组件!赛桨v1.0 Beta API介绍以及典型案例分享!

飞桨PaddlePaddle

深度学习 paddle API 飞桨

直播预告 | 企业如何轻松完成数据治理?火山引擎DataLeap给你一份实战攻略!

字节跳动数据平台

数据库 大数据 数据治理 数据实践

你什么档次?敢和我用一样的即时通讯平台WorkPlus?

WorkPlus

单元测试利器——手把手教你使用Mockito

京东科技开发者

单元测试 Mockito 京东云 安全测试 京东技术

推荐系统[二]:召回算法超详细讲解[召回模型演化过程、召回模型主流常见算法(DeepMF_TDM_Airbnb Embedding_Item2vec等)、召回路径简介、多路召回融合]

汀丶人工智能

自然语言处理 深度学习 推荐系统 搜索算法 召回算法

Gluten 首次开源技术沙龙成功举办,更多新能力值得期待

Kyligence

开源技术 Gluten

案例介绍:使用A-Ops性能热点火焰图进行性能诊断

openEuler

Linux 操作系统 openEuler 性能测评 A-Ops

AI for Science系列(一) :飞桨加速CFD(计算流体力学)原理与实践

飞桨PaddlePaddle

paddle 算法 飞桨 框架技术

WorkPlus“Meet”,让企业高效协作的视频会议系统

WorkPlus

学术贴 | FPGA 加速图数据库查询执行

KaiwuDB

数据库

MySql基础-笔记10-索引

MySQL 数据库

MASA MAUI Plugin (八)Android相册多选照片(Intent 方式)

MASA技术团队

.net blazor MAUI MASA Blazor

中科协发布2022“科创中国”开源创新榜 OceanBase开源社区入选

OceanBase 数据库

数据库 oceanbase

项目终于用上了低代码,才知道为什么真香了!

引迈信息

项目管理 低代码

软件测试/测试开发 | App测试时常用的adb命令你都掌握了哪些呢?

测试人

android 软件测试 自动化测试 测试开发 adb

本周 2 场直播预告!Intel 高级工程师带你探索开源机密计算社区 CCZoo | 第 65 期

OpenAnolis小助手

云计算 运维 直播 intel 龙蜥大讲堂

乌卡时代的云成本管理:从0到1了解FinOps

SEAL安全

云服务 FinOps 企业号 2 月 PK 榜

10分钟学会使用 Loki 日志聚合系统

北京好雨科技有限公司

Kubernetes 云原生 rainbond 企业号 2 月 PK 榜

AI for Science系列(三):赛桨PaddleScience底层核心框架技术创新详解

飞桨PaddlePaddle

人工智能 paddle 飞桨 框架技术

活动回顾丨研发效能度量线下沙龙圆满举办

Kyligence

数据分析 Kyligence Zen

活动预告 | GAIDC 全球人工智能开发者先锋大会

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

MySql基础-笔记11-临时表、复制表、元数据、序列使用

MySQL 数据库

MySQL审计插件-MariaDB Audit Plugin

GreatSQL

:MySQL 数据库 maria greatsql greatsql社区

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