最近关于 10 倍程序员的事又开始在各个社交平台火了起来,CODING 做为国内领先的一站式 DevOps 解决方案,今天也来讨论一下 10 倍程序员到底存不存在和这个概念到底意味着什么。程序员
这个话题之因此会时不时被拿出来讨论,主要是由于它触及了一个比较深的意识形态问题:有些人是否比其余人更有才华,以及为何会这样(这是天生仍是后天能够改变的)。若是答案是确定的,咱们应该如何正确对待这件事。编程
所以,在各个社交平台的激烈讨论主要分红了两派,一边认为 10 倍程序员只是一个传说,是对程序员群体的刻板印象,并且比起讨论这个问题还有更重要的事去作,好比好好写文档或者带带实习生。而另外一边则会翻个白眼告诉你 10 倍程序员固然是存在的,那些不肯意认可的人都是被各类正义宣传洗了脑,或者是一个不想认可本身的失败的自卑者。编程语言
关于 10 倍程序员的传说究竟如何,让咱们来稍微解密一下。工具
此次风波的原由是在 7 月 11 日,Shekhar Kirani(在 Accel 印度的基金担任合伙人职位)发了一条微博:学习
声称 10 倍程序员是一种稀有物种并建议创业公司的 CEO 寻觅这种罕见的程序员,若是能找到一个 10 倍程序员做为你初始团队的前几名程序员之一,能够显着提升你的启动成功概率。而且还列举了诸如“仇恨会议”,“高度不规则”的工做时间,“能够高效将想法转化为他们心中的代码”,知道已经投入生产的“每行代码”,笔记本电脑屏幕背景颜色是黑色的等几条 10 倍程序员的特征。3d
咱们暂且不讨论他的论断是否正确,其实在过去关于 10 倍程序员这个概念有着不少的讨论,其中比较有名的是 Steve McConnell 在八十年作的研究:Productivity Variations Among Developers and Teams: The Origin of 10x。从中咱们能够提取出几个关键点:调试
1.10 倍程序员指的是最优秀的程序员和最差的程序员之间的差距,而不是和平均相比orm
这样其实更好让人接受,在我看来,更容易相信最好的开发人员比平均水平高出 3 倍,而最差的开发人员的生产力要低 3 倍。这样可让你达到 10 倍的总体差价。cdn
也许咱们应该将“x”从新定义为平均值,称之为“3 倍程序员”,这样就不用吵来吵去了。blog
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:
yourstory.com/2019/07/10x…
jasoncrawford.org/10x-enginee…
www.construx.com/blog/produc…