# 第 7 章 · 为什么巴比伦塔会失败

> 目标清晰、人力充足、材料齐备、时间不限、技术可行——巴比伦塔仍然失败了。缺的是交流，以及由交流产生的组织。

---

LLMS 索引： [llms.txt](/llms.txt)

---

题记直接引了《创世纪》11:1–8 的原文。这一段之所以被放在这一章，是因为作者要把它**当作一个工程项目**来复盘。

## 这一章讲了什么 {#summary}

作者称巴比伦塔是人类继诺亚方舟之后的第二大工程壮举，也是**第一个彻底失败的工程**。他逐条检查这个项目的先决条件：

| 先决条件 | 答案 |
| --- | --- |
| 清晰的目标？ | 有，尽管幼稚得近乎不可能——而且项目早在遇到这个限制之前就失败了 |
| 人力？ | 非常充足 |
| 材料？ | 美索不达米亚有丰富的泥土和柏油沥青 |
| 足够的时间？ | 没有任何时间限制的迹象 |
| 足够的技术？ | 有，金字塔或锥形结构本身稳定、能分散压力负载，砖石建筑技术有过深入研究 |

五个条件全都满足，项目还是失败了。作者说他们缺两样东西：**交流**，以及交流的结果——**组织**。无法相互交谈，就无法合作；合作无法进行，工作就停顿。而在史书的字里行间能看出来：交流的缺乏导致争辩、沮丧和群体猜忌，部落开始分裂——**大家选择了孤立，而不是互相争吵**。

现实完全对应得上。左手不知道右手在做什么，于是进度缓慢、功能不合理、系统缺陷一一出现。作者举了一个极具体的例子：程序覆盖功能的实现者发现应用程序很少用到这个功能，于是降低了它的速度；与此同时，队伍里其他人正在设计**在很大程度上依赖覆盖速度**的监控程序——覆盖速度的变化于是成了主要的规格变更。这类变更**必须从系统角度衡量，并且公开、广泛地发布**。

那么团队靠什么交流？他给了三条途径：**非正式途径**（清晰定义小组内部关系、充分利用电话，形成对所写文档的共同理解）、**会议**（常规项目会议，各团队轮流做简要技术陈述，能澄清成百上千的细小误解），以及**工作手册**。

"项目工作手册"是本章篇幅最大的一节。作者先纠正一个误解：它不是一篇独立文档，而是**对项目必须产出的一系列文档进行组织的结构**——目的、外部规格说明、接口说明、技术标准、内部说明和管理备忘录，全部必须归属于这个结构。

为什么需要一个结构？一是技术说明几乎必不可少，而结构保证文档规范而不是杂乱无章，后来的文字能找到它该在的位置；二是**控制信息发布**——"控制信息发布并不是为了限制信息，而是确保信息能到达所有需要它的人的手中"。做法是先给所有备忘录编号，更好的是用树状索引结构，并让子树维护各自的发布列表。作者点出规模效应：10 人的项目简单编号就够，100 人的项目若干线性索引常常够用，到了 1000 人且分散在多地，结构化手册的必要性和规模要求都陡增。

OS/360 的实践细节很值得看。他们决定**每个编程人员都要了解所有材料**，因此每间办公室保留一份工作手册拷贝；用活页夹替换变更页来实现实时更新，靠计算机文本编辑把周转时间压到一天以内。变更页要满足两种追问：第一次收到时要知道"修改了什么"，事后咨询时要知道"现在的定义是什么"。所以变更页上要用页边竖线标记发生变动的行，并附一段简短的独立说明，记录变更的重要性与批注。

这套机制稳定运行了六个月，然后被自己的重量压垮：手册厚达五英尺，一百份叠起来比 Time-Life 大厦还高；每天分发的变更页约两英寸厚，归档约 150 页，日常维护占据每个工作日的大量时间。他们改用微缩胶片，体积减少 18 倍，省下大量金钱。但作者没有把微缩胶片当万能药，他诚实地列出代价：**正是因为文字归档笨拙，才确保了所有变更都被阅读**，而微缩胶片让维护过于省事，除非变更说明与变更胶片一起分发；而且读者无法在胶片上做标记和批注。他的结论是：微缩胶片是好方法，但应作为文字工作手册的**补充**。至于未来的方向，他提到了可直接访问的文件——从显示终端查阅、修订日期与变更标识条、每日小结按后进先出保存，并点名 Engelbart 等人在 ARPA 网络项目中的实践，以及 Parnas 提出的更彻底的方案。

最后是"大型编程项目的组织架构"。他先算了一笔交流账：n 个工作人员之间有 (n²−n)/2 个相互交流接口，还有将近 2n 个必须合作的潜在团队。**团队组织的目的是减少所需的交流与合作的数量**，手段是人力划分与限定职责范围——树状管理结构之所以出现，是因为管理角色不可重复，它本质上是权力和责任的结构。但作者提醒：**交流的结构并不受树状约束，交流是通过网状结构进行的**。

他给了每棵子树必须具备的六个要素：任务、产品负责人、技术主管（结构师）、进度、人力的划分、各部分之间的接口定义。其中两个角色需要分清：

- **产品负责人**：组建团队、划分工作、制定进度表，争取并保证资源；主要工作是向上的沟通和水平的沟通；建立团队内部的沟通与报告方式；确保进度目标实现，并根据环境变化调整资源与团队架构。
- **技术主管**：构思设计、识别子系统、指明外部样貌、勾画内部结构；提供设计的一致性与概念完整性；控制系统复杂程度；解决技术问题或调整设计。他的沟通在团队中是首要的，工作几乎完全是技术性的——作者借用一句谚语，称他为"攻坚小组中的独行侠"。

两者的关系有三种，作者说三种在实践里都成功过。第一种是**同一个人兼任**，适合 3–6 人的小队；大型项目里很难，因为兼具两种技能的人极稀缺（"思考者很少，实干家更少，既是思考者又是实干家的太少了"），而且两个角色在大项目里都要全职甚至加班。第二种是**产品负责人当总指挥、技术主管当左右手**：难点在于技术主管不参与管理时如何建立技术权威；所以产品负责人必须预先声明其技术权威、在绝大多数测试用例上支持他的技术决定，两人还要在基本技术理论上观点相近、在主要技术问题出现前先私下讨论。作者甚至提到要用办公室大小、地毯、装修、复印机这类**微妙的状态特征去暗示技术主管的威信**——"尽管他身在管理团队之外，但他是决策的根源"。这种组合很有效，却很少被采用，好处是能用上不擅长管理的技术天才。第三种是**技术主管当总指挥、产品负责人当左右手**，作者引了海因莱因《出售月球的人》里的一段：Harriman 把总工程师 Coster 从卡车合同和客户电话里隔离出来，给他换办公室、加沙发，再配一个"除了建造飞船的微妙细节外什么都不用你担心"的下属。

他的结论是分场景的：对小团队，第三种最好（这正是第 3 章的外科手术队伍）；对真正大型项目中的一些开发队伍，产品负责人作为管理者更合适。全章收在一句话上——巴比伦塔可能是第一个工程上的彻底失败，但不会是最后一个：**交流，以及交流的结果——组织，是成功的关键；积累这方面的经验和能力，同提高软件技术本身一样重要。**

## 我的判断 {#reading}

- 这一章与第 6 章构成一对：第 6 章讲决策如何向下贯彻（手册、会议、日志），本章讲信息如何在横向流动（工作手册、组织架构）。两章合起来才是"交流"的完整问题，作者把它们分开处理是对的。
- 最锋利的是那个"降低覆盖速度"式的例子：**局部最优的调整，在系统层面造成规格变更**。它揭示的不是某个人粗心，而是缺少一个制度动作——变更必须被系统性地评估与发布。这一点至今仍是最常见的工程事故来源。
- "控制信息发布不是限制信息，而是确保信息到达需要它的人"这句话，我完全认同，且值得当作文档系统的设计目标。它解释了为什么"把所有东西都放进一个共享盘"并不等于信息通畅：没有结构，等于没有发布。
- 作者对微缩胶片的评价是我判断他诚实的证据：他既承认它省了钱和体积，也承认**笨拙本身就是一种保障**，微缩胶片让维护太容易，反而可能没人读变更说明。这种"改进会削弱原有隐式约束"的观察，比结论本身更有价值。
- 我保留的是"三种关系都成功过"的说法。它可能意味着三种都能用，也可能意味着成功的样本被事后解释成了某种关系；作者没有给出判断依据。我个人更认同他最后的分场景结论，而不是"都可以"。
- 六个基本要素里，最容易被漏掉的是**接口定义**。任务、负责人、结构师、进度、分工这五样在项目启动时几乎总会被写上，接口定义却常被默认成"以后自然会对齐"，而它恰恰是巴比伦塔真正缺的那一块。

## 和我手上的工作有什么关系 {#relevance}

- 我自己最常犯的错，正好对应本章开头那个先决条件表：目标清晰、时间够、技术可行、工具齐备，于是默认"当然能做成"。少数几次翻车都不是技术问题，而是**我和昨天、上周的自己失联**——也就是左手不知道右手在做什么，只不过两只手都是我。
- 工作手册的思路，直接解释了我为什么坚持维护 `AGENTS.md` 与 `docs/sessions/`：前者是索引结构（相当于树状索引），后者是变更页与归档。这一章还给了两条可操作的改进：给每次变更标记"改了什么"，以及随时能回答"现在的定义是什么"。
- "每个编程人员应了解所有材料"，在小规模协作里的等价物是**让每个参与者都能拿到全部上下文**，而不是按角色切分信息。这一条我打算在站点里继续贯彻：约定文档公开可读，会话记录可追溯。
- 产品负责人与技术主管的组合分析，对"我 + Agent"这种编队有直接映射：我兼任两者，属于作者说的第一种安排——他只推荐给 3–6 人的小队，这正好是小规模配合 AI 的团队规模。超过这个规模，就该有人专职做概念、有人专职做交付。
- 接口定义这条我准备马上用起来：给这个站点补一份"约定清单"，把页面结构、front matter 字段、锚点规则、构建入口全部写明。以前这些散在几次对话里，正是"以后自然会对齐"的典型形态。

## 一句话记住 {#takeaway}

目标、人力、材料、时间、技术全都齐备的工程照样会失败——缺的是交流，以及交流产生出来的组织；而组织的第一份产物，就是把一切文档结构化的工作手册。
