人月神话读书笔记二

外科手术队伍

  领头羊只能有一个,其他人辅助它来完成任务。没有高低贵贱,只是分工不同。最好的团队组成应该是类似外科手术队伍结构,这样我们能够获得减少沟通,提交生产效率等等诸多好处,而且最重要的是我们将获得概念的完整性。将设计交由一个人或者非常少数忽悠默契的人来完成才能保证概念的完整性,而将体系结构,设计实现和物理实现相分离则是获得概念完整性的强有力方法,这一点契合了我们现在已经作为常识的“关注点分离”理念。在本话题的相关章节中最让笔者印象深刻的是作者在第四章开篇序言中就以建筑业举例——建筑大师需要

  1. 首尾融会贯通其前辈建筑师的成果
  2. 同时完全掌握他们那个时代的建筑技术
  3. 最后还要能够恰如其分地运用这些技术,避免轻浮地炫耀,并绝不花哨。

巴比伦塔的失败

    作者将巴比伦塔失败的原因之一归结于缺乏交流,缺乏组织。而我们能从中的来的教训之一在大型软件开发,要无比重视交流的重要性。本书初版之后四十余年的现在,人们所发明的很多技术和规范很大程度上都是为了加强“交流”,减少不必要的交流,增加交流的效率——团队组织的目的是减少所需的交流和合作的数量。制定规范也是。

未雨绸缪

         作者指出,软件工程,绝非如传统的农业生产或工业生产那样,通过人和时间的累加就可以扩大生产规模或加快生产效率。作者通过巴别塔的失败形象的指出沟通是有成本和损耗的。 麦克斯韦尔的小妖,曾经貌似不需要做功,只需要思考判断,就可以有序化冷热分子。现在我们都知道,这个小妖实际是做了功了,它的思考就是在做功。在1948年,香农将热力学的熵,引入到信息论,被称为香农熵。也就是说,信息,思考和沟通,是做功的,是有成本的,对它们作用的系统是有损耗的。 软件工程,是一项集体进行的思想创作的“复杂性”工程。这项工程在集体协同创作中,必然存在内部成员的沟通,这个沟通必然会产生沟通成本,当沟通成本增长到一定时,就会造成整个工程无法承受而失败。多个成员之间网状的沟通成本的增长,也并非是线性增长关系,这种情况下,当沟通成本增长进行时,你或许无法及时控制住它穿越高压线。 作者通过用建筑物的设计建设启发你,可以设立一个顶级建筑设计师领导项目(例如贝聿铭的建筑设计项目),是一个可以借鉴的处理集体性思想(艺术)创作的方法,但也同时告知了你,设计之外,软件工程的建设(即编码)仍然是一个思想创作的过程,而非建筑物施工可以比拟的。 作者又通过外科手术启发你,除了定位成顶级设计师的外科首席医生外,外科医生必须是项目的主要实施人,并需要多个角色的助手。

  软件工程对于我们现在来说,仅仅是王老师布置的一个程序题,还接触不到更深层次的东西,但是只要是编程其思想都不会变,一个大的工程也是由一个个简单程序构成的。

 

 

posted @ 2020-02-02 21:01  烈日灼心h  阅读(96)  评论(0编辑  收藏  举报