“史前史中,没有别的场景比巨兽门在焦油坑中垂死挣扎的场面更令人震撼。上帝见证着恐龙、猛犸象、剑齿虎在焦油中挣扎。它们挣扎得越猛烈,焦油纠缠得就越紧,没有哪种猛兽足够强壮或具有足够的技巧,能够挣脱束缚,它们最后都沉到了坑底。”------《人月神话》
在过去,大型系统开发就如同一个焦油坑,很多大型强壮的动物在其中剧烈地挣扎,他们中大多数开发出了可运行的系统,但是只有非常少数的项目满足了目标、时间进度和预算的要求。各种各样的团队,大型的、小型的、庞杂的、精干的,一个接一个淹没在了这个焦油坑中。表面上看起来好像没有任何一个单独的问题会导致困难,每个都能被解决,但是当它们相互纠缠和累积在一起的时候,就变成了巨大的、令人难以寸进的麻烦。
解决这类麻烦,需要诸多的要求和准备。首先,要有合理的时间进度,不合理的时间进度是造成项目滞后的最主要原因。其次,还需要一个外科手术队伍,这种团队满足了迫切性的需求,能使团队达到客观的一致性,并能使成员之间的简单交流成为可能。
根据巴比伦塔的故事,能得出一些重要的关于工程项目的教训。它拥有清晰的目标、充足的人力、丰富的材料、足够的时间、足够的技术,但是,它缺少交流以及交流的结果——组织。他们无法相互交谈,从而无法合作。当合作无法进行时,工作陷入了停顿。通过史书的字里行间,我们推测交流的缺乏导致了争辩、沮丧和群体猜忌。很快,部落开始分裂——大家选择了孤立,而不是互相争吵。
就工具而言,即使是现在,很多软件项目仍然像一家五金店。每个骨干人员都仔细地保管自己工作生涯中搜集的一套工具集,这些工具成为个人技能的直观证明。正是如此,每个编程人员也保留着编辑器、排序、内存信息转储、磁盘实用程序等工具。这种方法对软件项目来说是愚蠢的。首先,项目的关键问题是沟通,个性化的工具妨碍——而不是促进沟通。其次,当机器和语言发生变化时,技术也会随之变化,有工具的生命周期是很短的。毫无疑问,开发和维护公共的通用编程工具的效率更高。
核心观点:概念完整性和结构师概念完整性。
概念完整性。一个整洁、优雅的编程产品必须向它的每个用户提供一个条理分明的概念模型,这个模型描述了应用、实现应用的方法以及用来指明操作和各种参数的用户界面使用策略。用户所感受到的产品概念完整性是易用性中最重要的因素。不过,很多产业的产品开发过程无法负担这种获取概念完整性的直接方法。竞争带来了压力,很多现代工艺的最终产品是非常复杂的,它们的设计需要很多人月的工作量。软件产品十分复杂,在进度上的竞争也异常激烈。任何规模很大或者非常紧急,并需要很多人力的项目,都会碰到一个特别的困难:必须由很多人来设计,但与此同时,还需要在概念上保持与单个使用人员的一致。如何组织设计队伍来获得上述的概念一致性?这是《人月神话》关注的主要问题。其中一点:由于参与人数的不同,大型编程项目的管理与小型项目在性质上都不同。为了获得一致性,经过深思熟虑的,有时甚至是英勇的管理活动是完全必要的。
结构师。委派一名产品结构师是最重要的行动。结构师负责产品所有方面的概念完整性,这些是用户能实际感受到的。结构师开发用于向用户解释使用的产品概念模型,概念模型包括所有功能的详细说明以及调用和控制的方法。结构师是这些模型的所有者,同时也是用户的代理。在不可避免地对功能、性能、规模、成本和进度进行平衡时,卓有成效地体现用户的利益。这个角色是全职工作,只有在最小的团队中,才能和团队经理的角色合并。
个人感受:对于一个团队来说,严谨的分工十分重要,团队越大,分工越要科学。一个程序员能做到的事跟一群程序员做到的是不是一个量级的,而一群程序员做到的事跟一个完整的团队又不是一个次元的,因此,合理的组队来进行开发能做到时间空间效率上的最大化。过去对于代码的研究一直是一个人的是,再加上对他人作业的研究,这样能做的事情很有限,而一个团队能做的事情则没有上线。