为什么软件工程师的薪水和生产力如此不成正比?
算起来软件工程师大概是全世界最特别的一种职业,因为一个最好的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. 我超喜欢下面的讨论,比文章本身还精采,大家千万不要错过。
(Image via scobleizer, CC license)
转载请注明:文章来自36氪。