1968年,有人在美国加州搞了一次编程比赛。参赛选手都是刚入行的见习程序员。他们每人得到一个小信封,里面装着一系列编程和纠错任务,他们有两个小时的工作时间。这个比赛其实是一个实验,研究者想知道最厉害的程序员到底能有多厉害。
人们之前设想,优秀程序员的工作效率大概是普通程序员的两到三倍。比赛结果不是这样的。
结果是最好程序员的编写代码速度是最差程序员的 20 倍,他排除错误(debug)的速度是 25 倍,他写出来的程序的运行速度是 10 倍。
这里的“最差”可不是偶尔遇到一位这么差的:是除了最好的,一般人都很差。硅谷的业内一般认识是 10 倍:如果你有幸能请到一位最厉害的程序员,他一个人能干的事儿相当于 10 个普通程序员。这个效应叫“摇滚明星原则( rock-star principle)”,程序员跟程序员之间的差距,就如同明星摇滚歌手和普通摇滚歌手之间的差距。
里德最近专门写文章 谈论了这个事儿,他是这么说的 ——
以前我认为,给定一个项目和固定的工资预算,我与其雇佣 10 到 25 个普通工程师,宁可请一位明星。这么多年过去,我认识到我错了。最好的程序员的价值不是 10 倍。而是 100 倍。
其实里德说的还算是保守的,比尔·盖茨的说法是 10000 倍。当然他们说的不是做同样工作的程序员,高级程序员要负责像系统架构设计这样更重要的任务,他跟普通程序员的差距是难以量化的。
这不是二八定律。这是 1 个人干 19 个人的活儿,剩下 19 个人干一个人的活。明星就是这么好使!
虽然大家都是工程师,但是一个普通的工程师和一个高级工程师。它们的差别是指数级的。我还记得,当初我进入公司的时候,老板跟我说,这个活我安排了三个工程师,他们一定做的比你一个人好,你一定要放心的让他们去做。事实的结果是什么呢?三个工程师做了半年也没有什么成绩。后来我这个主管实在看不下去了。用了一个礼拜,把它们给做出来了。老板也不相信,反复验证,我又重新做了一遍,给他们看。确实能够重复,能够实现。到现在,15年以后,依然是公司非常挣钱的一个产品。我不想说自己有多厉害,只是通过这件事情,我证明了一点,一个厉害的人和一个普通的人,它们的差别是指数级的。不是简单的二八原则,是一比100或者1:1万的区别。
这是为什么中国有句古话,"千金易得,一将难求"。钱学森为什么能抵上几个师?真是他的体力比几个师好吗?我想没有一个人会认同他的体力会超过几个师,而是他的高级工程师的思维,几个师,有可能几个军也创造不出来啊!
人与人之间,差别是很大的。不要惊诧这个差距。我们要惊诧的是,我们为什么和别人有那么大的差距?1 个人干 19 个人的活,不是说,他真的干超过19个人的活。而是说,他能够干的活,19个人,甚至100个10000个人也干不了。
网友评论