第三章 外科手术团队
由一流人才组成的小型、精干的团队是非常高效的。优秀的程序员和较差的程序员的生产率有10倍之差!“需要协作沟通的人员数量影响着开发成本,因为成本的主要组成部分是相互的沟通和交流”。所以,在一般的中小型系统开发中,应该由尽可能少的人来开发,这是小型精干团队的优势。但是,在面对大型系统时,小型团队的生产率是有限的,“它太慢了”!
为什么会慢,布鲁克斯用了OS/360的开发规模来很好的描述了上述的问题:OS/360项目的总投入成员超过1000人,从1963年到1966年,总工作量花费了大约5000个人年。如果人月可以等量互换的话,假设200个人的团队,那么需要25年的时间,才能完成OS/360产品的开发。假设一个精干的10人小团队,每个人的开发效率是一般程序员的7倍,整体生产率的改进因子再提高7倍,那么5000/(1077)=10,这个10人小团队需要10年才能完成5000人年的工作。“一个产品在最初设计的10年后才出现,还有人会对它感兴趣吗”?“或者它是否会随着软件开发技术的快速进步而显的过时呢”?
对于系统的开发效率以及概念完整性来说,由少数干练的人员来设计和开发是最合适的。这也是小型系统能够保持高效和概念一致性的原因。但是对于大型系统来说,开发的困难度以及业务的复杂度,需要投入大量人手才能在时间上满足要求。
如何让小型精干的团队来开发,又能在时间上满足要求呢?
书上的建议是将大型项目的每一个部分由一个团队进行解决,而每个团队,则以类似外科手术团队的方式组建。每个团队都有一个主负责人(外科医生)进行操刀,由主负责人统一设计和思想,团队内部剩余成员分工明确各司其职,既保证了概念完整性,也保证了高效率的工作输出。整个系统的设计,则由各个团队负责操刀的外科医生共同进行讨论与输出,决定设计的人员就能控制在少数人的思路上,从而客观地实现整个系统的概念完整性。
每个人都拿着锤子,只要看到钉子就上去一通乱锤,钉子要么锤歪要么锤断。这种一拥而上的工作是高成本而且低效的。若要保证钉子锤的又稳又准,就应该只由一个人拿着锤子,他来指挥剩余的人放钉子,一锤定“型”。