首页 › 项目与执行 › 外科手术队伍
项目与执行 · 人月神话

外科手术队伍

一个人主刀设计和编写核心,其余人都为这个人打下手。

The Surgical Team◷ 约 5 分钟▤ 1 个真实故事换成 AI 也一样在知识地图里看它和谁相连 →

有一个星期,《纽约时报》一直在测试一段不是自己写的软件。这段软件负责给报社新的在线资料库「信息银行」更新数据,共 12029 行代码,时报对照 171 项独立功能逐项检查。IBM 关于这个项目的报告,只用一句话交代结果:「一个错误也没有发现。」

做这套系统的团队人不多,样子也怪。一位首席程序员设计系统、写下核心;一名后备在旁边并肩干活;一名资料管理员把每个程序、每次测试运行都整理归档;还有几名程序员,在密切监督下写剩下的部分。IBM 说,这种安排「概念上类似外科手术团队」。完整经过见案例。

一个人动刀

一个人主刀设计和编写核心,其余人都为这个人打下手。

弗雷德·布鲁克斯管过 IBM System/360 的软件开发。1975 年,他在《人月神话》里专门写了一章,叫「外科手术队伍」。他从一个两难说起。程序员之间差距极大:在他引用的一项研究里,一群有经验的程序员当中,最好的和最差的,生产率平均差了约十倍。而每多一个人,就多一份沟通。所以,为了效率,也为了他说的「概念完整性」,布鲁克斯写道,「人们更愿意让少数几个好头脑来做设计和构建」。可是做真正的大系统,小团队又太慢:OS/360 高峰时有一千多人在干。

他找到的出路,来自 IBM 的哈伦·米尔斯。大工程的每一块交给一个团队,团队要「像外科手术团队那样组织」,别像屠宰场里那样大家一起下刀。换句话说,「一个人动刀,其他人全力支持他」。

布鲁克斯接着勾画了一支完整的队伍,大约十个人:

  • 主刀:也就是米尔斯说的首席程序员,自己写规格、做设计、写代码、做测试、写文档。
  • 副手:熟悉全部代码,是主刀商量想法的对象,也是出事时的保险,但不对任何一部分代码负责。
  • 一名行政和一名编辑:让主刀几乎不用在钱、人和打磨文档上花时间。
  • 一名程序文员:把每次运行、每个版本都存进一个共享的库。
  • 一名工具匠、一名测试员和一名语言专家:主刀随时可以找的专门人手。

十个人一起干,但用布鲁克斯的话说,系统是「一个头脑的产物」,最多两个。

为什么行得通

布鲁克斯拿主刀加副手,去和两个分工合作的程序员比。一是活不拆开:主刀和副手都了解全部设计、全部代码。二是分歧不用谈判,主刀说了算。队里其他人各有专长,布鲁克斯认为,这让沟通线路简单得多:大多数人只和主刀打交道,彼此不必来回协调。

布鲁克斯说,米尔斯这套想法里有一点「绝对关键」:让编程「从私人手艺变成公开的实践」,每次运行全队都看得见,每个程序都算团队的财产。这是程序文员的活,在时报项目里由资料管理员来做。首席的工作,从来不只存在首席一个人的脑子里。

做更大的系统,布鲁克斯的办法是拆头脑,不拆代码。把 200 人编成若干支手术队伍,需要互相协调的就只剩 20 位主刀,再由一位架构师设计整体。

哪里会出问题

这套模式成败全系于主刀。报告时报项目的特里·贝克说得很直白:这支团队「相对有经验」,「表现高于平均水平」。布鲁克斯称之为「一次小规模的单项测试」。多年后米尔斯写道,这个想法流传开以后,各式各样的首席程序员都冒了出来,「从难伺候的大牌」到「办事员式的管理者」,挑人时都绕开了这个想法赖以成立的「创造力和智力上的掌控」。「难怪」这样的团队「并不总是顺利,有些酿成了真正的灾难」。

设想一家三个人的设计工作室:创始人审每一稿、写每一封给客户的邮件,两位新人负责找文件、改图片尺寸。创始人的眼光也许能把作品撑住。可创始人只要离开一周,可能就什么都交不出去,两位新人也可能一直学不会自己带项目。没有真正的副手、也没有人人都能读的共享资料库的手术队伍,就带着这种风险。

AI 时代的外科手术队伍

写代码的 AI 智能体,也走到了相似的形状。在 Claude Code 里,主智能体可以把旁支任务交给子智能体。每个子智能体「在自己的上下文窗口里运行」,只交回一份摘要,主对话就不会被搜索结果和日志塞满。这很像布鲁克斯的支持人员:测试员、工具匠、文员,干主刀需要有人干、自己却不必记着的活。

那些告诫也一样适用。Anthropic 介绍自己的多智能体研究系统时说,这类系统消耗的 token 大约是普通对话的 15 倍,而且「大多数编程任务里,真正能并行的部分比研究任务少」。开发编程智能体 Devin 的 Cognition 公司在 2025 年提出,「行动带有隐含的决定,相互冲突的决定会带来糟糕的结果」,并建议默认只用一个掌握全部上下文的智能体。它举的例子正是 Claude Code:截至 2025 年 6 月,它的子智能体「通常只负责回答一个问题,不写任何代码」。

这样看,设计上要的仍是一个掌握全局的头脑,如今常常是一个模型,再配上帮它搜索、测试、总结的帮手。这个头脑够不够好,正是米尔斯在 1970 年代面对的问题。

在时报,首席和后备写的程序,按贝克的统计,「大约每一人年的工作出一个错误」。两个人把整套系统装在心里,其余的人让这件事成为可能。

先看几件事

玩一玩

出处

  1. Frederick P. Brooks Jr., The Mythical Man-Month, 1975 (chapter 3, "The Surgical Team")
  2. F. Terry Baker, Chief programmer team management of production programming, IBM Systems Journal 11(1), 1972, pp. 56–73
  3. Harlan D. Mills, Software Productivity, Dorset House, 1988
  4. Claude Code documentation, Create custom subagents
  5. Anthropic, How we built our multi-agent research system, June 2025
  6. Walden Yan, Don't Build Multi-Agents, Cognition, June 2025
  7. F. Terry Baker, System quality through structured programming, AFIPS Fall Joint Computer Conference, 1972, pp. 339–343
  8. J. N. Buxton and B. Randell (eds.), Software Engineering Techniques: Report on a conference sponsored by the NATO Science Committee, Rome, October 1969