出色的程序员生产力-差异10,000倍?[关闭]


19

一位出色的车床操作员的薪水是普通车床操作员的几倍,但是一位出色的软件代码编写者的价值是普通软件编写者价格的10,000倍。- 比尔盖茨

假设在同一团队中有一位“优秀”软件工程师和一位“普通”软件工程师。您怎样才能使一名工程师的生产率提高一万倍?鉴于他们俩都承担着各自的功能,错误和调查工作,并且始终如一地交付高质量产品,因此我对此并不十分了解。我的描述可能会证明它们高于“平均水平”吗?“大”?


2
我不确定这个问题是否适合stackoverflow,但是我也对响应感兴趣。
奥斯汀·亨利

18
引文中说,一个伟大的产品的价值是其平均价格的1 万倍,与那里的“生产力”无关。
Oded

4
实际上,一个优秀的程序员的生产力可能远不如一个普通的程序员。他没有做自己的“工作”,而是做了一些超出了预期的事情,甚至创建了一条全新的产品线,这使生产程序员的工作过时了。
hotpaw2 2011年

2
我可以确定的一件事是,如果您既要创新又要完成!@#$,那么就需要两者。
Erik Reppen 2013年

6
安倍·林肯曾经说过:“如果我有八个小时的时间来砍伐一棵树,我会花六个小时的时间来磨尖斧头”,这在编程中从来没有像现在这样,做“好”工作远远超过了快速的工作。好的程序员看似效率较低,但是他正在为即将出现的所有问题做准备。
BeardedO 2013年

Answers:


57

报价的重点不是一个生产力提高一万倍,而是一个生产力的价值高出一万倍。软件具有独特的条件,即有缺陷的设计或实现可能会休眠数年(被错误加工的零件通常只会“不起作用”并且无法进入现场),直到产品的生命周期才失效。一天,它在棘手的情况下昂首挺胸。

每个人都应该熟悉修复从设计到实施到测试再到生产再到维护的缺陷所需要付出的代价。

当您考虑可能的责任以及企业声誉时,很容易得出结论:知道足够多可以避免问题的开发者的价值是无知或天真地实施不良解决方案的开发者的10,000倍。

编辑(2014年春季):“严重失血”


1
微妙的是,缺乏责任感使程序员的价值比其他人高10,000倍。原来没想到这一点,谢谢。不过,这似乎很难衡量。
TheImpact 2011年

2
@TheImpact:很难“测量”,因为通常只有在编码完成并且项目出世之后,它才能变得明显。性能和可靠性,通常是经过“一般”程序员的思考后得出的;而它们却是由一位出色的程序员所构建的,它被嵌入到设计的结构之中。
NotMe 2011年

10
+1。如果一个好的软件开发人员的价值是100,那是-10的多少倍?
妮可

3
还有供求问题。雷蒙德·陈(Raymond Chen):“我只相信世界上只有五个人编写这种高级代码,而我也不是其中之一。- blogs.msdn.com/b/oldnewthing/archive/2011/04/15/10154245 .aspx。” 对于安全性相关的编码尤其如此,因为多年来可能一直没有注意到这些问题(或者至少白帽子没有注意到这些问题)。Schneier评论说,大多数程序员都可以编写一种加密算法,程序员自己无法破解。我注意到这并不意味着更好的人不能这样做...除非作家是最好的。
布赖恩

1
考虑一下阿丽亚娜五号火箭的首次发射。有一个未被捕获的零除导致火箭被摧毁。不仅如此,有关的代码在火箭被点燃的那一刻就不再具有任何价值。想想看,如果有一个更好的程序员,他们将节省数百万美元。
罗伦·佩希特尔

44

普通的奥林匹克游泳者每小时可远行约2.5英里。

普通人(可以游泳的人)每小时可以游泳约1.5英里。

这意味着一般的奥林匹克游泳者可以在大约8个小时内游泳英吉利海峡。

那么可以肯定的是,奥林匹克游泳者比普通游泳者快60%,而普通游泳者大约需要13个小时才能完成比赛...

除非我是一名普通的游泳者,尝试游泳英吉利海峡,否则我要穿越的唯一方法就是一周后冲上岸。

编程的许多方面都像在畅游英吉利海峡。它是下沉的还是游泳的。我什至不知道10,000X更好是否真的是描述有效的已完成软件与无效的不完整软件之间区别的准确方法。


31

假设在同一团队中有一位“优秀”软件工程师和一位“普通”软件工程师。您怎样才能使一名工程师的生产率提高一万倍?鉴于他们俩都承担着各自的功能,错误和调查工作,并且始终如一地交付高质量产品,因此我对此并不十分了解。我的描述可能会证明它们高于“平均水平”吗?“大”?

对于“普通”软件工程师来说,这是很多“天赋”。实际上,出色的软件工程师可以在数小时内解决普通工程师永远无法正确解决的问题。出色的软件工程师用三分之一的代码和十分之一的错误解决了三分之一的普通问题。优秀的软件工程师的代码以O(n)运行,而普通软件工程师的代码以O(n ^ 3)时间运行。优秀的软件工程师可以在您等待时调整其解决方案,而一般的软件工程师则抱怨规范的最新更改,并表示现在要花几周才能满足新的要求。当伟大的工程师重做普通工程师的工作时,这些都是我真正看到的。


6
+1:不幸的是,问题没有得到正确的解决方案是很常见的。变通方法和离合器常常只能“解决”当前问题,但几乎可以肯定会在几周内产生更多问题,这太疯狂了。“但是那是几个星期,让我们未来的自己来解决那些问题!”
约阿希姆·绍尔

几乎不可能解决的问题的有效解决方案与非有效解决方案之间的差异趋于无限,例如,组织得以生存,破产,破产或实验室中发生爆炸并杀死所有工程师(经典电视剧情节...)等。 。
hotpaw2

@ hotpaw2:是的,我没有想到如此戏剧性的东西。我当时在想一些数学上很复杂的问题,例如像拓扑排序这样的图形计算。一个普通的工程师可能会花费数周的时间来编写一个缓慢且有问题的解决方案。一位出色的工程师将把业务需求映射到一个众所周知的问题,然后搜索已发布的库或算法。
凯文·克莱恩

9

我将尝试解决差异问题:

出色的工程师比普通工程师会做得更好:

  • 设计-生成需要较少修改且更加灵活的设计。这转化为在软件整个生命周期内的节省。
  • 功能-这些将被快速实施并变得更加清洁。
  • 错误-可以更快地找到,可以得到很好的解决,并且不会减少以后的错误。
  • 调查-将以更快的速度得出更好的解决方案和结果。

两者合计,将为公司节省大量开发时间,为公司带来大量额外机会。


4

一个优秀的程序员常常不只是“分担自己的功能,错误和调查工作”来赚钱。他们有时会退出并创立自己的公司,或者加入一家初创公司,或者开始一个新的skunkworks项目,或者在过去可能加入了举世闻名的蓝天研发实验室,并创新了一些没人认为他们甚至不需要的产品在伟大的程序员的洞察力,技能和汗水之前,可能与软件有关。

这个程序员的许多“价值”是关于按比例回报风险。程序员甚至可能因为考虑这种疯狂的软件产品而被解雇,而不是获得2倍左右的报酬。

偶尔的软件创业公司会发生什么:以百万亿美元的价格上市,或者被Google或Facebook等收购。对于类似的金额,车床操作员很少发生(尽管至少有一位成功的硅谷科技公司创始人在其车间内装有车床)。


4
“ ....以百万/十亿的价格公开上市,.....”尽管有媒体的夸夸其谈,但对于软件工程师而言,这种情况也很少发生。对于每一个“成功”的人,成千上万的人变得模糊不清和/或经历了太多的风险投资并回到了9-5天的工作,只不过口中有苦涩的味道……
mattnz

1
@mattnz:可能比该程序员的10,000X所谓的价值的10,000比1更好。
2011年

3

有些解决方案只有最好的程序员才能解决。扔数千个平庸的人是行不通的。即使他们可以集体地结合自己的知识,也很难协调他们的努力。

在SO上回答问题也没有什么不同。在许多普通开发人员中,有一个问题能够提出答案。这些网站的协调工作可能比大多数开发团队做得更好。


3

我认为有一些经验证据支持盖茨的报价。我记得读过(尽管我不记得来源),在输入池中,第5个百分位数与95%百分位数之间的输出差异(对于一个输入池很容易测量)大约是3比1。文字处理软件问世后,该比例上升到大约10或20:1,因为那些可以使用该软件高级功能的人获得了更大的相对优势。

大概对于软件开发来说,比率会更高,因为可以利用各种工具,技术等来获得更大的自由度。很难测量差异,但是大多数尝试至少要10比1,并且大概是低估了差异,因为它只是在衡量容易衡量的内容。

在诸如打字或操作车床之类的事情中,收入最高的1%的人可能已经接近达到可能的生理极限。在编程的情况下,它们显然不是(编写代码花费的时间与输入代码花费的时间之比是巨大的),因此应该有更多变化的空间。


1
哇。谈论遗漏点。任何以“键入速度”作为锚点开始的程序员生产力的度量标准都必然会产生一个精明的答案。
riwalk
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.