一位出色的车床操作员的薪水是普通车床操作员的几倍,但是一位出色的软件代码编写者的价值是普通软件编写者价格的10,000倍。- 比尔盖茨
假设在同一团队中有一位“优秀”软件工程师和一位“普通”软件工程师。您怎样才能使一名工程师的生产率提高一万倍?鉴于他们俩都承担着各自的功能,错误和调查工作,并且始终如一地交付高质量产品,因此我对此并不十分了解。我的描述可能会证明它们高于“平均水平”吗?“大”?
一位出色的车床操作员的薪水是普通车床操作员的几倍,但是一位出色的软件代码编写者的价值是普通软件编写者价格的10,000倍。- 比尔盖茨
假设在同一团队中有一位“优秀”软件工程师和一位“普通”软件工程师。您怎样才能使一名工程师的生产率提高一万倍?鉴于他们俩都承担着各自的功能,错误和调查工作,并且始终如一地交付高质量产品,因此我对此并不十分了解。我的描述可能会证明它们高于“平均水平”吗?“大”?
Answers:
报价的重点不是一个生产力提高一万倍,而是一个生产力的价值高出一万倍。软件具有独特的条件,即有缺陷的设计或实现可能会休眠数年(被错误加工的零件通常只会“不起作用”并且无法进入现场),直到产品的生命周期才失效。一天,它在棘手的情况下昂首挺胸。
每个人都应该熟悉修复从设计到实施到测试再到生产再到维护的缺陷所需要付出的代价。
当您考虑可能的责任以及企业声誉时,很容易得出结论:知道足够多可以避免问题的开发者的价值是无知或天真地实施不良解决方案的开发者的10,000倍。
编辑(2014年春季):“严重失血”
假设在同一团队中有一位“优秀”软件工程师和一位“普通”软件工程师。您怎样才能使一名工程师的生产率提高一万倍?鉴于他们俩都承担着各自的功能,错误和调查工作,并且始终如一地交付高质量产品,因此我对此并不十分了解。我的描述可能会证明它们高于“平均水平”吗?“大”?
对于“普通”软件工程师来说,这是很多“天赋”。实际上,出色的软件工程师可以在数小时内解决普通工程师永远无法正确解决的问题。出色的软件工程师用三分之一的代码和十分之一的错误解决了三分之一的普通问题。优秀的软件工程师的代码以O(n)运行,而普通软件工程师的代码以O(n ^ 3)时间运行。优秀的软件工程师可以在您等待时调整其解决方案,而一般的软件工程师则抱怨规范的最新更改,并表示现在要花几周才能满足新的要求。当伟大的工程师重做普通工程师的工作时,这些都是我真正看到的。
一个优秀的程序员常常不只是“分担自己的功能,错误和调查工作”来赚钱。他们有时会退出并创立自己的公司,或者加入一家初创公司,或者开始一个新的skunkworks项目,或者在过去可能加入了举世闻名的蓝天研发实验室,并创新了一些没人认为他们甚至不需要的产品在伟大的程序员的洞察力,技能和汗水之前,可能与软件有关。
这个程序员的许多“价值”是关于按比例回报风险。程序员甚至可能因为考虑这种疯狂的软件产品而被解雇,而不是获得2倍左右的报酬。
偶尔的软件创业公司会发生什么:以百万亿美元的价格上市,或者被Google或Facebook等收购。对于类似的金额,车床操作员很少发生(尽管至少有一位成功的硅谷科技公司创始人在其车间内装有车床)。
我认为有一些经验证据支持盖茨的报价。我记得读过(尽管我不记得来源),在输入池中,第5个百分位数与95%百分位数之间的输出差异(对于一个输入池很容易测量)大约是3比1。文字处理软件问世后,该比例上升到大约10或20:1,因为那些可以使用该软件高级功能的人获得了更大的相对优势。
大概对于软件开发来说,比率会更高,因为可以利用各种工具,技术等来获得更大的自由度。很难测量差异,但是大多数尝试至少要10比1,并且大概是低估了差异,因为它只是在衡量容易衡量的内容。
在诸如打字或操作车床之类的事情中,收入最高的1%的人可能已经接近达到可能的生理极限。在编程的情况下,它们显然不是(编写代码花费的时间与输入代码花费的时间之比是巨大的),因此应该有更多变化的空间。