人月神话(2)
我不知道为什么作者要拿外科医生举例子,在我眼里足球队更合适,或者说更贴近生活,让人们更容易理解。
人的专业水平,在刚开始其实没什么可比性,试问:一个有小学学历的人和一个有初中学历的人在大公司招聘时有什么区别?而如果一个研究生,一个博士相比呢?从高处开始,人每上一个台阶,实际上,他的价值和水准就会上升数个层次。在这一章中,作者举了一个例子,一个经验丰富的程序员比一个经验少的程序员,二者的水平相同,效率却相差7倍。这就是为什么公司高管总是喜欢精英的团队而不是怀有一腔热情的普通员工。团队的配合会使这种差距不断扩大,当然,前提是任务的量没有超过这个小队所能承受的极限。
假设我现在要开始开发一款游戏,我召集了一个二十人的精英队伍,为了完成一部神作,准备花多长时间?现在的作品,动不动就有上千人投入进去,仅靠二十个人,就算他们的效率极高,是普通程序员的10倍,那也要耗费数倍的时间才能做到相同的程度。这时,要玩的人等的花都谢了。这还怎么盈利?对于大型系统,不得不用很多人,而为了概念和效率的完整性,用少数人显得更明智。陷入了死循环。
这个Mills是谁我也不清楚,总之是个专家。他提出了一个很抽象的概念。众所周知,当任务量过于庞大,分割成多数的小程序是普遍思想。他同样是这样的,只不过他的分类很有特点。就像外科医生团队:外科医生,副手,管理员,编辑,文秘,程序职员,工具维护人员,测试人员,语言专家。每个部分有一名经验丰富的专业人士,然后分配数百人在他的名下,协助他工作。由他将工作再次细分,分配给数百人。这并不代表他对负责的部分理解减少,相反,他必须清楚里面的一切,这才算真正掌控了份内的工作。
这个思路起源于上一章的人月关系。增加人数,使得效率急剧下降的实质是陌生人员间的交流耗费了绝大部分精力,单纯就工作的生成量来说,二十人与几千人显然无法比较。这样一来,增加人数的同时尽可能的简化交流就是解决问题的关键。每个部分数百人的成果汇聚到一个人的数据库中,然后这个外科医生队伍再进行首脑间的交流,简化了庞大的体系的交流时间,这才做出了高效。普通人员无需了解整个系统,概念的完整性由各部分负责人掌握,保证了程序化的流程,同时得以以上帝的视角来俯视整个程序,减少了很多不必要的工作量。
同时,这个思想的实行收束了很多员工的创造性。至于这点是好是坏,属于下章的内容。不会存在很多人投票表决的现象,因为普通员工,甚至包括负责人的意见向首席医生提交的时候,由总负责人来决断是否采用。这样一来更是减少了极多的时间。一个任务中,普通来说讨论的时间与执行的时间往往是不相上下的,上述的独断虽然有些扼杀创造性,但是却保证了系统的完整性,这才是最主要的目的。
总之,协调少数人,指挥大多数人,通过外科医生式的方案进行角色的分工和技术具有极高的效率。现在已经成为了大多公司的开发体系。这个概念看似普通,但它没有被提出的时候,想到这种方案其实也挺难的。写完我就明白了为什么不能拿足球队当做比喻了,因为足球队的各个部分很平均,没有人能独断的。
To be continue