内容简介:10x开发者不是神话
英文原文: http://www.ybrikman.com/writing/2013/09/29/the-10x-developer-is-not-myth/
更新:你可以 在这里找到本文的西班牙语翻译 。
昨天晚上,我在Twitter发布了以下内容:
我被“10x”或者“摇滚明星开发者”是神话的说法所迷惑。明星运动员、艺术家、作家,或者摇滚明星是神话?
— Yevgeniy Brikman (@brikis98) September 29, 2013
我收到了大量的回复和问题,但Twitter是个糟糕的讨论媒介,所以我写这篇博文作为补充。
有大堆的文章[ 1 、 2 、 3 、 4 ]声称10x开发者不存在。反对的理由通常分成3种:
- 原来的10x数字来自单个的有缺陷的研究(Sackman,Erikson和Grant(1968))。
- 生产率是个模糊的事情,很难测量,所以我们不能做出任何10x的声明。
- 人才有分布,但没有单个工程师可以做10倍的工作。
我不同意所有这些。让我们逐个地检查这些理由。
这不是一个研究
虽然Twitter和Hacker News上的空谈科学家喜欢严厉谴责已被同行评审的研究,但在那种情况下的证据是相当有吸引力的,不仅限于单项研究。请允许我引用这个问题 在Stack Overflow上的讨论 的最顶部的回复:
...发现个体编程生产力的巨大差异的原始研究是在20世纪60年代末由Sackman、Erikson和Grant(1968)进行的。他们研究了平均7年经验的专业程序员,发现最佳和最差 程序员 之间的初始编码时间的比例约为20:1;调试时间超过25:1;程序大小5:1;并且程序执行速度约为10:1。他们发现程序员的丰富经验与代码质量或生产率之间没有任何关系。
对Sackman、Erikson和Grant的发现的详细检查显示出其方法论的一些缺陷。但是,即使考虑到这些缺陷,他们的数据仍然显示出最佳和最差程序员之间的差距超过10倍。
在原始研究之后的几年中,“程序员之间存在数量级差距”的一般性发现已经被许多其它对专业程序员的研究所证实(Curtis 1981、Mills 1983、DeMarco和Lister 1985、Curtis等人1986、Card 1987、Boehm和Papaccio 1988、Valett和McGarry 1989、Boehm等人2000)...
如果你不能测量它,你仍然可以推理它
即使你忽略上面的研究,并宣称“编程生产力”很难测量——它是的——我们仍然可以讨论10x程序员。只是因为某些东西难以测量并不意味着我们无法推理它。
例如,你是如何为最近的项目挑选编程语言的?你有没有查阅“证明”这门语言比其它语言更有效的研究?就个人而言,我不需要实验来证明,Ruby比起C在构建网站时会是有一个数量级的更有生产力的选择。你可以胡乱拼凑些粗略的指标(库可用性、社区支持、文档),但现实是,大多数人基于直觉推理而不是双盲研究来做出这类语言决策。尽管缺乏过硬的数据,但我敢打赌,大多数时候,采用 Ruby 而不是C进行网站开发都将是正确的决策。
当然,编程不是唯一这样的事情:什么“指标”可以告诉你一位作家、艺术家、老师或者哲学家比另外一位更好?仅仅观察他们,我不能给出表明莎士比亚、纳博科夫或奥威尔比普通作家好一个数量级的“生产力指标”,但是绝大多数人都会同意这点。
编程不是体力劳动
抗拒10x程序员的最大问题是有些人认为编程是手工劳动,而程序员是装配线工人。有些程序员比其他程序员好些,但可以肯定的是,单个程序员不可能持续接近其他程序员的10倍!10个人的团队总是胜过单个编码者!9个女人不能在1个月内生产婴儿!
上面的逻辑听起来像是编程生产力只关乎打字速度。仿佛10x程序员只是能够生产平均水平的10倍代码。这种推理无视编程是创造性行业,不是体力劳动:解决同样问题的方法有很多种。停止简单地类比,更多地考虑罪案解决的类比:10名普通侦探与夏洛克·福尔摩斯。谁能更快地解决罪案?
10x开发者具有洞察力,能找到普通程序员永远不会找到的解决方案。他们将避免花费普通程序员大量时间的整类问题。编写正确代码的单个工程师绝对可以胜过编写错误代码的10个工程师。
编程是关于选择
考虑构建单个软件产品(如网站)的决策有多少:你用哪种语言?什么Web框架?你用什么数据存储?你用什么缓存?你在哪里托管站点?你怎么监控它?你如何推进新的变化?你如何存储代码?你安排什么样的自动化测试?
10个普通程序员将在每个步骤中做出“平均”质量的决策,这些决策的成本或收益将倍增。想象下流量以指数级增长,而这个普通的团队维护着普通的网站,数据存储引擎难以分片,没有足够冗余的主机,版本控制没有正确备份,没有CI环境,也没有监控。如果他们花费所有的时间去灭火,这10个编码者的效率如何?
如果程序员可以以减少一个数量级的工作量的方式对问题进行建模,那么单个程序员可以胜过这个10人团队。从多年的经验来看,伟大的程序员会知道,以后修复错误要花费更多。通过在前面作出良好的决策,10x程序员可以避免几个月的工作。
它不是编写更多的代码,它是编写正确的代码。成为10x程序员不是通过做一个数量级的更多工作,而是通过做出比平常一个数量级的更好的决策。
这不是说10x程序员根本不犯错误。程序员每天都要做出很多选择,而伟大的程序员做出正确的选择比普通程序员多得多。
编程不是唯一这样的事情。你愿意有10名普通科学家还是艾萨克·牛顿?10名普通科学家没有提出运动定律、重力理论、二项式系列、微积分等,艾萨克·牛顿做到了。你愿意让你的球队有迈克尔·乔丹还是10名普通球员(注意:乔丹获得了NBA平均薪水的10倍)?你愿意让史蒂夫·乔布斯(Steve Jobs)或者伊隆·马斯克(Elon Musk)经营一家公司还是把钥匙交给10个普通企业家?
10x程序员很少见
重要的是以正确的角度看待事情。明星的程序员、运动员、作家和科学家极其少见。我不推荐围绕只雇佣“摇滚明星”来制定招聘策略,它会使你看起来很愚蠢和孤独。不要让完美成为好的敌人:聘请你能得到的最好工程师,并给他们充足的机会去发展和变得更好。
但是,不要陷入所有程序员生而平等的谬误。任何创造性行业都有广泛的能力。一方面是会让组织陷入困境的雇员类型,用他们编写的每行代码积极增加技术债务。另一方面,有些人可以编写带来更多可能的代码,并且具有比平均水平大一个数量级的影响。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- IOTA江湖神话的背后
- 揭穿AI的神话与现实
- 最新的可逆ICO方案能否再造神话?
- 揭秘创造暴富神话的IOTA真实发展情况
- 企业中的人工智能:8个神话被揭穿?
- 打破VDI安全神话:控制终端设备就控制了VDI资源
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。