《人月神话》读书笔记之二:效率
注:
本文为《我的读书笔记之人月神话》系列的第二篇,欢迎指正。
=============================================================
效率一直是困扰每个团队,特别是项目经理的一个大问题。作者从他数十年的项目经验(大部分是硬件或硬软件结合,但也适用于纯软件)中总结了若干模式,用于有效提升大型项目的开发效率。让我们一起略窥究竟。
对于大型的团队,作者提出了一个“外科医生”的模型,即:
将整个系统(项目)划分为若干子系统,每一部分由一个独立的团队承担,每个团队采取类似外科手术的操作方式进行开发:一个外科医生(首席程序员,有决定权),护士(副手,熟悉系统,和别的团队沟通交流),管理员(控制财务、人员、工作地点等的机构管理),编辑(文档维护),程序员,测试员,专家,其他人员(……)
通常对10人左右的编程团队而言,上述角色分工就足够了,其中管理员和专家可以同时为多个团队服务。团队间的协调,也因人数(外科医生)的减少而提高了效率。
这样就提出了一些新的问题:如何保证整个系统设计概念的完整性?
简单的来回答就是:需要系统架构师对整个系统系统的完整性进行比较好的设计和拆分。
一步一步来看:
我们的终极目标是:易用性(simplicity)。而衡量系统设计的最终测试标准是:功能与理解上复杂程度的比值。
这就要求我们用最简洁和直接的方式来处理业务,同时易用性需要设计的一致性和概念的完整性。
关于系统概念的完整性有若干点值得注意:
- 要求必须由少数结构师来决定,其余人员则可以在有限制的范围内更加有效的发挥创造力(没有规矩,不成方圆)
- 要求系统只反映唯一的设计理念,用户所见的技术说明来自少数人的思想
结构师是需求的确定者和系统特征的确定者,拥有决定权。
这个很好理解,这个世界总是由少数人领导大部分人的。
对于中间可能出现的一些问题,作者也做了详尽解释:
- 当估算过高时,需要削减设计或建议用成本更低的实现方式
- 过度设计
削减设计对于架构师而言是件很痛苦的事情,但有时候我们不得不如此。换低成本的实现方式只是建议,因为架构师不应该牵扯到具体的内部实现当中去。
这个和上面的有一点区别,前者更多的是出于经济和预算方面的考虑,这里是指年轻的(指经验不丰富,尤其是在开发第二个系统时)架构师会对系统有一些过多的修饰功能和想法。这时应根据系统的基本理念和目的变更,舍弃一些功能。
特别对于项目经理的建议:
坚持至少拥有两个以上系统开发经验的结构师的决定;保持对特殊诱惑的警觉,确保原则上的概念和目标再详细设计中得到完整的体现。
暂告一段落。
[...] 《人月神话》读书笔记之二:效率 [...]
July 1st, 2008 at 11:03 pm