读书笔记三
本次分享《人月神话》第五章“画蛇添足”,
本一章节令我印象最深的就是对“第二个程序的开发”
一种普遍倾向是过分地设计第二个系统,向系统添加很多修饰功能和想法,它们曾在第一个系统中被小心谨慎地推迟了。
这样一种开发思路,不免会对程序的开发造成严重的后果。
结构师如何避免画蛇添足——开发第二个系统所引起的后果?
是的,他无法跳过二次系统。但他可以有意识关注那些系统的特殊危险,运用特别的自我约束准则,来避免那些功能上的修饰;根据系统基本理念及目的变更,舍弃一些功能。一个可以开阔结构师眼界的准则是为每个小功能分配一个值:每次改进,功能 x 不超过 m字节的内存和 n微秒。这些值会在一开始作为决策的向导,在物理实现期间充当指南和对所有人的警示。
项目经理如何避免画蛇添足?
他必须坚持至少拥有两个系统以上开发经验结构师的决定。同时,保持对特殊诱惑的警觉,他可以不断提出正确的问题,确保原则上的概念和目标在详细设计中得到完整的体现。
关于本章其他的收获:
1. 尽早交流和持续沟通能使结构师有较好的成本意识,以及使开发人员获得对设计的信心,并且不会混淆各自的责任分工。
2. 结构师如何成功地影响实现:
i. 牢记是开发人员承担创造性的实现责任;结构师只能提出建议。
ii. 听取开发人员在体系结构上改进的建议。
3. 第二个系统是人们所设计的最危险的系统,通常的倾向是过分地进行设计。关于这一点也许是正确的,但是这是一个回避不了的问题,如果没有开发第二个系统经验的人,就不可能有开发第三个系统经验的人了。
这个标题起得让人摸不清头脑,其实值得是第二系统效应(second-system effect)。认识到第二个系统存在的风险,可以让架构师保持警惕,少犯错误。