程序员的绩效与代码行数
一位读者写道:
我是一个软件工程师。对于任何一个从事于这个领域的人,这有一个众所周知而且毫无疑问的事实:最有效率最专业的程序员的产能会比最差的那个高上 1000倍。如果这个看起来不太可能,请记住,如果一个程序员写出了很多bug而需要其他程序员去修改,那他的生产率是负的。而且除非他造成的破坏性已经 产生后果,否则你很难发现问题所在。我过去曾给专业的程序员上课,即使在我的这些学生中,你也可以很容易的发现这种事实。
我没有发现哪个企业,不管在哪 — 即使在硅谷 –也没有一个企业能把对程序员的工资等级差异化到接近一个数量级的程度,更别说三个了。事实上,我们更倾向的做法是辞退或拒绝考虑任何超过35岁的人。给出的理由就是他们要求更多的钱。
在某种程度上讲这是有些道理的。如果你不能区分哪一个更好,你就该要那个便宜的。你实在是太难去评估一个程序员的效能了。
跟其他的人相比,一个好的程序员能用更精简的代码和更少的时间解决一个问题。所以你不能按代码行数和所花的时间来评估。按Bug数也不行 — 对于其他程序员,当看到有人漂亮的解决了一个问题后,都会确信自己也会这样的解决这类问题。不止一次的,当我按时的不带一点差错的做完一个任务后,我就会 被告知:因为那是个任务太简单。而同时,逾期未完的团队因为一周的通宵加班表现出来的敬业和苦干精神而受到嘉奖。完成了工作的优秀程序员也许并不知道他所 解决的问题对于其他的同事来说有多么的困难。
在一个公司里,你赢得了声誉,大家看到了你的工作。但你写的程序是商业机密,他们不可能轻易的让你把它们带走。不论你是好是差,打算雇你的人都看不到你的更详细的作品。他们可能会通过让你在白板上写几行代码的形式来筛选你,但这种事情就像是让钢琴师为观众用嘴哼出曲子。
我觉得印度外包产业所创造的一个辉煌成就就是放弃追求最好的程序员的思想。(我并没有侮辱印度软件工程师的意思 — 他们有很多人都很优秀,但单从数字上讲,我可以确信的说,如果他们能有像美国人那样多的机会,他们一定会从事其它行业。)人们知道,如果你能在印度雇到 20个普通的程序员,你的报价可以压的很低,即使他们花了20倍的努力完成任务,你的成本是一样的,软件的交付也是可预料的。相对于判断你招的那个程序员 究竟是高手还是低手来说,判断这20个程序员要多少时间完成任务还是更容易些。用20个普通的程序员,也许会用掉你两倍的时间。用一个程序员,也许只需要 一个普通团队花的时间的二十分之一,也许会是100倍。
[英文出处]:Paying The Experienced Hand Less, Ctd
[译文来源]:外刊IT评论