"人月是危险的带有欺骗性的神话,因为它暗示人员数量和时间是可以相互替换的。" —— 即在某些任务中,不要以为1个人花10个月才能完成的任务(10人月)换成10个人就能在1个月完成;
本书每章都是独立的短文,书中的第18章:《人月神话》的观点:是与非?对前面每章的观点做了总结;
外科医生是超级程序员,亲自负责设计、编码、技术文档、测试,其它全是打下手的,类似外科手术;
好处就是系统是一个人或者最多两个人思考的产物,达到概念一致性;而当规模大到需要200人时,只需要组织每个团队的超级程序员沟通——仅20人,大大降低沟通成本和提高效率;
这种组合也基于一个“事实”,超级程序员的效率是菜鸟的10倍;
3. 贵族专制:为了获得概念完整性,设计必须由一个人或者具有共识的小型团队来完成;
4. 画蛇添足:设计第二个系统是最危险的,往往会过分设计;
5. 文档出于精确性,需要形式化定义,出于理解性,需要记叙性定义;但只能选其中一种作为标准,另一种为辅助;
6. 项目工作手册:不是一篇独立的文档,是对项目必须产生的一系列文档进行组织的一种结构,项目所有文档都必须是该结构的一部分,每个团队成员都应该能看到;
每个子项目具有两个领导角色——产品负责人、技术主管或结构师;
10.新的概念和技术不断涌现,必须计划构建一个实验性系统然后抛弃它,不要将原型直接丢给客户;
11.个性化的工具妨碍沟通,开发和维护公共的通用编程工具效率更高;
12.通过剔除bug的设计、构件单元调试、系统集成调试来保证系统可运行;
14.文档可防止记忆衰退导致失去对程序的了解;
不同的用户需要不同的文档;
自文档化(self-documenting)的程序,即将文档整合到源程序中;
记录下一些印象深刻的观点:
“任何创造性活动都伴随着枯燥艰苦的劳动。”
“良好的烹饪需要时间,某些任务无法在不损害结果的情况下加快速度。”
“概念完整性是系统设计中最重要的考虑因素。”
“团队组织的目标是为了减少必要的交流和协作量。”
“培养开发人员从系统整体出发、面向用户的态度是软件编程管理人员最重要的职能。”
“数据的表现形式是编程的根本。”
“项目经理的基本职责是使每个人都向着相同的方向前进。”
“项目经理的主要日常工作是沟通,而不是做出决定。”
“软件产品易于掌握的特性和不可见性,导致它的构建人员(特别容易)面临着永恒的需求变更。”
“缺陷修复总会以20%~50%的几率引入新的bug。”
“调试是系统编程中较慢和较困难的部分,而漫长的调试周转时间是调试的祸根。”
“系统调试(相对于单元测试)所花的时间会比预料的更长。”
“里程碑必须是具体的、特定的和可度量的事件,能进行清晰地定义。”
“即使对于完全开发给自己使用的程序, 描述性文字也是必需的,因为它们会被用户----作者所遗忘。”
“程序修改人员所使用的文档中,除了描述事情如何以外,还应阐述它为什么那样。对于加深理解,目的是非常关键的,但即使是高级语言的语法,也不能表达目的。1. 分享思维导图主要应用在哪些方面?