21 Lessons From 14 Years at Google(中文译文)

少于 1 分钟阅读时长

发布时间:

原文链接:https://addyosmani.com/blog/21-lessons/

引言

大约 14 年前加入谷歌时,我以为这份工作就是写出好代码。我只说对了一半。待得越久越发现,真正混得好的工程师不一定是最会写代码的,而是那些懂得处理代码以外一切的人:人、政治、对齐、模糊地带。

这些心得是我希望更早知道的。有些能帮我省掉好几个月的挫败;有些花了多年才搞明白。它们都和具体技术无关——技术变化太快了。这些是一个又一个项目、一个又一个团队里不断出现的模式。

我分享出来,因为曾经有工程师也这样帮助过我,我受益匪浅。这算是我尽力向前传递的方式。

1. 最好的工程师痴迷于解决用户问题。

迷恋某个技术然后找地方套用很有诱惑力。我干过,大家都干过。但创造最大价值的工程师是反向工作的:他们沉迷于深入理解用户问题,让解决方案从理解中自然浮现。

所谓用户痴迷,就是泡在支持工单里、跟用户聊天、看用户受苦、不断追问“为什么”直到触底。真正理解问题的工程师常常发现,优雅的解法比大家想象得更简单。

而从解决方案起步的工程师,则往往会为寻找合理性而堆复杂度。

2. 做对很便宜,一起做对才是真功夫。

你可以在每次技术争论中获胜,却输掉整个项目。我见过聪明人总是房间里最聪明的人,积累下无声怨气。代价后来以“莫名的执行问题”“诡异的阻力”出现。

关键能力不是自己对,而是带着对齐问题的心态进入讨论,给别人腾出空间,并对自己的笃定保持怀疑。

保持强烈但易收的观点——不是因为你缺少信念,而是因为在不确定下做的决定不该和身份绑定。

3. 偏向行动,先上船。坏稿能改,空白改不了。

追求完美会让人僵住。我见过工程师为了从未做过的东西,争论理想架构争了好几周。完美方案很少靠想出来,而是撞击现实后才浮现。AI 在很多地方能帮忙。

先做出来,再做好,再做得更好。把丑陋的原型摆到用户面前;写下凌乱的设计文档初稿;上线让你有点害羞的 MVP。来自一周真实反馈的收获,胜过一个月的理论争论。

动能带来清晰,分析瘫痪什么也带不来。

4. 清晰就是资深,聪明反成负担。

写巧妙代码的冲动几乎是工程师的本能,它看起来能证明能力。

但软件工程是真实发生在时间和其他程序员加入之后的事情。在那环境里,清晰不是风格偏好,而是降低运维风险。

你的代码是给陌生人看的策略备忘录,他们可能在凌晨 2 点的事故里维护它。优化的对象是他们的理解,而不是你的优雅。我敬佩的资深工程师,总是选择用清晰换掉聪明。

5. 新颖是一笔债,利息是故障、招聘和认知负担。

把你的技术选型当作只有几个“创新令牌”的组织。每用一次非标准方案就花掉一枚。你用不起太多。

结论不是“别创新”,而是“只在你被付钱去创新的地方创新”。其他一切默认平庸,因为平庸的失败模式是已知的。

所谓“最佳工具”往往其实是“跨很多活儿最不差的工具”——因为真正的税来自运营一座动物园。

6. 代码不会为你说话,人会。

职业早期我以为好工作会自己开口。我错了。代码默默躺在仓库里。你的经理会不会在会议上提你;同伴会不会把项目推荐给你,还是给了别人。

大公司里的决定常在你不在场的会议里做出,用的摘要不是你写的,决定的人只有五分钟十二个优先级。如果没人能在你不在时讲清你的影响力,它就等于可有可无。

这不纯是自我宣传,而是让价值链对所有人——包括你自己——都清晰可见。

7. 最好的代码是你不用写的代码。

工程文化里我们歌颂创造。没人因为删代码升职,但删减往往比添加更能改善系统。每一行不写的代码都是一行不用调试、维护、解释的代码。

在动手前,把这个问题问到底:“如果我们就……不做,会怎样?”有时答案是“没啥坏事”,那就是解法。

问题不是工程师不会写代码或用 AI 写,而是我们太会写了,以至于忘了问自己该不该写。

8. 到了一定规模,连你的 Bug 也有用户。

用户够多时,每个可观察行为都会变成依赖——不管你承诺了什么。有人在爬你的 API、自动化你的怪癖、缓存你的 Bug。

这带来一个职业层面的洞见:兼容性工作不能当作“维护”,而新特性才是“真工作”。兼容性本身就是产品。

把废弃设计成迁移:给时间、给工具、给同理心。大多数“API 设计”其实是“API 退役”。

9. 多数“慢”团队其实是没对齐的团队。

项目拖延时,本能是怪执行:人不够拼、技术选错、工程师不够。通常都不是根因。

在大公司,团队是并发单元,但协调成本随团队数呈几何增长。大多数慢其实是对齐失败——要么在做错的事,要么做对的事却互相不兼容。

资深工程师花更多时间澄清方向、接口和优先级,而不是“更快写代码”,因为瓶颈就在那。

10. 把精力放在能控制的事,忽略你控制不了的。

大公司里无数变量不由你控——组织调整、管理决策、市场波动、产品转向。纠结这些只会制造无力的焦虑。

能保持理智和效率的工程师聚焦自己的影响圈。你控制不了是否会重组,但你可以控制工作质量、回应方式、学习收获。遇到不确定时,把问题拆开,明确你能做的具体动作。

这不是被动接受,而是策略性聚焦。花在不能改的事上的能量,就是从能改的事上偷来的。

11. 抽象不会消灭复杂,它只把复杂移到你值班那天。

每个抽象都是个赌注,赌你不会需要理解底层。有时你会赢。但总会有泄漏,发生时你得知道脚下是什么。

资深工程师即便栈层越来越高,仍然继续学“更低层”的东西。不是怀旧,而是为了那天抽象失效、凌晨三点你独自面对系统时。用好你的栈,

但也要保有它底层失效模式的工作模型。

12. 写作迫使清晰;想学得更好,尝试去教别人。

写作会迫使你澄清。当我向别人解释一个概念——写文档、做分享、写 CR 评论,甚至跟 AI 聊天——我会发现自己理解的漏洞。让别人看懂的动作,也让自己看得更清楚。

这并不意味着你靠教书就能学会做外科手术,但在软件工程领域,这个前提大体成立。

这不仅是慷慨分享的表现,更是自私的学习秘籍。觉得自己懂了?试着简单讲出来。你卡住的地方,就是理解浅的地方。

教学是在调试自己的心智模型。

13. 让其他工作成为可能的工作无价——也最容易被忽视。

“胶水工作”——写文档、做新人引导、跨团队协作、改进流程——至关重要。但如果无意识地去做,它会拖慢你的技术成长,还会烧光你。陷阱在于把它当“好心”而不是有意、可控、可见的影响。

给它设时限,轮换负责,把它产出成文档、模板、自动化。让它被看作影响,而不是性格特质。

无价又不可见,对你的职业是危险组合。

14. 辩论场场都赢,可能是在积累无声的反对。

我学会对自己的笃定保持警惕。当我太容易“赢”,通常哪里不对。人们不再争辩,不是因为你说服了他们,而是因为他们放弃了——他们会在执行中表达反对,而不是在会议里。

真正的对齐更耗时。你得真的理解别的视角、吸收反馈,有时还要公开改变主意。

短期的“我对了”远不如长期和愿意合作的伙伴一起构建东西。

15. 一旦指标成了目标,它就不再是指标。

你给管理层看的每个指标最终都会被“优化”。不是恶意,是人性会对可度量的东西做优化。

测代码行数,你就会得到更多行。测速度,你就会得到膨胀的估算。

资深的做法:每个指标需求都给一对。一个看速度,一个看质量或风险。然后坚持解读趋势,而不是膜拜阈值。目标是洞察,不是监控。

16. 承认不会,比装会更能创造安全感。

说“我不知道”的资深工程师不是在示弱,而是在给别人许可。领导承认不确定,意味着这个房间允许别人也这么做。否则就会变成人人装懂,问题藏着直到爆炸。

我见过团队里最资深的人从不承认困惑,后果很糟。没人提问,假设不被挑战,初级工程师沉默,因为以为别人都懂。

示范好奇心,你就会得到一个真的在学习的团队。

17. 你的人脉会比你任过的所有工作都长寿。

职业早期我专注在工作本身,忽略了人脉。回头看这是个错误。那些投入关系的人——无论内外部——几十年都在收获。

他们最先听到机会,能更快搭桥,被推荐岗位,甚至与多年累积信任的伙伴一起创业。

工作不是永远的,但人脉可以。带着好奇和慷慨去经营,而不是交易式的忙碌。

当你要离开时,往往是关系为你打开门。

18. 大多数性能提升来自删掉工作,而不是加聪明。

系统变慢时,本能是加东西:缓存层、并行处理、更聪明算法。有时对。但我看到更多性能提升来自问一句:我们在算哪些不需要算的东西?

删掉无用工作几乎总比把必要工作做得更快更有影响。最快的代码是根本不会运行的代码。

在优化前,先质疑这件事是否该存在。

19. 流程的存在是为了降低不确定,而不是制造纸面记录。

好的流程让协作更容易、失败成本更低。坏流程是官僚表演——不是为帮助,而是为了出事时能甩锅。

如果你解释不出一个流程如何降低风险或提升清晰度,它很可能只是开销。

如果大家花在写文档上的时间比做事还多,说明事情已经严重跑偏。

20. 到某个节点,时间比钱更值钱。按这个行事。

职业早期,你用时间换钱——这没问题。但到某个时候,算式会倒过来。你会意识到时间才是不可再生的资源。

我见过资深工程师为追下一级烧尽自己,只为多几个百分点的报酬。有些人拿到了,多数人在事后想:值得吗?

答案不是“不努力”,而是“搞清你在交换什么,并有意识地交换”。

21. 没有捷径,但有复利。

专业是靠刻意练习得来的——略超出当前能力、反思、重复,持续多年。没有浓缩版。

但令人振奋的是:学习在能创造新选项时会复利,而不是靠多背冷知识。写作——不是为了流量,而是为了清晰;搭建可复用的原语;把伤痕整理成手册。

把职业当作复利,而不是彩票,工程师往往走得更远。

结语

21 条听起来很多,但归根到底只有几个核心:保持好奇,保持谦逊,记得工作始终关乎人——为之构建的用户,以及与你一起构建的队友。

工程职业够长,可以犯很多错还能站起来。我敬佩的工程师不是那些从不犯错的,而是那些从错中学习、分享所获、持续出现的人。

如果你还在旅程早期,要知道时间会让它更丰厚。如果你已经走得很深,希望其中一些能让你共鸣。