人月神话阅读笔记02
第四章-贵族专制、民主政治和系统设计。作者认为在系统设计中,概念完整性应该是最重要的考虑因素。就是说,为了反映一系列连贯的设计思路,您可省略写不规则的特性和改进,也不提倡独立和无法整合的系统,哪怕它们其实包含着许多很好的设计。概念的完整性要求设计必须由一个人,或者非常少数互有默契的人员来实现。虽然作者不认为只有结构师才有好的创意,新的概念经常来自实现人员或者用户。但是系统的概念完整性决定了其使用的容易程度。结构师一直处在解决用户问题,实现用户利益的核心地位。若要得到系统概念上的完整性,必须有人控制这些概念。这实际上是一种无需任何歉意的贵族专制统治。
第七章-为什么巴比伦塔会失败。据《创世纪》记载,巴比伦塔是人类继诺亚方舟之后的第二大工程壮举,同时,其也是第一个彻底失败的工程。这个故事在很多方面和不同层次都是非常深刻和富有教育意义的。他们有清晰的目标、充足的人力和材料、有足够的时间和技术,最后还是失败了。作者认为是两个原因,其一是交流;其二是交流的结构——组织。他们无法相互交谈,从而无法合作。交流的缺乏导致了争辩、沮丧和群体猜忌。很快,部落开始分裂。确实很多时候,尤其大一点的项目,沟通是很大的成本,费事费力,项目经理和架构师意见不和还会内耗。作者推荐小型团队的模式是技术主管作为总指挥,产品负责人充当其左右手,合理的组织是成功的关键。交流和组织的技能需要管理者仔细考虑,相关经验的积累和能力的提高同软件技术本身一样重要。
第十四章-祸起萧墙。当人们听到某个项目的进度发生了灾难性的偏离时,可能会认为项目一定遭受了一系列重大灾难。然而,灾祸来自白蚁的肆虐,而不是龙卷风的侵袭。同样,项目进度经常以一种难以察觉,但是残酷无情的方式慢慢落后。这个真的深有感触,一般都是很小的地方跟自己说,这个地方有特殊处理先放一下,那个地方回头再测试,结果最后报进度的时候就落后了。这个主要还是靠项目经理把握,有些明确的节点一定要亲自检查成果并及时调整计划,不然后果不堪设想。
第十六章-没有银弹。狼这种民间传说中存在的怪物,会在月圆之夜由我们熟悉的人类面孔变成可怕的狼脸。我们熟悉的软件项目也有着人狼的特性,看似简单明了的外表,但是却可能随时变成一个进度落后、超出预算、存在大量缺陷的怪物。在民间传说中对付人狼唯一可靠的武器就是银弹。所以银弹在软件项目中就是比喻这种使得软件成本像计算机硬件成本一样迅速降低的尚方宝剑。然而,作者在40年前悲观的告诉我们,没有银弹。40年后我们回首望去,这个预言恐怕是真的。在软件开发中存在着4个天生的根本困难——复杂度、一致性、可变性和不可见性。现代软件工程中通过高级语言、分时系统、面向对象程序设计、使用开源库、敏捷开发等新的理论实践不断在克服软件开发中的次要困难,同时也减轻了一些根本困难。但始终不能消除软件复杂度这样的根本性困难。因为随着软件工具能力不断的提升,软件开发中需要面对的复杂度其实也是在不断提升的。所以,我们在软件生产效率上的提升需要的是逐步的进步,而不是期待一个一蹴而就的突破。
最后是作者做的一个小总结:软件工程的焦油坑在将来很长一段时间内会继续使人们举步维艰,无法自拔。软件系统可能是人类创造中最错综复杂的事物,只能期待人们在力所能及的活在刚刚超越力所能及的范围内进行探索和尝试。这个复杂的行业需要:进行持续的发展;学习使用更大的要素来开发;新工具的最佳使用;经论证的工程管理方法的最佳应用;良好的自我判断以及能够使我们认识到自己的不足——上帝所赐予的谦卑。