《人月神话》读后感
概念完整性
最好的团队组成应该是类似外科手术队伍结构——领头羊只能有一个,其他人辅助它来完成任务。没有高低贵贱,只是分工不同。这样我们能够获得减少沟通,提交生产效率等等诸多好处,而且最重要的是我们将获得概念的完整性。
将设计交由一个人或者非常少数忽悠默契的人来完成才能保证概念的完整性,而将体系结构,设计实现和物理实现相分离则是获得概念完整性的强有力方法,这一点契合了我们现在已经作为常识的“关注点分离”理念。
在本话题的相关章节中最让笔者印象深刻的是作者在第四章开篇序言中就以建筑业举例——建筑大师需要:
- 首尾融会贯通其前辈建筑师的成果
- 同时完全掌握他们那个时代的建筑技术
- 最后还要能够恰如其分地运用这些技术,避免轻浮地炫耀,并绝不花哨。
以上三点,笔者觉得不仅仅适用于建筑行业,在任何行业的有志之人都需要谨记这三条法则,才能创造出杰出之作。那些喊着创新,革命的,借用郭德纲的一句话——"拿着痰桶炒菜,你打算自己享用吗?"
巴比伦塔的失败
作者将巴比伦塔失败的原因之一归结于缺乏交流,缺乏组织。而我们能从中得来的教训之一在大型软件开发,要无比重视交流的重要性。本书初版之后四十余年的现在,人们所发明的很多技术和规范很大程度上都是为了加强“交流”,减少不必要的交流,增加交流的效率——团队组织的目的是减少所需的交流和合作的数量。制定规范也是。
正如作者直接在文中以文字形式表达的“交流和交流的结果——组织,是成功的关键”。但我们要谨记交流和组织的技能需要锻炼,相关经验的积累和能力的提高同软件技术本身一样重要,不要因为一时的失败而放弃,也不要因为成绩而固步自封。
对于交流,文档这一工具起着非常大的作用,例如项目经理的基本职责是使每个人都向着相同的方法前进,所以其主要职责是沟通,而不是做决定。因此他需要大量的文档来极大减轻他的负担 。
未雨绸缪
人们总是希望一切的事情都尽在掌握之中,所以总是试图在制定完美计划之后一路顺风顺水地执行下去。但是软件维护是一个提高混乱度(增加熵)的过程,所以出现前进两步,后退一步;甚至前进一步,后退一步都是很正常的。而且随着维护的深入,会发现用在修复原有设计上瑕疵的工作量越来越少,而早期维护活动本身所引起的漏洞的修复工作越来越多。正如大思想家斯宾塞·约翰逊曾经说过“唯一不变的是变化本身”,我们要为变更设计系统,为变更计划组织架构。