最值得记住的句子

布鲁克斯用最简洁的语言总结出软件开发的核心规律,每一句都是用IBM System/360项目的血泪换来的

向进度落后的软件项目中增加人手,只会使进度更加落后。

这就是著名的"布鲁克斯法则"。新加入的人需要时间熟悉项目,而教他们的人原本就在关键路径上。沟通成本随着人数平方级增长,但产出不会线性增长。

人月是一个危险和带有欺骗性的神话,因为它暗示人员数量和时间是可以相互替换的。

9个女人不能在1个月内生出孩子。有些工作本质上是序列的,不能并行化。软件开发中的很多任务都有这种特性——需要前一步完成后才能进行下一步。

没有银弹能够消除软件开发中的本质复杂性。

技术工具可以解决偶然复杂性(比如内存管理、语法错误),但软件的本质复杂性——需求理解、系统设计、集成测试——不是任何工具能够消除的。期待某个新技术彻底解决软件开发问题,是不现实的。

概念完整性是系统设计中最重要的考虑因素。

一个系统应该反映一套统一的设计理念,而不是各个部分设计师不同理念的拼凑。宁要一个人设计的平凡系统,也不要委员会设计的华丽系统。概念完整性比功能丰富性更重要。

外科手术式团队的结构,是解决大型项目人力配置问题的最佳方案。

让少数顶尖程序员负责核心设计和实现,其他人提供支持——就像外科手术中主刀医生和助手的关系。这样既能保持概念完整性,又能充分利用人力资源。

计划丢弃一个;无论如何你都要这样做的。

第一次实现往往是探索性的,会有很多设计缺陷。与其试图修修补补,不如承认这个现实,在第一个版本的基础上重新设计第二个版本。

沟通是大型编程项目中的关键,工作的努力应该针对沟通以及沟通的结果——组织。

技术问题往往可以解决,但沟通问题会杀死项目。随着团队规模增长,保持有效沟通变得越来越困难,这才是大型项目失败的主要原因。

这些句子不是鸡汤,而是布鲁克斯用IBM System/360项目的惨痛经历换来的。每一句都直指软件开发的核心约束,值得每个技术人员深入思考。

同分类继续看