赞美“普通”工程师

一位软件工程师反对“10倍工程师”的神话

Charity Majors

9 小时前

阅读需 6 分钟

2

Charity Majors 是 Honeycomb.io 的联合创始人兼 CTO。

一小群工程师坐在桌子旁,看着一辆微型机器人车辆。

没有什么比构建事物、解决问题和取得进展更让工程师高兴的了。

Jose Carlos Cerdeno/iStock

此文章的一个版本最初发表Refactoring,这是一个为 软件工程师 提供建议的 Substack。

我们大多数人都遇到过一些软件工程师,他们似乎像魔术师一样,与我们其他人不同,他们能够推理复杂的心理模型,跳到不明显但优雅的解决方案,或者以超现实的速度发出高质量的代码。

在我的职业生涯中,我遇到过许多这些不可思议的人。我认为他们的存在解释了“10倍工程师”这一概念的持久性,即一个人的生产力或技能是其他同行的 10 倍。这个想法——已经成为一种模因——是基于脆弱、糟糕的研究,而且人们为捍卫它所做的声称往往是可笑的(例如,10 倍工程师有黑暗的背景,很少看到做用户界面工作,并且是糟糕的导师和面试官)或公然加倍强调刻板印象(“我们寻找穿着连帽衫的年轻伙计,他们让我们想起 Mark Zuckerberg”)。但该死,如果它没有与经验产生共鸣。感觉就是真的。

我不反对有些工程师的生产力是其他工程师的 10 倍的想法。我的问题有两方面。

衡量生产力是令人担忧且不完善的

首先,你如何衡量生产力?我对暗示存在一种真正的生产力指标,你可以通过标准化和排序来区分人们,这一点感到不满。考虑一下正在发挥作用的技能和经验的范围:

而且,人和他们的技能和能力不是静态的。在某个时候,我是一个相当不错的数据库可靠性工程师。也许那时候我什至是一个 10 倍的数据库工程师,但肯定不是现在。我已经 好几年 没有调试查询计划了。

“10 倍工程师”听起来好像生产力是一个人不可改变的特征。但是,在特定技能组合中达到 10 倍的工程师仍然会有无数个领域是平均水平(或低于平均水平)。我认识很多世界一流的工程师,但我从未见过有人在各个方面、在任何情况下都比其他人好 10 倍。

工程师不拥有软件,团队拥有软件

其次,更重要的是:那又怎样?个人工程师不拥有 软件;工程 团队拥有软件。个人工程师编写软件的速度有多快并不重要。重要的是团队集体编写、测试、审查、交付、维护、重构、扩展、架构和修改他们拥有的软件的速度。

每个人都使用相同的软件交付管道。如果贵公司最慢的工程师需要五个小时才能交付一行代码,那么贵公司最快的工程师也需要五个小时才能交付一行代码。编写代码所花费的时间通常被 软件开发 生命周期中 所有其他部分 所花费的时间所掩盖。

如果你有单个工程师拥有的服务或软件组件,那么该人就是一个单点故障。

我并不是说这永远不应该发生。在 初创公司 中,个人拥有软件是很正常的,因为你面临的最大生存风险是行动不够快,最终倒闭。但是,当你开始成长为一家公司时,所有权需要移交给团队。个别工程师会生病、休假和离开公司,而企业必须对此具有弹性。

当一个团队拥有软件时,任何工程负责人的关键工作就是打造一个高性能的工程团队。如果你必须将某些东西提高 10 倍,请构建 10 倍的工程团队。

最好的工程组织是“普通”工程师能够做出伟大工作的地方

当人们谈论世界一流的工程组织时,他们通常会想到员工和首席工程师人数众多的团队,或者大量从前 Big Tech 员工和顶尖大学招聘的团队。但我认为,一个真正伟大的工程组织是一个你不需要成为“最好”或最有资历的工程师就可以对业务产生很大影响的组织。我认为实际上恰恰相反。一个真正伟大的工程组织是一个完全正常的、日常的软件工程师,他们拥有不错的技能和一般的专业知识,可以始终如一地快速行动、交付代码、响应用户、了解他们构建的系统,并日复一日、周复一周地推动业务向前发展。

任何人都可以建立一个世界上最有经验、最聪明的工程师可以 创建产品 并取得进展的组织。这并不难。并且将所有的聚光灯都放在个人能力上,会让你的领导者摆脱完成工作的困境。如果你可以构建系统,使经验不足的工程师可以将他们的努力和精力转化为产品和业务动力,那么这将是一个巨大的竞争优势。衡量生产力的唯一有意义的标准是您是否在实质上推动业务向前发展。

一个真正伟大的工程组织也恰好是一个培养世界一流软件工程师的组织。但我有点超前了。

让我们来谈谈“普通”工程师

许多技术人员都非常依恋我们作为聪明孩子的身份。软件行业倾向于在各个方面反映和强化这种专注,正如 Netflix 声称的“我们寻找全球人才的前 10%”,或者 Coinbase 希望“雇用前 0.1% 的人才”。我想挑战我们把这些包袱放在一边,把自己想象成 普通 人。

把自己想象成一个普通人可能会让人感到谦卑。但我们大多数人都是,而且 这没有任何问题。即使我们中那些在某些标准上被认证为天才的人,在其他方面——动觉、情感、空间、音乐、语言等方面——也可能非常普通。

软件工程既选择又发展某些类型的智力,特别是围绕抽象推理,但 没有人 天生就是伟大的软件工程师。伟大的工程师是造就的,而不是天生的。

构建以“普通人”为中心的社会技术系统

在招聘人才和组建团队时,是的,绝对应该专注于识别人们的特殊之处。但是,在构建用于软件交付的社会技术系统时,我们应该专注于人们 正常 的所有方面。

普通人有 认知偏见——确认偏差、近因偏差、后见之明偏差。我们努力工作,我们关心,我们尽力而为;但我们也忘记事情、变得不耐烦和走神。我们的眼睛不可避免地被红色所吸引(除非我们是色盲)。我们养成习惯并抵制改变它们。当我们反复看到相同的文本块时,我们就会停止阅读它。

我们是有形的存在,会感到不知所措和疲惫。如果警报在凌晨 3 点叫醒我们,我们在响应警报时犯错误的几率要比在下午 3 点尝试做同样的事情时高得多。我们的情绪状态会影响我们工作的质量。

当你的系统被设计成供普通工程师使用时,他们拥有的所有多余的光芒都可以倾注到产品本身中,而不是浪费在导航系统上。

伟大的工程组织培养世界一流的工程师

一个伟大的工程组织是一个你不需要成为世界上最好的工程师就可以产生很大影响的组织。但——具有讽刺意味的是——伟大的工程组织培养世界一流的工程师就像没事发生一样。

最好的工程组织不是拥有世界上最聪明、最有经验的人的组织。它们是普通软件工程师可以始终如一地取得进展、为用户交付价值并推动业务向前发展的组织。工程师可以产生重大影响的地方对顶级人才具有吸引力。没有什么比构建事物、解决问题和取得进展更让工程师高兴的了。

如果你足够幸运,你的组织中拥有世界一流的工程师,那对你来说是好事!你作为领导者的角色是利用他们的才华来造福你的客户和其他工程师,而不会 依赖 他们的才华。毕竟,这些人不属于你。他们可能随时走出大门,这必须是可以接受的。

假设他们可以成为团队合作者并控制住自己的自我,那么这些人就可以成为非凡的资产。这可能就是为什么这么多科技公司似乎痴迷于识别和雇用他们,尤其是在 Silicon Valley

但是公司太过于重视在这些人已经被培养出来之后找到他们,这最终会强化和复制整个世界的所有偏见和不公正现象。人才可能在人群中均匀分布,但机会并非如此。

不要雇用“最好”的人。雇用合适的人

我们过于强调个人能动性和特征,而对塑造我们并告知我们行为的系统关注不足。

我相信,只要将招聘的重点从过于强调雇用 最好 的人转移到更合理和准确的 合适 的人身上,就可以改善大量问题(候选人自行退出面试流程、申请人的多样性等等)。

建立一个可以根据人们的独特优势而不是缺乏弱点来雇用他们的环境,这是一个竞争优势;重点是组成团队;包容性既是出于道德原因,也是因为它提高了每个人的绩效标准。包容性文化是精英统治的基础。

这种地方就像飞蛾扑火一样吸引着工程人才。推动业务向前发展、磨练你的技能和提高你的技艺感觉很好。这是人们想要成为世界一流工程师的地方。它往往也是世界一流的工程师想要留下来并培养下一代的地方。