Synth Daily

只写代码

随着大型语言模型(LLM)的进步,企业软件开发正进入一个“只写不读”的时代,即大量代码在生产环境中运行前将不再经过人工逐行审查。本文探讨了这一转变,指出传统以人工审查为核心的开发瓶颈正在消失,取而代之的是依赖自动化和智能代理的系统。工程师的角色将从代码编写者转变为系统设计者和风险管理者,其核心职责变为设定约束、管理接口和确保系统正确性。尽管代码不再被细读,但人的责任依然存在,未来的软件工程将围绕建立新的信任、问责和控制机制来展开。

“只写不读”代码时代的来临

我们正快速进入一个未来:大部分生产代码将永远不会被人类阅读。这并非指草草浏览或简单修改,而是完全不经过人工审查。这种代码被称为“只写不读代码”(Write-Only Code)。

过去,AI 编程主要以辅助形式存在,人类工程师将任务分解,交给 AI,然后审查、修改并最终发布。在这个流程中,人工审查是所有生产变更必须通过的核心瓶颈,它也维持了现有软件开发生命周期(SDLC)的稳定。

如今,这个瓶颈正在消失。

模型能力的巨大提升,加上智能代理已具备规划、执行和自我纠正的能力,使得它们能够处理更高级、更复杂的任务。我们将以前所未有的速度和规模生产软件,即使我们想审查,也根本没有足够的人力去逐行阅读。

历史的启示:从硬件到开发速度

软件开发的历史充满了消除一个瓶颈后又面临下一个瓶颈的循环。几十年前,软件上线的最大瓶颈不是写代码,而是硬件。采购服务器、安装、配置网络等流程需要数月时间。

21世纪初,持续交付和按需计算的出现打破了这一限制。由此催生了 DevOps 和“宠物与牲畜”(pets vs. cattle)等新理念:

  • 服务器不再珍贵:生产服务器可以被程序化地创建和销毁,而不再需要人工精心维护。
  • 人工访问是污染:在高效团队中,如果有人登录到生产服务器,该服务器会被视为“受污染”,并计划被一个全新的实例所取代。

这一转变将瓶颈直接转移到了开发速度上。当基础设施可以即时供应,软件变更可以快速部署后,唯一的限制因素就成了工程师将业务需求转化为可用软件的速度。

从审查到信任:建立新的信心来源

在过去,人工代码审查是确保生产系统可靠性的最后一道防线。但在“只写不读”的时代,我们需要新的方式来建立信任。

如果我们要发布未经人类阅读的代码,我们就需要其他方式来获得信心。

未来的实践可能会像我们对待服务器一样对待代码:

  • 人工阅读成为一种警示:如果一段代码“必须由人来阅读才能让人放心”,这将被视为生成流程中的一个问题。
  • 引入“代码阅读覆盖率”:类似于测试覆盖率,团队将追踪有多少生产代码被人工阅读过,并努力将这个比例安全地降至最低。
  • 控制“意外行为的影响范围”:团队需要掌握一项关键技能,即理解并控制非预期行为在被发现或遏制前能扩散多远。

随着技术成熟,自动化所能提供的保障会越来越多,未经审查的代码范围将不断扩大,而人工审查的范围则会相应缩小。

工程师角色的转变

在“只写不读”的世界里,工程师的角色不再是代码的作者和审查者,而是转变为:

  • 系统设计者
  • 约束制定者
  • 权衡管理者

工程师的工作重心将从塑造具体实现转向塑造意图。他们会痴迷于接口、系统不变量、故障模式以及必须满足的条件。他们将决定哪些部分仍需人工审查,哪些部分可以“盲目”发布,并投资于能将这种做法变为竞争优势的工具。

这种转变伴随着一种重要的心理变化:“我写代码”变成了“我构建软件”。工程师仍然要对结果负责,但他们将不再通过阅读每一行代码来获得信心。

最终,卓越的软件工程将不再取决于我们审查代码的水平,而是取决于我们设计系统的能力——即便是无人阅读其代码,这些系统也能保持正确、有弹性和负责任。拒绝适应并不会带来安全,它只会让适应过程在压力下意外地、无意识地发生。