编程是一个智力劳动,智力的高低是很容易区分出来的,在一起共事久了你很容易发现,谁谁谁的编程能力比较强接受新事物比较快。但是智力的产物又是很难测量的,你不能按代码的行数或者修改Bug的数量来给程序员做绩效吧?
我刚开始工作时候,觉得自己的技术还能行,别人用两天完成事情,我可以用一天,所以我就常常想为什么不把那个用两天的程序员给辞了并把他的工资和工作量都给我,我还是可以在相同的时间把项目做完。这样,我因为获得肯定和更大的利益会更卖力的工作,工作效率会更高,公司虽然给我提高了工资(假设我们工资一样,那已经double了),但却获得更高效率的产出和减少一个人的人力资源成本(如社保、公积金什么的)。而且《人月神话》不也支持我的看法吗:项目每多一个人就会增加更大的沟通成本。
《人月神话》是布鲁克斯所写的一本软件项目管理名著,所谓“人月”就是一个人在一个月内所能完成的工作量。假如某个项目评估需要12个人月,那么4个人做这个项目理论上需要3个月,用6个人做这个项目则只需要2个月。但是,实际情况却不是如此,或者在在计算机软件行业这个换算根本行不通,所以这是一个神话。因为软件项目是交互关系非常复杂的工作,需要大量的沟通成本,人力的增加会使沟通成本急剧上升,反而无法达到缩短工期的目的(而且在实际中我们发现,人力的增加还会引入更多的BUG)。
在一个公司里,优秀程序员的产出能10倍高于普通程序员并不算很稀奇的事,我想很多人都遇到过这样的情况。那假设你就是那个优秀的程序员,为什么你这么高的产出并没有得到相应的高回报呢?不说10倍于普通程序员的工资,有时候你的工资还不如普通程序员高,对吧。
如果从公司的层面说,原因是因为公司无法对你的贡献进行量化。是的,公司不能用代码行数,不能用修改Bug的数量,不能用你写出的优美代码来衡量你的贡献,不像生产商品的车间,可以通过你做的件准确地计算你的产量,那么你的产量就是你对公司的贡献。
做为开发,很多人还会对软件销售的高收入表示不满,之前和公司的销售在上海一起参加公司培训,发现他们一年交的个人所得税都高于我们的年薪。软件是我们程序员实打实一句一句代码敲出来的,最后为什么光是动动嘴皮子的销售拿到高收入呢?也很简单,因为从公司的层面来说,销售的对公司的贡献是可以量化的,他们卖出多少套软件都可以精准地记录下来,公司只需要按一定的比例给他们提成就行了,皆大欢喜。还有公司的CEO也是可以拿到高年薪,就是因为他们对公司的贡献很容易测量,公司业绩和发展的好坏直接和CEO挂勾。
当然,光可以测量还是不够的。比如血汗工厂的工人产出可以测量,但他们的收入并不会太高,最多也就是2倍(还可能累吐血)。要获得高收入,还有一个必备条件就是可放大性。所谓的可放大性,就是你做出的决定(或者你的产出)能够产生重大的效应。公司的CEO就明显符合这两点。
所以,要致富,你需要两样东西:可测量性和可放大性。
那么做为一个程序员,怎么才可以让自己获得这两样东西呢?很明显,在一个大公司里做程序员,那怕你很优秀,你的贡献也会被平均。所以越大的团队,其实越不利于你获得高回报。《黑客与画家》的作者保罗·格雷厄姆说,这个团队越小越好,最多也不要超过10个人,不然优秀的程序员会被很多贫庸人平均掉他的高产出。而团队很小的话,而且如果大家都很优秀的话,优秀的你也不会在意和其他优秀的人一起平均。所以保罗很推崇小的互联网创业公司,认为你在里面工作很容易获得可测量性和可放大性。
OK,其实说了这么多,我是想推荐程序员一定要看一下《黑客与画家》这本书。也许你对那种非法入侵别人系统的“黑客”不感兴趣,而实际上书中所指的黑客(Hacker)并不是这种入侵系统的破坏者(Cracker)。早在我上大学的时候,我还在一本国内的“黑客”杂志做过编辑,不过从那时开始到看这本书,我其实都一直误解黑客。
hack其实可以指很巧妙或很便捷的解决方法(cool hack),也可以指比较笨拙、不那么优雅的解决方法(ugly hack)。而完成这种hack的过程就被称为hacking,而从事hacking的人就是hacker。如比尔盖茨、乔布斯都是黑客。
而我们传统理解那种非法入侵系统的人,在正统黑客的眼里只能叫破坏者(Cracker)而不能称之为黑客,这种普遍的误解也是由于上个世纪80、90年代的媒体为了博眼球故意曲解黑客的原意而造成的。
这本书,很有意思,从中学里受欢迎的人和不受欢迎的书呆子开始,慢慢的颠覆你的思想。而且,我也认为其实优秀的程序员应该去做“画家”,而不是一个手艺工人。