jixiaxue 知识库
blog / simon-willison-blog / writing-code-is-cheap-now

Writing Code is Cheap Now — 内容总结

2026-02-24

Writing Code is Cheap Now — 内容总结

原文:Simon Willison · Agentic Engineering Patterns 系列

一句话总结

编码智能体让”写代码”的成本趋近于零,但”好代码”仍然昂贵——我们需要重建基于新现实的工程直觉和习惯。

核心论证结构

1. 旧范式:代码一直很昂贵

层面影响
宏观大量时间用于设计、估算、规划,确保编码时间高效利用;功能评估基于”值不值得开发成本”
微观每天做几百个基于”时间有限”的权衡:要不要重构、写文档、加测试、建调试工具

2. 新现实:写代码几乎免费

3. 但”好代码”仍然昂贵

Simon 定义的好代码 9 条标准:

  1. 能用 — 没有 bug
  2. 确认能用 — 有证据证明代码适合用途
  3. 解决正确的问题 — 不是写了不该写的东西
  4. 错误处理优雅 — 不只考虑正常路径
  5. 简洁最小化 — 只做需要的事,人和机器都能理解
  6. 有测试保护 — 防止未来悄悄坏掉
  7. 有适当文档 — 且随代码同步更新
  8. 允许未来变更 — 保持 YAGNI,但不封死扩展路
  9. 其他 “ilities” — 安全性、可维护性、可观测性、可扩展性等

4. 行动建议:建立新习惯

每当直觉说”不值得花时间”时,不妨先发个 prompt 给智能体试试——最坏也就浪费一些 token。

关键洞察

  1. 成本转移,而非消失:代码的”打字成本”消失了,但”判断成本”和”质量成本”依然在人类这边
  2. 所有工程直觉都需要重新校准:从项目规划到日常微决策,“值不值得做”的阈值已经根本性改变
  3. 并行智能体是乘数效应:不只是一个人+一个助手,而是一个人同时驱动多条工作流
  4. 默认态度应从”不做”变为”试试”:异步的智能体会话让试错成本极低
展开正文

Writing Code is Cheap Now — 中文逐字稿

原文来源:Simon Willison’s Weblog 原文链接:https://simonwillison.net/guides/agentic-engineering-patterns/code-is-cheap/ 系列:Agentic Engineering Patterns(智能体工程模式)


写代码现在很便宜了

采用智能体工程实践时,最大的挑战是让自己适应一个事实带来的后果:写代码现在很便宜了

代码一直以来都很昂贵。对大多数软件开发者来说,产出几百行干净的、经过测试的代码需要一整天甚至更多。我们在宏观和微观层面的许多工程习惯,都建立在这个核心约束之上。

宏观层面,我们花大量时间来设计、估算和规划项目,以确保我们昂贵的编码时间被尽可能高效地利用。产品功能创意的评估标准是:它能提供多少价值来换取那些时间——一个功能需要多倍地赚回它的开发成本才值得做!

微观层面,我们每天基于可用时间和预期权衡做出几百个决策。我应该重构那个函数让它更优雅一点吗,如果这会额外多花一小时的编码时间?写文档呢?为这个边界情况加一个测试值不值得?我有理由为这个东西构建一个调试界面吗?

编码智能体大幅降低了把代码敲进电脑的成本,这颠覆了太多我们现有的个人和组织层面关于哪些权衡是合理的直觉。

并行运行多个智能体的能力让这变得更难评估,因为一个人类工程师现在可以同时在多个地方实现代码、重构、测试和编写文档。

好代码仍然有成本

交付新代码的价格已经降到几乎免费……但交付好的代码仍然比那要昂贵得多。

以下是我所说的”好代码”的含义:

  • 代码能用。它做了它应该做的事情,没有 bug。
  • 我们知道代码能用。我们已经采取措施向自己和他人确认代码适合其用途。
  • 它解决了正确的问题。
  • 它优雅且可预测地处理错误情况:它不只考虑正常路径。错误应该提供足够的信息来帮助未来的维护者理解出了什么问题。
  • 它简洁且最小化——只做需要做的事情,并且以人类和机器现在都能理解、未来也能维护的方式来做。
  • 它有测试保护。测试证明它现在能用,并且作为回归测试套件防止它在未来悄悄坏掉。
  • 它在适当的层面有文档,并且文档反映了系统的当前状态——如果代码改变了已有的行为,已有的文档需要更新以匹配。
  • 设计上允许未来的变更。保持 YAGNI(你不会需要它)很重要——为了预测可能永远不会到来的未来变更而增加复杂度的代码往往是坏代码——但同样重要的是不要写出让未来变更变得比应有难度大得多的代码。
  • 所有其他相关的”ilities”——可访问性(accessibility)、可测试性(testability)、可靠性(reliability)、安全性(security)、可维护性(maintainability)、可观测性(observability)、可扩展性(scalability)、可用性(usability)——那些适合当前开发的特定软件类别的非功能性质量指标。

编码智能体工具可以帮助完成其中大部分,但开发者在驱动这些工具时仍然有重大责任,确保产出的代码对当前项目所需的”好”的子集来说是好代码。

我们需要建立新的习惯

挑战在于发展新的个人和组织习惯,来回应智能体工程所提供的能力和机会。

这些最佳实践仍在被我们整个行业摸索中。我自己也仍然在摸索。

目前我认为我们能做的最好的事情就是质疑自己的直觉:每当你的本能说”别做那个,不值得花时间”的时候,不妨发一个提示词出去,在一个异步的智能体会话中——最坏的结果不过是你过十分钟回来看看,发现那些 token 花得不值得。