《人月神话》

来源:互联网 发布:ipad推荐 知乎 编辑:程序博客网 时间:2024/05/01 15:28



作者:Frederick Brooks

"人月是危险的带有欺骗性的神话,因为它暗示人员数量和时间是可以相互替换的。" ——即在某些任务中,不要以为1个人花10个月才能完成的任务(10人月),换成10个人就能在1个月完成;


本书每章都是独立的短文,书中的第18章:《人月神话》的观点:是与非?对前面每章的观点做了总结;



核心观点:
  1. 人月有时无法替换,增加人手只会更糟
  2. 外科手术队伍(10人):外科医生、管理员+秘书、编辑+秘书、副手、程序职员、工具维护人员、测试人员、语言专家;
    外科医生是超级程序员,亲自负责设计、编码、技术文档、测试,其它全是打下手的,类似外科手术;
    好处就是系统是一个人或者最多两个人思考的产物,达到概念一致性;而当规模大到需要200人时,只需要组织每个团队的超级程序员沟通——仅20人,大大降低沟通成本和提高效率;
    这种组合也基于一个“事实”,超级程序员的效率是菜鸟的10倍;
  3. 贵族专制:为了获得概念完整性,设计必须由一个人或者具有共识的小型团队来完成;
  4. 画蛇添足:设计第二个系统是最危险的,往往会过分设计;
  5. 文档出于精确性,需要形式化定义,出于理解性,需要记叙性定义;但只能选其中一种作为标准,另一种为辅助;
  6. 项目工作手册:不是一篇独立的文档,是对项目必须产生的一系列文档进行组织的一种结构,项目所有文档都必须是该结构的一部分,每个团队成员都应该能看到;
    组织架构:每个子项目具有两个领导角色——产品负责人、技术主管或结构师;
    • 产品负责人(项目管理):组建团队、划分工作、制定进度表、争取资源、建立内部沟通和报告方式、确保进度实现
    • 技术主管(纯技术):系统设计、提出技术解决方案
  7. 时间估算:工作量是规模的幂函数
  8. 控制程序空间规模;
  9. 通过关键文档进行项目管理;
  10. 新的概念和技术不断涌现,必须计划构建一个实验性系统然后抛弃它,不要将原型直接丢给客户;
  11. 个性化的工具妨碍沟通,开发和维护公共的通用编程工具效率更高;
  12. 通过剔除bug的设计、构件单元调试、系统集成调试来保证系统可运行;
  13. 警惕慢性进度偏离;
    使用PERT或关键路径判断关键偏离
  14. 文档可防止记忆衰退导致失去对程序的了解;
    不同的用户需要不同的文档;
    自文档化(self-documenting)的程序,即将文档整合到源程序中;