人月神话2
最好的团队组成应该是类似外科手术队伍结构——领头羊只能有一个,其他人辅助它来完成任务。没有高低贵贱,只是分工不同。这样我们能够获得减少沟通,提交生产效率等等诸多好处,而且最重要的是我们将获得概念的完整性。
将设计交由一个人或者非常少数忽悠默契的人来完成才能保证概念的完整性,而将体系结构,设计实现和物理实现相分离则是获得概念完整性的强有力方法,这一点契合了我们现在已经作为常识的“关注点分离”理念。
在本话题的相关章节中最让笔者印象深刻的是作者在第四章开篇序言中就以建筑业举例——建筑大师需要:
- 首尾融会贯通其前辈建筑师的成果
- 同时完全掌握他们那个时代的建筑技术
- 最后还要能够恰如其分地运用这些技术,避免轻浮地炫耀,并绝不花哨。
作者将巴比伦塔失败的原因之一归结于缺乏交流,缺乏组织。而我们能从中得来的教训之一在大型软件开发,要无比重视交流的重要性。本书初版之后四十余年的现在,人们所发明的很多技术和规范很大程度上都是为了加强“交流”,减少不必要的交流,增加交流的效率——团队组织的目的是减少所需的交流和合作的数量。制定规范也是。
正如作者直接在文中以文字形式表达的“交流和交流的结果——组织,是成功的关键”。但我们要谨记交流和组织的技能需要锻炼,相关经验的积累和能力的提高同软件技术本身一样重要,不要因为一时的失败而放弃,也不要因为成绩而固步自封。
对于交流,文档这一工具起着非常大的作用,例如项目经理的基本职责是使每个人都向着相同的方法前进,所以其主要职责是沟通,而不是做决定。因此他需要大量的文档来极大减轻他的负担 。