返回博客归档

ISSUE / 044

当《人月神话》遇上 Agent:单兵开发时代会来吗?

软件工程领域有一本绕不过去的书,叫《人月神话》。 这本书之所以经典,不是因为它讲了多少具体技术,而是因为它抓住了软件开发最难改变的几个事实:软件项目为什么总会延期,为什么人多不一定更快,为什么系统一旦失去统一设计就会迅速变得混乱,为什么所谓“银弹”始终没有出现。 很多人以为,这些结论属于上一个时代。毕竟…

当《人月神话》遇上 Agent:单兵开发时代会来吗?的文章题图

文章封面

软件工程领域有一本绕不过去的书,叫《人月神话》。

这本书之所以经典,不是因为它讲了多少具体技术,而是因为它抓住了软件开发最难改变的几个事实:软件项目为什么总会延期,为什么人多不一定更快,为什么系统一旦失去统一设计就会迅速变得混乱,为什么所谓“银弹”始终没有出现。

很多人以为,这些结论属于上一个时代。毕竟今天的开发环境已经完全不同了。大模型开始进入日常编码流程,Agent 正在从补全工具变成执行单元,Harness Engineering 这样的概念也开始出现。软件开发正在从“人亲手完成所有事情”,逐渐走向“人定义目标与约束,Agent 负责执行”。

也正因为这样,现在反而是重新讨论《人月神话》的最好时机。

真正值得问的问题,不是《人月神话》是否过时了。真正值得问的是:在 Agent 参与软件开发之后,《人月神话》里的那些经典判断,会被推翻,还是会被重新验证?

我的判断是,后者。

《人月神话》没有过时。 它正在被 Agent 时代重新验证。

而且,过去很多在工程上“理论正确但实施困难”的原则,今天因为 Agent 的存在,第一次有机会以更低成本落地。

一、过去的软件协作,默认前提一直是“人越来越多”

团队协作复杂度与沟通成本的隐喻插图

如果我们回看过去几十年的软件工程实践,会发现主流协作模式基本都建立在一个默认前提上:要做更复杂的软件,就需要更多的人。

于是,一个项目的标准配置逐渐变成了这样的结构:

有产品经理,有前端,有后端,有测试,有运维,有架构师,有项目经理;项目一旦再大一点,还会进一步分层、分组、分模块、分系统。

这种方式当然有它的合理性。软件系统越复杂,涉及的知识、场景、分工就越多,人类组织只能通过拆分角色来维持协作。

但这套模式也带来了另一个问题:随着人数增加,软件项目的复杂性并不只是来自“系统本身”,还越来越多来自“组织本身”。

接口要对齐,需求要同步,设计要评审,代码要集成,变更要通知,线上问题要归因。项目越大,真正吞噬效率的东西,往往已经不是写代码这件事,而是协调、传达、验证、回归、对齐这些围绕代码发生的外围成本。

《人月神话》当年最重要的洞察之一,就是指出了这一点。

很多管理者习惯用工业生产的方式理解软件开发,觉得一个人做十二个月的事,十二个人就能一个月做完。但在软件行业,这种换算从根上就不成立。因为软件开发不是简单堆人力,而是高度依赖上下文、抽象、沟通和协作判断的脑力活动。

这也是那句经典结论的来源:

向一个已经延期的软件项目增加人手,只会让它更晚完成。

这句话在今天依然成立。

但问题在于,今天我们要增加的,未必还是“人”。

二、Agent 让软件协作的基本单元开始变化了

软件协作单元变化(Excalidraw)

过去几年,AI 对程序员的帮助,更多还停留在局部辅助层面。

它可以帮你补全代码,解释报错,生成函数,改写测试,整理文档。这个阶段的 AI 更像一个高级助手,它提高了程序员的局部生产率,但并没有改变软件工程的基本结构。

今年开始,变化明显不一样了。

越来越多的团队已经不满足于“让模型帮我写几行代码”,而是在尝试让 Agent 进入更完整的执行链路:读取上下文,理解任务边界,修改代码,补测试,运行检查,分析失败原因,再继续迭代修复。

当这种变化出现之后,软件协作的最小单元就开始变了。

过去的软件协作单元大致是:

多人分工,共同实现系统。

现在正在出现一种新的协作单元:

一个人主导系统,多个 Agent 承担执行与辅助。

这不是简单的“AI 提效”,而是组织方式的变化。

更进一步说,随着 Harness Engineering 这类实践出现,行业开始逐渐意识到一个更关键的问题:决定 Agent 是否真正有价值的,不只是模型本身,而是你有没有为它构建一套可控的工作环境。

也就是说,未来软件工程真正重要的部分,可能不只是“怎么写代码”,而是:

  • 怎么给 Agent 设定边界
  • 怎么给 Agent 提供上下文
  • 怎么验证 Agent 的输出
  • 怎么让失败可恢复
  • 怎么让风险可回退
  • 怎么让整个过程可观测、可评估、可反馈

这时候,软件开发的重心就开始发生迁移了。

程序员不再只是实现者,也越来越像导演、编排者和系统控制者。

三、重新读《人月神话》,很多观点反而更成立了

如果我们把 Agent 带入《人月神话》的语境里,会发现这本书里的很多结论不但没有失效,反而变得更有解释力。

1. “人月神话”没有消失,但资源单位变了

Brooks 当年批判的,不是“增加执行能力”这件事本身,而是“把人当成可线性叠加的资源”。

人类工程师之所以不能简单叠加,是因为每多一个人,就会带来培训成本、沟通成本、依赖成本、集成成本和管理成本。

但 Agent 不完全一样。

增加一个 Agent,并不会像增加一个新人那样,需要一整套传统意义上的 onboarding。它没有组织情绪,不会天然形成复杂的人际摩擦,也不会在团队里产生“协调关系”本身的重量。

这意味着,软件工程里那个老问题,到了今天需要被改写一下:

过去的问题是,增加更多的人,为什么往往更慢。 今天的问题则是,增加更多的 Agent,什么时候会更快,什么时候会更乱。

答案很清楚:

没有约束系统的时候,更多 Agent 只会更快制造混乱。 有强约束系统的时候,更多 Agent 才可能真正提升吞吐。

所以,人月神话没有失效,只是它提醒我们的重点发生了变化。

今天真正决定效率的,不再只是“有多少执行者”,而是“你有没有能力约束这些执行者”。

2. “一人主导,其他人辅助”在 Agent 时代反而更现实

一人主导与多 Agent 协作的受控生产单元插图

《人月神话》里有一个非常重要的结构性观点,就是所谓“外科手术队伍”。

它的核心思想是,优秀的软件系统并不适合用平均分工的方式去做。更理想的模式,是由一个高水平核心设计者主导系统的概念和实现,其他成员围绕他提供辅助支持。

这个结构在过去一直有吸引力,但落地并不容易。原因也很简单:就算是辅助角色,本质上也还是人,而只要是人,就一定会带来认知偏差、理解偏差、沟通成本和协作摩擦。

但今天,很多“辅助性工作”第一次可以被 Agent 大规模承担。

比如:

  • 补测试的 Agent
  • 修 lint 和 type error 的 Agent
  • 迁移旧代码的 Agent
  • 整理文档和变更说明的 Agent
  • 做回归验证的 Agent
  • 分析日志和错误信息的 Agent
  • 对照需求清单做验收的 Agent

这就意味着,《人月神话》里那个过去很理想化的结构,在今天突然具备了很强的现实感。

未来很可能会出现一种新的高效软件生产单元:

一个高判断力工程师,带着一组受控 Agent,像带一个数字化外科手术团队一样交付系统。

这件事为什么重要?

因为它代表着软件工程可能会重新回到一种“少数人主导”的高密度模式。不是回到原始作坊时代,而是在更高自动化基础上的重新集中。

过去,一个人很难独立承担大项目,不是因为他不会写代码,而是因为围绕代码的所有验证、维护、迁移、检查、回归、整理工作太重了。

现在,Agent 正在吞掉这部分负担。

3. 概念完整性不但没有过时,反而变得更重要

Harness Engineering 分层(Excalidraw)

《人月神话》最容易被低估的一点,不是“延期”那句名言,而是另一个更深刻的判断:

一个系统必须保持概念完整性。

什么叫概念完整性?

说白了,就是整个系统在设计语言、边界划分、接口风格、抽象层次、交互逻辑上,要有统一的意志。不能每个人按自己的想法各写一套,最后拼在一起。

过去这件事难,是因为团队人一多,系统很容易失去统一性。

现在这件事更难了。因为 Agent 会把“失控的速度”放大。

如果系统本身边界不清、规则混乱、架构意图模糊,那么 Agent 并不会自动帮你修复这些问题。它最先放大的,往往是你原本就存在的秩序,或者原本就存在的混乱。

这也是为什么我觉得,Agent 时代最重要的一句话可以这样说:

Agent 放大的,不是你的设计能力本身。Agent 优先放大的是系统当前已有的秩序,或者当前已有的混乱。

这意味着,概念完整性在今天不是没用了,而是比以前更重要。

而且它的实现方式也变了。

过去,概念完整性更多靠资深架构师存在于脑中的判断。 未来,概念完整性必须被写进机器可以执行的规则里。

比如:

  • 目录结构如何组织
  • 模块边界怎么划分
  • 状态管理允许用什么方式
  • 数据流路径如何定义
  • 日志规范怎么约束
  • 测试门禁怎么设置
  • CI 失败如何阻断
  • 变更如何回滚
  • 任务如何拆分
  • 文档模板如何统一

过去的概念完整性主要依赖“人脑维持”。 未来的概念完整性,必须依赖“人脑设计,机器守护”。

这其实正是 Agent 时代最核心的工程课题之一。

4. “第二个系统效应”可能会变得更严重

第二系统效应与范围膨胀的隐喻插图

《人月神话》里还有一个非常经典的警告,叫“第二个系统效应”。

意思是,一个设计者做第一个系统时,往往还会比较克制,因为经验不足、资源有限、风险意识强;等到做第二个系统时,就很容易把之前想做但没来得及做的东西全部塞进去,导致系统复杂度失控。

这个问题在 Agent 时代,可能会更严重。

原因并不复杂:Agent 降低了实现摩擦,也放大了“顺手多做一点”的诱惑。

以前一个改造项目,你还会顾虑工作量。 现在因为实现速度看起来更快,人就更容易产生一种危险错觉:

既然改起来这么快,那不如顺便把架构也升级了; 既然都升级架构了,那不如顺便把状态管理也统一了; 既然都统一了,那不如顺便把设计系统也重做了; 既然都重做了,那不如顺便把自动化测试也全补上; 既然都补了,那不如顺便再把 Agent 工作流也接进去。

于是,一个本来边界清晰的重构项目,很快就会滑向一个无限膨胀的“第二系统”。

所以今天的软件团队需要警惕的,不只是“AI 写错代码”,还有另一种更高级也更隐蔽的风险:

AI 让过度设计变得更容易了。

真正成熟的 Harness,不应该只是让 Agent 干更多活,更重要的是让 Agent 不去做不该做的事。

好的工程约束,不只是提升速度,也负责抵抗膨胀。

四、沟通成本没有消失,它只是换了一种形式

很多人会觉得,既然 Agent 不像人一样需要沟通,那软件协作里的沟通成本是不是就会大幅下降?

答案是,会下降一部分,但不会消失。

它只是在迁移。

过去软件工程里的主要沟通成本,是人与人之间的沟通。 现在的软件工程,会逐渐出现三类新的成本:

  • 第一类,是人和 Agent 之间的上下文表达成本。
  • 第二类,是 Agent 和 Agent 之间的协议设计成本。
  • 第三类,是系统对 Agent 输出的验证成本。

以前你需要开会来统一认知。 现在你需要把认知写成规则、模板、任务契约和上下文材料。

以前你要培训新人。 现在你要给 Agent 准备样例、边界、失败恢复路径和执行约束。

以前你要协调多人接口。 现在你要协调多个 Agent 的工作区、任务拆分、文件修改范围和合并策略。

从这个角度看,软件工程的“沟通问题”没有被消灭,只是被工程化了。

未来的软件协作里,沟通会越来越多地表现为以下这些能力:

  • 上下文工程
  • 任务协议设计
  • 执行边界设计
  • 自动反馈设计
  • 结果验收设计
  • 错误恢复设计

也就是说,未来团队里的高水平工程师,不一定是写函数最快的人,往往会是最会把复杂问题变成可执行约束系统的人。

五、Harness Engineering 为什么值得被单独拿出来讨论

软件协作模式演进(Excalidraw)

如果说 Agent 是新执行者,那么 Harness 就是它的工作轨道。

这也是为什么我觉得,Harness Engineering 不应该只被理解成“AI Coding 的一些使用技巧”,它更像一种新的软件工程方法。

它关心的问题不是模型聪不聪明,而是:

  • 如何让 Agent 在真实代码库中安全工作
  • 如何让修改可验证
  • 如何让输出可审计
  • 如何让失败可恢复
  • 如何让任务有边界
  • 如何让质量有闭环
  • 如何让系统保持可控

从这个意义上说,Harness 的价值在于,它把过去高度依赖人类经验和默契的那部分工程能力,逐步转写成机器可参与执行的结构化系统。

为什么这件事会和“一人开发”发生关系?

因为一个人之所以无法稳定做大项目,过去最大的障碍从来不是“写不出代码”,而是:

  • 上下文太多
  • 切换成本太高
  • 重复劳动太重
  • 验证成本太高
  • 回归检查太累
  • 线上风险太难兜底

Harness 的意义,就是把这些原本压在个人身上的外围复杂度系统化、自动化、制度化。

这样一来,“一个人主导 + 多 Agent 协作”才从一个理想,逐步变成可能。

它真正释放的,不是单点写代码速度,而是个人对复杂工程的驾驭半径。

六、“一人开发 + Agent 协作”会在哪些场景里最先成立

这里也不能过度浪漫化。

“一人开发 + Agent 协作”不是万能模式,也不会让所有团队都突然缩成一个人。但它大概率会成为一个越来越重要的新型生产单元。

目前看,这种模式最适合三类场景。

第一类,是边界清晰的重构项目。

比如老系统迁移、新框架重写、目录重整、样式体系统一、类型系统修复、测试体系补齐。这类项目的特点是边界可定义、目标可验证、风险可切片,非常适合由一个强 owner 主导,再让多个 Agent 并行处理大量执行工作。

第二类,是中小型产品从零到一。

这类项目最需要的是统一判断和快速迭代,而不是庞杂的组织协作。一个认知集中的 owner,配合受控 Agent,完全可能替代过去一个小型研发团队相当大一部分的交付能力。

第三类,是平台型和工具型项目。

因为这类项目天然强调规则、接口、自动化和一致性,本身就更容易被 harness 化。边界一旦定义清楚,Agent 的效率会非常高。

当然,也有一些场景短期内不太适合这种模式。

比如需求持续剧烈变化、跨部门博弈复杂、线下协同极重、合规和容错要求极高的大型系统。这些场景的难点往往不在“编码执行”,而在“组织判断”和“业务协调”,Agent 很难直接吞掉这部分复杂度。

所以更准确的说法不是“未来所有软件都可以一人开发”,而是:

未来会有越来越多的软件项目,可以由更少的人主导,并借助更多 Agent 完成交付。

七、未来的软件团队,可能会因此发生什么变化

如果“一人主导 + 多 Agent 协作”逐渐成为现实,软件团队本身也会发生很深的变化。

第一个变化,是项目的默认起步规模会变小。

过去一个项目启动,往往默认要先凑一个基本班底。 未来很多项目,可能先由一个 senior owner 拉起,再根据风险和复杂度逐步引入其他人类成员。

第二个变化,是程序员角色会从“实现者”逐渐转向“导演”和“审稿人”。

他不再把主要时间花在逐行编码上,而是花在定义边界、拆解任务、准备上下文、审核结果、设计护栏、观察系统状态上。

第三个变化,是团队会越来越需要一种新的工程能力。

这种能力不是传统意义上的架构设计,也不只是平台工程,而是专门为 Agent 构建工作环境的能力。也许未来它真的会发展成一个独立角色,那就是 Harness Engineer。

这个角色最核心的工作,不是写业务代码,而是让 Agent 能够在真实工程世界里被安全地使用,并稳定地产生价值。

第四个变化,是团队之间的竞争力衡量方式会变。

过去看的是谁人多,谁工时多,谁能投入更多研发资源。 未来可能更看重另一件事:谁更会用少量核心工程师,驾驭大量 Agent,同时还能保持系统概念完整、交付稳定、风险可控。

这会是软件工程很深的一次权力迁移。

八、《人月神话》真正提醒我们的,其实比过去更重要了

回到最开始的问题。

Agent 出现之后,《人月神话》到底有没有被推翻?

我的答案是,没有。

它真正讨论的,从来不只是“项目延期”这种表层现象,而是软件工程里那些长期不变的本质问题:复杂度、沟通、边界、协作、统一设计和管理判断。

这些问题在今天没有消失。 它们只是换了新的表现形式。

过去的软件工程,核心难题是: 如何管理越来越多的人。

未来的软件工程,越来越重要的难题会变成: 如何用更少的人,驾驭越来越多的 Agent,同时保持概念完整性、质量闭环和系统可控性。

这也是为什么我觉得,《人月神话》并没有停留在过去。它像一面镜子,照出了软件工程一直没变的那部分本质。

如果说工业化软件时代的难题,是如何让大规模人类协作不失控; 那么 Agent 时代的新问题,则是如何把这些协作原则重新编码进机器可执行的工程体系里。

这不是《人月神话》的终结。 恰恰可能是它的新一轮开始。