最高产程序员的生产力是普通程序员的好几倍。但是在任何公司,薪水通常在相当小的范围内变动。即使在整个行业,工资也相差不是很大。如果一些程序员的产量是别人的十几倍,那为什么得到的薪水不是别人的十几倍呢?
对这个问题,JoelSpolsky在他的播客中给出了两个解释。第一,整个行业中,程序员的生产力可能大不相同,但在同一个公司内部,这种差别却不大。那些比他的同事多产十几倍的程序员有可能离开公司,或者与其他很有才华的程序员共事,或者自立门户;第二,极端的多产可能不明显。这条播客详细说明第二个原因。
如果一个程序员的生产力比他同事高十几倍,他怎么会不被注意到呢?在一些职业这样的差别可能会很明显。销售量是同事十几倍的销售员会受到关注,并会得到相应的报酬。销售量是容易衡量的,而且一些销售比其他人多赚成倍的钱。
如果一位砖瓦匠比同事有十几倍的能干,这也会很明显,但是这并没有发生:最好的砖瓦匠也不能比普通的砖瓦匠多垒十几倍的砖。软件的产出不像美元和砖那样容易衡量。最优秀的程序员也不能编写十几倍于他人的代码,而且工作时间也达不到他人的十几倍。(编注: “一个优秀程序员的效率会是一个普通程序员的十倍之上”,参见《一些鲜为人知的编程真相》。)
当程序员不用写代码时是他们最有效率的时候。他们可能发现,待解决的问题根本不需要解决,因为用户所要求的实际上并非用户想要的。他们可能知道在哪里找到能解决问题的可复用代码或重新编辑的代码。他们可能会使用现成的代码。
但是,就在他们编写代码最富有成效的时候,也没有人说:“哇!比起用那种困难的方式去解决,你高效100多倍。你理应加薪。”他们最多会说:“好主意!”然后继续工作。这可能需要花费一小段时间去认识到一些人照例地提出这种节省时间的意见。或者消极的说,要认清一些人编程过程中动作很大,但办不了什么实事儿可能需要花费一段时间。
顶级程序员的完美形象是,Ta在开发项目时,打开编辑器(Emacs),像机关枪一样快速编写代码,从零开始最终给出一个完美的产品。一个更为精确的形象是,Ta静静地凝视空白处,几分钟然后说:“嗯,我想我曾经看过与这类似的。”
译文链接:http://www.jobbole.com/entry.php/558
英文原文:http://www.johndcook.com/blog/2009/12/23/why-programmers-are-not-paid-in-proportion-to-their-productivity/
【编辑推荐】