查看原文
其他

“10 倍工程师”引争议,程序员再被妖魔化?

Jason Crawford CSDN 2019-07-25

【CSDN 编者按】前有“996”,后有“10倍工程师”——作为程序员的你感受到被支配的恐惧了吗?

最近几日,网上关于“10倍工程师”的讨论络绎不绝,各种观点也是褒贬不一。有的人认为“这些程序员能够以一当十”,也有人认为他们只是“没有感情的编程工具”,但更多的人表示“这样的10倍工程师是不存在的”、“这是对程序员的妖魔化”——无论是哪种,这些观点都体现出了当前技术圈内病态的现象。

毋庸置疑的是,10倍工程师是出于对代码的热爱才会如此全神贯注,但是这样的人真的存在吗?


作者 | Jason Crawford

译者 | 谭开朗,责编 | 郭芮

出品 | CSDN(ID:CSDNnews)

以下为译文:

今天我本想写点别的,但Twitter上似乎每个人都在谈论“10倍工程师”。真的存在所谓的“10倍工程师”吗?这个词到底是什么意思?

这个话题引起了人们激烈的口水战,因为它涉及到深刻的意识形态话题:是不是某些人比其他人更有才华?为什么会这样(这是与生俱来的还是后天学习的)?如此一来,我们应该如何对待他人?

社交媒体也因此争论得热火朝天:一方面,人们说的10倍工程师是一个神话,它完全基于刻板印象,而且不管怎么样,他难道没有更重要的事情吗?比如是否可以编写文档、指导其他工程师,或者只是做一个品德高尚的人?另一方面,有人犀利反驳道,当然有10倍工程师了,任何不承认这一明显事实的人,肯定都是不想承认自己是低人一等的失败者。

让我们现实一点儿吧——首先,让我们来做经验分析。


关于“10倍工程师”应该知道些什么?


Steve McConnell的文章《开发人员和团队之间的生产力差异:10倍的起源》(https://www.construx.com/blog/productivity-variations-among-software-developers-and-teams-the-origin-of-10x/)对“10倍工程师”这一概念及其基础做了很好的解释。以下是了解“10倍工程师”的关键:

  • 10倍指的是最好的开发人员和最差的开发人员之间的差异,而不是最好的开发人员与普通开发人员的差异。这是截然不同的。在我看来,最好的开发人员比普通开发人员的生产力要高3倍,而最差的开发人员的生产力要比普通开发人员低3倍,这样就可以得到10倍的差距。(请注意,议论“0.5倍工程师”是没有任何意义的,因为根据定义,最差的开发人员是1倍。)

    也许我们应该将“x”重新定义为平均值,则称最好的工程师为“3倍工程师”,然后结束这场争论?

  • 10倍的概念是建立在研究的基础上的,但研究并不完美。在上一点提及的文章中,McConnell对此研究进行了说明。我们有理由对这些研究及与今天热点相关的观点提出批评:这些样本量相对较小,而且并没有受到很好的管控。其中一些还是几十年前就完成的(第一个是1968年),当时的计算机、编程语言和开发项目与今天的大相径庭。他们可能使用了不可靠的生产力指标,例如每天的代码行数;但是他们也有较好的度量指标,比如完成时间。在某些情况下,并不是代码行数越多,生产力就越高(对于给定的任务,行数越少越好)。

    总的来说,研究足以表明,个人和团队之间的生产率存在很大的差异。

  • 10倍是一个粗略的平均数。不同的研究和评测得出了不同的范围,一般在5倍至25倍之间。再加上刚刚讨论的研究的局限性,意味着我们只能称其为“大致数量级”。“10倍”并不精确,它只是一种简洁的方式,以此来标柱生产率的差异是存在的,且差异巨大。

    这些研究,只针对那些实际完成任务的开发人员。研究数据并没有算到那些没有完成任务的人(在一些研究中约占10%)。他们也没有考虑软件的实际成本,这些软件虽然名义上已经完成了,但往往漏洞百出或难以维护,不得不由其他人重写。这甚至还没有提到bug产生的成本,这些bug会影响公司的销售,导致公司亏损甚至倒闭。不过,所有这些因素只会强化这一基本观点。

  • 10倍这一数字仅与工程生产率的具体衡量指标有关。它并不是为了全面考核工程师对组织的价值,但尽管如此,这些仍然是很重要且有意义的。

    这些研究并没有指出造成这些差异的原因。至少McConnell的研究没有解决到一些重要的问题,比如:一个人的生产力水平是否能长久的保持稳定?这是否因环境而有差异?工作环境对生产力的影响有多大?它是否会随任务的不同而随机变化?它会随着时间增长吗?这是可以学会的吗?(1968年的最初研究表明“程序员的经验与代码质量和生产力没有任何联系”,但这并不意味着生产力不能随着时间的推移而增长,只是它不一定会增长。)


我的观点


基于研究与我个人的成长经历与世界观,提出以下看法:

  • 生产率的差异是真实存在的,这种差异巨大且重要,而且很可能被低估了。如果差异不仅仅是“10倍”,就更足以证明其重要性。我之所以如此认为,部分原因可归于研究,但更重要的是因为这种现象比软件要广泛得多。McConnell引用了Norm Augustine的一项研究“发现在各行各业中,作家、足球运动员、发明家或警察等——前20%的人产生了大约50%的输出,无论输出是触地得分、专利、破案还是软件。”

  • 工作环境很重要。在现实世界中,工作环境对生产力的影响很大。工程师是否有明确的目标和优先级?他们会买账吗?他们有动力吗?他们彼此信任吗?他们信任管理层吗?他们可以集中注意力吗?他们参加会议吗?还是在生产环境中扮演“消防员”的角色?他们有良好的基础设施和工具吗......等等。

  • 生产力是内在特质和后天技能的结合。也就是说,一定程度上,它是可以学习的。获得的技能包括从特定的调试工具到一般的思维模式和解决问题的方法。这些固有特征与智力和其他思维模式有很大关系,而我们无法(或还不知道如何)识别和传授这些思维模式。

  • 生产率与经验并没有很强的相关性。有很多高效的初级工程师,也有非常平庸(甚至更糟)的高级工程师。所以,即使生产力是可以学习的,学习也不会自动发生,甚至在我们的行业中也不会经常发生。很少有人传授如何提高工作率,那些能够独立学习这些技能的人,也是那些一开始就很优秀的人。


10倍工程师这一争议的意义何在?


10倍工程师这一争议的意义何在?其意义在于对招聘、奖励制度以及个人心理暗示等方面的影响。

以下是我的结论:

  • 招聘事宜。努力吸引、发现和留住最优秀的人才。

  • 环境很重要。努力创造一个良好的工作环境,如果你发现工作效率普遍存在问题,那可能是环境问题。

  • 奖励高效。创造越多的人赚得越多。

  • 生产力不是与生俱来的。在一个环境中效率低下的人可能在另一个项目中或在另一个团队或公司中效率更高。在你解雇这个人之前,先确认这个问题。

  • 培训工程师的工作技能。我还不确定这是否有效,但行业内甚至还没有人在这领域作出尝试(包括我自己在内)。

  • 生产率不是不良行为的保护伞。这一点不言而喻,大家都心中有数。

而且也没有什么特别的技巧可以“发掘”一个10倍工程师(尽管引发当前讨论的帖子很奇怪、很可笑)。他们不是仙女或妖精,你不能通过他们所用终端的颜色、键盘上的配饰或任何其他的刻板印象来识别他们。

这是我用了6年的键盘,我想我经常做的事情就是复制吧。我保证,它并不总是来自Stack Overflow。

原文:https://jasoncrawford.org/10x-engineers

本文为 CSDN 翻译,转载请注明来源出处。

【END】


 热 文 推 荐 

谷歌停止中国版搜索引擎;李楠宣布离职魅族;微软用 Rust 替代 C/C++ | 极客头条

Facebook 发布全新 JavaScript 引擎:Hermes! |  CSDN博文精选

现在的 C 语言仍值得程序员学习吗?

☞计算机密码发明者去世!曾获图灵奖、并启蒙 Unix 诞生!

☞344亿天价罚单也救不了Libra!

☞面试官问我:你们的数据库是怎么架构的?

☞10分钟学会用Pandas做多层级索引

☞江湖又现中科大少年班的传说

☞中国第一程序员,微软得不到他就要毁了他!

点击阅读原文,输入关键词,即可搜索您想要的 CSDN 文章。

你点的每个“在看”,我都认真当成了喜欢

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存