十倍程序员的传说

简介: 最近关于 10 倍程序员的事又开始在各个社交平台火了起来,CODING 作为国内领先的一站式 DevOps 解决方案,今天也来讨论一下 10 倍程序员到底存不存在和这个概念到底意味着什么。这个话题之所以会时不时被拿出来讨论,主要是因为它触及了一个比较深的意识形态问题:有些人是否比其他人更有才华,以及为什么会这样(这是天生还是后天可以改变的)。

最近关于 10 倍程序员的事又开始在各个社交平台火了起来,CODING 作为国内领先的一站式 DevOps 解决方案,今天也来讨论一下 10 倍程序员到底存不存在和这个概念到底意味着什么。

这个话题之所以会时不时被拿出来讨论,主要是因为它触及了一个比较深的意识形态问题:有些人是否比其他人更有才华,以及为什么会这样(这是天生还是后天可以改变的)。如果答案是肯定的,我们应该如何正确对待这件事。

因此,在各个社交平台的激烈讨论主要分成了两派,一边认为 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 倍程序员也不能放任自流: 这个应该是原则问题,不言而喻。

另外,再说一下开头提到的整场讨论的起因——我们认为发现 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/

相关文章
|
3月前
|
NoSQL 编译器 程序员
【C语言】揭秘GCC:从平凡到卓越的编译艺术,一场代码与效率的激情碰撞,探索那些不为人知的秘密武器,让你的程序瞬间提速百倍!
【8月更文挑战第20天】GCC,GNU Compiler Collection,是GNU项目中的开源编译器集合,支持C、C++等多种语言。作为C语言程序员的重要工具,GCC具备跨平台性、高度可配置性及丰富的优化选项等特点。通过简单示例,如编译“Hello, GCC!”程序 (`gcc -o hello hello.c`),展示了GCC的基础用法及不同优化级别(`-O0`, `-O1`, `-O3`)对性能的影响。GCC还支持生成调试信息(`-g`),便于使用GDB等工具进行调试。尽管有如Microsoft Visual C++、Clang等竞品,GCC仍因其灵活性和强大的功能被广泛采用。
122 1
|
3月前
|
JSON C# 开发者
💡探索C#语言进化论:揭秘.NET开发效率飙升的秘密武器💼
【8月更文挑战第28天】C#语言凭借其强大的功能与易用性深受开发者喜爱。伴随.NET平台演进,C#持续引入新特性,如C# 7.0的模式匹配,让处理复杂数据结构更直观简洁;C# 8.0的异步流则使异步编程更灵活高效,无需一次性加载全部数据至内存。通过示例展示了模式匹配简化JSON解析及异步流实现文件逐行读取的应用。此外,C# 8.0还提供了默认接口成员和可空引用类型等特性,进一步提高.NET开发效率与代码可维护性。随着C#的发展,未来的.NET开发将更加高效便捷。
60 1
|
人工智能 JSON 缓存
身为程序员,你有哪些提高写代码效率的黑科技?
身为程序员,你有哪些提高写代码效率的黑科技?
|
NoSQL Java 程序员
要学的东西太多,自己能力不足,很焦虑怎么办
总有人问我,兔哥,现在java要学的知识点这么多,记不住,怕学不精很焦虑怎么办? 这是很多初学者都有的痛点。 其实吧,你可以试试贪多而不必嚼烂。
182 0
|
移动开发 小程序 JavaScript
在自学编程这条道上,有人半途而废,有人效率暴增
在自学编程这条道上,有人半途而废,有人效率暴增
124 0
|
架构师 Java 程序员
从普通程序员到身价过百亿:追求长期价值的耐心,决定了你能走多远
一提到程序员,很多人脑海里马上会出现这些标签:格子衬衫、牛仔裤、代码、bug、木讷、不善言辞等等。但有一个词似乎更能概括:改变世界。 程序改变世界,已经有几十年了,但真正进入大众的生活,应该是从2007年智能手机的应用开始,越来越多的人开始关注技术和程序员。
1880 0
|
大数据 程序员
月薪3万的程序员到底能为公司带来多大收益?
在讨论月薪三万的程序员一个月能给公司带来多大收益之前,我们先来看一个很有趣的问题,问题如下: 有个地主有一块固定大小的土地,需要租给农民去种植。 农民每种出一斤粮食,地主就能获得三元钱的收入,农民能获得一元钱的报酬。
2065 0
|
程序员 双11 Android开发
作为一名有追求的程序员,你双11最舍得花钱买的东西有哪些?
在下是一名90后程序猿,平常周末没什么事,都是在家宅着,很多人觉得程序员的最大特点就是宅,大多数时间和电脑在一起,根本不会在意自己的衣着和生活品质,所以大家一说到程序员,给人的印象就是邋遢、性格内向、不爱说话、宅、加班。
1137 0
|
程序员
官方数据:程序员年纪越大越出色、越稀有
导读:本文是从《It's official: developers get better with age. And scarcer》这篇文章翻译而来,译文来自外刊IT评论《官方数据:程序员年纪越大越出色、越稀有》。
874 0
|
程序员
程序员达到高效率的一种境界
译文出自:一种境界
591 0

相关实验场景

更多