最近关于 10 倍程序员的事又开始在各个社交平台火了起来,CODING 作为国内领先的一站式 DevOps 解决方案,今天也来讨论一下 10 倍程序员到底存不存在和这个概念到底意味着什么。
这个话题之所以会时不时被拿出来讨论,主要是因为它触及了一个比较深的意识形态问题:有些人是否比其他人更有才华,以及为什么会这样(这是天生还是后天可以改变的)。如果答案是肯定的,我们应该如何正确对待这件事。
因此,在各个社交平台的激烈讨论主要分成了两派,一边认为 10 倍程序员只是一个传说,是对程序员群体的刻板印象,而且比起讨论这个问题还有更重要的事去做,比如好好写文档或者带带实习生。而另一边则会翻个白眼告诉你 10 倍程序员当然是存在的,那些不愿意承认的人都是被各种正义宣传洗了脑,或者是一个不想承认自己的失败的自卑者。
关于 10 倍程序员的传说究竟如何,让我们来稍微解密一下。
这次风波的起因是在 7 月 11 日,Shekhar Kirani (在 Accel 印度的基金担任合伙人职位)发了一条微博:
声称 10 倍程序员是一种稀有物种并建议创业公司的 CEO 寻觅这种罕见的程序员,如果能找到一个 10 倍程序员作为你初始团队的前几名程序员之一,可以显着提高你的启动成功几率。并且还列举了诸如“仇恨会议”,“高度不规则”的工作时间,“可以高效将想法转化为他们心中的代码”,知道已经投入生产的“每行代码”,笔记本电脑屏幕背景颜色是黑色的等几条 10 倍程序员的特征。
我们暂且不讨论他的论断是否正确,其实在过去关于 10 倍程序员这个概念有着很多的讨论,其中比较有名的是 Steve McConnell 在八十年做的研究:Productivity Variations Among Developers and Teams: The Origin of 10x。从中我们可以提取出几个关键点:
1.10 倍程序员指的是最优秀的程序员和最差的程序员之间的差距,而不是和平均相比
这样其实更好让人接受,在我看来,更容易相信最好的开发人员比平均水平高出 3 倍,而最差的开发人员的生产力要低 3 倍。这样可以让你达到 10 倍的整体差价。
也许我们应该将“ x ”重新定义为平均值,称之为“ 3 倍程序员”,这样就不用吵来吵去了。
2.10 倍程序员的概念的确是基于研究而来,但这并不代表研究是完美的
McConnell 在上面提到的文章中详细总结了之前关于 10 倍程序员的研究,但是这些研究在今天看来都略显过时并存在一定的缺陷,比如总样本量相对较小,并且并没有很好的把控变量。其中一些研究是在几十年前(第一次是 1968 年)完成的,当时计算机、编程语言和开发任务都和现在有很大不同。虽然他们采用了一些还不错的度量方式,比如任务完成时间,但是大部分度量方式是值得商榷的,例如每天的代码行数,并且在某些情况下,他们认为代码行数是负面影响因子(对于给定的任务,更少的代码量被认为是会更好)。
总的来说,虽然有些瑕疵,但还是有明显的证据表明,个人之间的生产力差异很大。
3. 10 倍只是一个粗略估计
不同研究发现的生产力差距存在一定的范围,通常在 5 至 25 倍之间。这与刚刚讨论的研究的局限性相结合,意味着我们不能说“大致数量级”。“ 10 倍”并不准确,它只是一种方便的方式来记住生产力的差异存在并且很大。
4.10 倍的数字仅仅是对代码生产力的衡量
它并非旨在完全衡量程序员对组织的价值,也不能用于此目的。也就是说,这些仍然是有意义和重要的措施。
5.这些研究并没有揭露造成差距的原因
据我所知,McConnell 的调查至少没有解决重要的问题,例如:个人的生产力水平是否随时间稳定? 它是否因环境而异?工作环境对生产力的影响程度如何? 它会因为项目的不同或工作内容的变化而变化吗? 它会随着经验而增长吗? 可以通过学习进步吗?( McConnell 表示最初 1968 年的研究“发现程序员的经验和代码质量或生产力之间没有任何关系”,但这并不意味着生产力不会随着时间的推移而增长,只是它不一定会这样做)。
以下四个想法不仅基于研究,而且基于我们日常的观察:
1. 生产力的差异是真实的、重要的,并且可能被低估。
即使差异不是“十倍”,但是很多时候也会举足轻重,而且我相信这个现象不仅仅存在于软件行业。McConnell 本人就指出过这一点,引用 Norm Augustine 的一项研究:“在各种职业,无论写作,足球,发明,警察工作还是其他职业,一定都是前 20 % 的人产生了约 50 % 的产出, 无论是橄榄球中的达阵还是专利,解决案例或软件。”
2. 工作环境至关重要
在现实世界中,生产力其实很大程度是受工作环境制约的。程序员是否明确了目标和优先事项? 他们是否相信自己做的事情?他们有动力吗?他们能否相互信任?他们可以集中注意力吗?他们必须随机参加会议吗?他们有良好的基础设施和工具吗?等等。
3. 生产力是自身特征和后天技能的结合
也就是说,高生产力是可以通过学习来部分提高的。可获得的技能包括从调试特定工具到思维模式和解决方式等,通过这些来提高自己的生产力。但是自身的特性暂时还是不能(或者说还不知道如何)有效的识别和通过学习来习得的,这与个人自身的智力和思维模式有很大关系。
4. 生产力并不和过往经历强相关
有非常高效的初级程序员,也有非常平庸(或更糟糕)的高级程序员。因此即使可以通过学习来提高自身的生产力,但是学习的过程也不会自动发生,固步不前的程序员在我们的行业中也是很常见的。
关于 10 倍程序员的讨论归根结底是在讨论如何雇佣、奖励员工以及我们如何对待彼此。
所以我们总结出了如下的结论,希望对企业的研发团队有些帮助:
另外,再说一下开头提到的整场讨论的起因——我们认为发现 10 倍程序员的规律或者特质并不存在,他们不是什么特殊物种,不可能通过终端的颜色,键盘上的磨损,或任何其他刻板印象来识别它们。
Reference:
https://yourstory.com/2019/07/10x-engineers-accel-shekhar-kirnani-startups
https://jasoncrawford.org/10x-engineers
https://www.construx.com/blog/productivity-variations-among-software-developers-and-teams-the-origin-of-10x/
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.