代码改变世界

为什么软件工程师的薪水和生产力如此不成比例

2011-11-09 09:24  无名365  阅读(130)  评论(0编辑  收藏  举报

算起来软件工程师大概是全世界最特別的一种职业,因为一个最好的programmer和一个最烂的programmer,生产力相差至少10倍,有时候甚至可以高达100倍。这在其他的职业几乎是没听过的——像Jordan(麦可.乔丹)这样强的篮球运动员,平均一场比赛的生产力,顶多也只是菜鸟板凳的10倍。即使是其他脑力、创意密集的行业,例如:IC设计、建筑、商品设计等等,生产力的差別也都是在10倍的这个级别,很少达到100倍的。

但又为什么,当Jordan的薪水是NBA菜鸟的100倍,一流建筑师的费用是菜鸟的1,000倍时,最好的软件工程师,他们所赚得的却往往连新人的5倍都不到?这个问题我一直想不透。它也不是坏事,因为很久以前当我第一次发现了这个现象后,我就学会要花3倍的价钱去雇一个10倍强的工程师——多么划算的一个买卖啊!只是这件事情发生的原因,让我非常的困扰。第一,它一点都不符合经济学上「边际效应递减」的原则,你看其他职业,例如上面提到的NBA,当你要雇用一个生产力10倍的球员,你必须付出100倍的成本。更重要的是,它一点都不公平,生产力10倍的人,就算没有拿100倍的薪水,少说也应该要拿10倍的薪水。

直到昨天,读了John D. Cook(强.库克)的这篇文章:「Why programmers are not paid in proportion to their productivity」,才给我了一个天大的启发。

原来,这个发生的原因主要有两个——John其实也是引述 Joel Spolsky(乔.史波斯基,有名的Joel on Software作者)的说法:

第一,虽然全世界的工程师优劣差很多,但是同一家公司的工程师优劣却是差不多的,因为一流的工程师不可能长期忍受跟一群蠢蛋一起工作,所以迟早会离去,于是久而久之这家公司的工程师品质就会趋向一致——这也就是为什么你必须要花很多力气在团队上面。

而另一个更重要的原因,是一个好工程师的生产力,其实很难被察觉。如果你要判断一个业务好不好,那很简单,看看他的业绩就行了。你要看一个建筑工人的生产力,那也很简单,看看他多快把房子盖好就行了。以此类推,如果你要知道到一个软件工程师的生产力,就看看他写了几行程序…

大错特错!!

一个软件工程师生产力最高的时候,是当他可以少写几行程序的时候。当他可以用一些现成的东西,在很短的时间内拼凑出你需要的产品、解決方案的时候;当他可以跟你明确的沟通,不会浪费时间在开发错误的东西上的时候;当他可以正确的解读数据,然后快速的修正产品的时候。这些…

通通不是用几行程序代码去衡量的!!

问题是当一个优秀的工程师,快速的把产品凑出來,或者是很有效率的沟通时,老板的反应是什麼?99.9%都没有办法联想到这就是极致生产力的表现,然后说:「嘿!我应该帮他加薪10倍!」所以,难怪好的工程师往往没办法获得合理的报酬。

因此,如果你是创业团队,该怎么做?当然是用力的利用这个市场不平衡,把优秀的、在大公司郁郁不得志的工程师,通通都吸收到你的团队来。而这也就刚好解释了为什么EZTABLE会说:我们在找的是「人」,而不是技术。

PS.意犹未尽的人,这里有一篇Hackers vs. Coders的故事。

PPS.我超喜欢下面的讨论,比文章本身还精彩,大家千万不要错过。

原文出自:mrjamie.cc