代码能跑 ≠ 系统能用:好开发者为什么对 Agent 开发更谨慎

一个团队两周的实验:没人写代码,全交给 agent。结果是 ⅔ 时间耗在白板、构建长期飘红,而最谨慎的那批人其实说对了。

分享
代码能跑 ≠ 系统能用:好开发者为什么对 Agent 开发更谨慎

Thoughtworks 的 CTO Rachel Laycock 观察到一个反直觉的现象:最愿意试新工具的那批开发者,恰恰最不愿意把方向盘完全交出去。

这些人通常是"别人还在观望时就已经在新方式里试水"的人,很多实践和工具就是他们先做出来、先推起来的。所以当她说"很多极其优秀的开发者对 coding agent 很犹豫",她的解释不是"他们不会用"——她明确写了一句话澄清:他们不排斥用编码助手,他们排斥的是全押上去、让 agent 完成全部执行。

那这层犹豫到底是什么?2026 年 9 月,Thoughtworks 技术雷达(Technology Radar)那一轮的开空间(open space)讨论把这个话题推到了极限,她才看清背后那个东西。

2026 年 10 月 29 日,她把这套想法写成了这篇文章。

一、"建好了"和"能在生产里跑"之间隔着什么

Thoughtworks 的人在意两件事:做对的东西,并且把它做对。这不是口号,是他们大部分实践和技术的来处——他们要的软件是有用的、明年还能改、而且不会在生产里翻车。

所以这个团队在很早的时候就采纳、推广甚至自己发明了持续集成、结对编程、自动化测试、持续交付、微服务这些东西:不是因为时髦,是因为它们能帮人把软件做对。

早期的 coding agent 把"产出代码"变得极其容易,包括那些你根本不想让它靠近生产的代码——而且写这些代码的人,还没学过"做出一个东西"和"让它安全地跑在生产里"之间的那道鸿沟。

工具这几年进步巨大,但资深开发者的问题并没有消失,只是变得更具体了:

  • 我们确信这是对的行为吗?
  • 它按预期工作吗?
  • 这些是对的边界吗?
  • 我们还能演进它吗?
  • 它遵守我们吃过亏才学到的那些原则和实践吗?
  • 出错的时候会发生什么?
  • 另一个团队能接手吗?

这些问题串起来,底下压着一个更大的问题:当一个系统从来没有人用这种方式建过,我们能信任它到什么程度?

换个说法更清楚:现在跑在生产里的几乎每一个系统,都是"旧方式"建的——手工、由一群(但愿)可信的人建起来的。而我们现在建的一切都是新方式,我们还没和它一起生活过。

二、判断力是那些人在保护的东西

在技术行业二十五年,Rachel 说她越来越看重人从经验里长出来的判断力。她经常把同一批问题同时抛给模型和 Thoughtworks 的资深技术专家。

结果是:难的问题上,人给出的答案仍然更有用。 有些答案甚至谈不上更"完整",但它更有洞见——因为它带着非常具体的经验:

  • 质疑前提本身;
  • 从十年前一次事故里认出同一个模式;
  • 在技术问题的壳子里看见那个组织问题。

她说得挺克制:我现在能拿到巨量的信息,但我仍然需要有人帮我想清楚"什么才是重要的",我仍然需要智慧和洞见。

那种判断力,正是犹豫的资深开发者想保护的东西。

她额外强调了一次边界:这些人不是不肯用编码助手,他们是不肯把执行全交出去;他们不肯把手从方向盘上拿开,是因为没有完全确信 agent 身上的护栏已经到位,能让它自己跑出去。

三、一周白板:没有人写一行代码

欧洲区 CTO Giles Alexander 最近组织了一次实验:把资深工程师、基础设施顾问和产品人员凑在一起,用整整一周、完全按这种方式干活——没有任何人写代码,全部由 agent 建。

实验的目的不是证明"航空应用能在一周内建出来"。顺带说一句,他们做到了 80%——"我们都知道 80% 意味着什么,这真不是编的"。真正的目的是:当 agent 把编码全包了,团队的工作会发生什么变化。

让 Rachel 印象最深的是他们在白板前花了多少时间:把领域想清楚、画出边界、决定下一步该发生什么、把计划做成 agent 能执行的东西。与此同时,agent 一直在产出代码,越过了团队的上班时间还在继续。

人还在设计那套围绕产出的反馈:测试、契约、架构检查、交付流水线。他们在解一道很具体的题:怎么给 agent 足够的自由度让它推进,同时又对结果保持信心。

键盘前的大部分工作,是让 agent 把"这一轮学到的东西"写进 harness(运行框架),这样下一轮构建和测试 agent 就能做对,人也才能对产出的东西更有信心。

最后有个细节特别值得记:产品经理提交的功能代码比团队里任何人都多。

他们估算的时间分配是:约三分之二在白板上,三分之一在 harness 上。 这或许暗示了未来的开发方式会是什么样——但作者马上踩了刹车:在你去重画团队结构之前,故事还没讲完。

四、应用跑起来了,构建是红的

应用能跑。但构建经常是红的。

而且它"在他们的机器上是好的"——这句话你编都编不出来。

Rachel 对这个状态的形容很直接:一个长期飘红的构建让人浑身不舒服。红色应该意味着什么:停下来、查清楚、修掉。 如果它红得太频繁,以至于大家都不再注意它,那下一个真正的失败靠什么被发现?而如果你不再信任这些检查,绿色的构建也不再让人安心。

那正是持续集成本来要消除的那种不确定性,而他们为这件事倡导了超过二十五年。

问题还没解决完,他们给了几种可能:

  • 并行的 agent 太多,各自的改动互相踩?
  • 系统还不够模块化,agent 无法在独立的部分上工作?
  • 还是改动到达的速度本来就快过检查跑完的速度?
  • 又或者以上所有因素叠加,还有别的?

无论哪种,有一件事是确定的:最后一公里的问题需要重新设计。 她判断持续交付 / DevOps 这个运动会在 agent 时代迎来一次复兴和重做,就像研发的其他环节正在被掀翻一样。

而且这不是他们一家的实验。DORA 2025 年的研究发现:AI 的采纳已经和更高的交付吞吐、同时更低的交付稳定性关联在一起。——恰好是持续交付和 DevOps 当年要解决的那件事。

五、连 TDD 和批量大小都要重新问

这些挑战在团队内部也吵出了一些好问题:

  • 当你不再逐行阅读,而且测试是 agent 跟着代码一起写的,测试驱动开发该扮演什么角色?
  • 验收测试、契约测试、系统边界上的检查,放在哪里能带来更多信心而不过于脆弱?
  • 在放 agent 出去干活之前,该做多少设计?既然改一个方案已经这么快。
  • 有没有一个"我们知道过头了"的时点?
  • 最大的谜题之一是批量的大小。她听说很多团队正在从 Story 迁移到 Epic——对开发速度是好事,但你的 CI 流水线能扛住这个工作单元的规模,还能并行、还能快吗?

这个实验团队没能在这一周解决这些问题,也没有在两轮里解决(他们用了两个不同的团队跑了两遍)。她说得很干脆:谁声称解决了,我不会信他。

但这恰恰是她希望资深开发者参与的工作:做实验、质疑,帮我们找出哪些实践还站得住,哪里需要新的实践。

六、离开压好的雪道

跟几位资深开发者聊完之后,她一直在想学滑雪这件事。

小孩常常无所畏惧地直接冲下坡——就像那些从没把软件送上过生产、从没在凌晨三点处理过告警的新手。(她说这件事她永远不会忘,和"我自己造成过的每一次生产事故以及从中得到的教训"排在一起,烙在脑子里。)

而她成年后第一次滑雪时,脑子里想的是"我会摔坏什么"。她想滑,看着又好玩又自由,但她已经大到能看见后果,也不想着断条腿在伦敦一瘸一拐,或者更糟。最大的问题是:她还没学会怎么转弯和刹车——没有这两样,她在雪道上就是一辆失控的列车。

她把草稿给也学滑雪学得晚的 Martin(Martin Fowler)看,Martin 指出这个类比在哪里断掉了(她说自己就爱把类比推到边缘,这个双关是故意的):

  • 在雪道上,你亲眼见过无数人安全滑到底。 教练在你之前已经在这条道上教过几千人,他们知道哪些技能重要、该怎么教。
  • 而现在的 agentic 开发更像一次穿越未知地带的后山行程。 我们还不知道哪些技能最重要;几乎没人(如果有的话)安全走完过这条路;关于怎么走的反馈,要么很慢,要么根本不存在。

按 Martin 的说法:一个重度由 agent 建起来的系统能不能用,要等它在生产里跑了一段时间、扛过几轮变更、而且没有把我们的飞机全送到阿伯里斯特威斯(威尔士海边小镇)去,才知道。

"建好了"和"在生产里工作"不是一回事。 或者用 Charity Majors 的话说:"staging 只是一台体面的笔记本,只有 prod 才是 prod。"——正因为如此,"在我机器上是好的"这句通常是个笑话。至少她每次都笑。

这段对话让她心里那点长期的不舒服落了地:当技术或非技术的领导说"开发者不够好奇""开发者是落后者",并且把这个归到好指认的恐惧上(怕失去亲手写代码的乐趣——她说她自己也怕;怕丢工作——现在谁不怕),他们看错了对象。

他们最好的开发者不是幼教雪道上紧张的初学者——他们看的是没有标记过的地形,问的是关于路线是否合理的问题。 叫他们"别那么谨慎",是没听懂这件事。他们应该在画地图的那支队伍里。

当然,经验也会让人过度依恋熟悉的实践:有些在压好的雪道上学到的东西,出了雪道就不成立,所以必须愿意检验自己的假设。

七、两边都有事要做

所以这件事对领导和开发者同时提出了要求。

领导需要听得足够仔细,能分辨"有用的顾虑"和"不愿变化",并且真的留出实验的空间——那意味着时间、允许出错的许可,以及不要用"agent 产出了多少代码"来判断成功。

开发者则需要把自己的经验带进这些实验,并且准备好发现"自己的一些假设不再成立"。

有些熟悉的实践会变得更重要,另一些需要换个形状。没有人会先递给我们一张地图。

她最后的收尾没有停在祝愿上:如果你真的在意"做对的东西、把它做对",那你的判断力恰好是这种新工作方式需要的。带着你的谨慎来,然后我们一起进雪地。

八、我们的整理:把"谨慎"换算成可操作的东西

原文最实用的地方,是它把"资深开发者的犹豫"从情绪问题翻译成了工程问题。我们按它的材料整理成三样可以直接用的东西。

一、把这场实验的账摆出来

观察项 原文数字 值得注意的地方
团队时间分配 白板约 ⅔、harness 约 ⅓ 编码不再是瓶颈,定义与约束才是
应用完成度 约 80%(两周、两个团队各跑一遍) 作者自嘲"80% 意味着什么大家都懂"
构建状态 应用能跑,构建经常红 红得太频繁 = 检查失去意义
提交最多的人 产品经理 功能代码的作者身份已经和工作职能脱钩
实验规模 1 周 × 2 轮 样本小到只能当方向,不能当基线
外部印证 DORA 2025:吞吐↑、稳定性↓ 与持续交付当年要解决的问题同构

(上表按原文数字整理,非原文提供的表格。)

二、把原文那七个问题变成 PR 前的一张单子

那七个问题是给"要不要接受这个系统"用的,落到日常就是下面这张单子。原文的措辞我们保留,判据部分是我们补的:

原文的问题 在 PR 里怎么问 什么答案算过
这是对的行为吗 这段逻辑对应哪条业务规则?谁确认的? 能指到具体需求或规则编号,不是"agent 觉得这样合理"
按预期工作吗 有没有一个能复现的验证?失败时会怎样? 有命令、有输出、有覆盖到的边界输入
边界对吗 它改动了哪些范围外的东西? diff 里没有范围蔓延、没有顺手重构
还能演进吗 下一个人改这里要读多少上下文? 改动集中、命名可读、没有为通过测试而特化的分支
遵守我们吃过亏学到的原则吗 和我们既有实践冲突的地方为什么可以破例? 破例有记录、有理由、有时限
出错会发生什么 它失败时是静默、重试还是爆炸? 能说清失败模式与回滚路径
别的团队能接手吗 交接需要口述多少东西? 文档/测试能自证,不依赖"当时那个 agent 的上下文"

三、怎么分辨"有用的顾虑"和"抵触变化"

原文把这件事交给领导"听得足够仔细",这太软了。可以给三条硬一点的判据:

  1. 某种程度上可被验证。 有用的顾虑会说"如果 X 成立,我就在这个实验里认输",它接受被证伪;抵触只会重复立场。
  2. 指向具体机制。 "构建长期红会导致真失败被忽略"是可查的;"我觉得不行"不是。
  3. 带时限。 有用的顾虑允许"再跑两轮再看";抵触要求现在就下结论(往往是"现在就别做")。

反过来,作者也留了一条给谨慎派的自省:经验会让你过度依恋熟悉的实践。 这条判据同样适用于"我们以前都这么做"。

站内几条接得上的线

五条边界,别把这读成"agent 编程不行"

  • 样本极小。 一个组织、两个团队、各一周。作者自己说"谁声称一周解决了这些问题,我不会信他"。它给的是问题清单,不是结论。
  • 80% 是个玩笑级数字。 原文明确拿它开涮("80% 意味着什么我们都知道")。别把它当完成度基准引用。
  • DORA 2025 是转述。 原文只给了一句结论(吞吐↑、稳定性↓),没有给指标口径。要引用就引 DORA 报告本身。
  • 作者立场要说清。 这是一位咨询公司 CTO 在自家博客上的观点文章,实验也发生在同一家公司;"白板 ⅔ / harness ⅓"是团队估的,不是计时测出来的。
  • "谨慎"不等于"不用"。 原文反复强调这一点:他们天天用编码助手,只是不肯把执行全交出去。把这篇读成"资深开发者抵制 AI",正好读反了。

来源:Rachel Laycock(Thoughtworks CTO),《Why are good developers so wary of agentic development?》, martinfowler.com/rachels-ramblings, 2026-10-29。原文链接:https://martinfowler.com/rachels-ramblings/good-devs-wary.html。文中的 DORA 2025 结论、Charity Majors 与 Martin Fowler 的引语均为原文引用;表 1、七问清单的判据列、三类判据与"五条边界"为我们整理,非原文内容。

本文由汇智网编译整理,转载请注明出处。

这是「AI 编程 / Vibe Coding」专题的一部分。完整地图见:AI 编程 / Vibe Coding 完全指南