很多人批评 AI 写代码质量差:结构混乱、重复代码多、异常处理粗糙、边界条件漏得厉害。这个批评并不冤。今天的大模型确实经常写出一种看起来能跑,但不太像人类工程师认真设计过的代码。
但换一个角度看,这件事未必全是缺点。AI 编码真正改变的,可能不是机器终于能写出完美代码,而是第一版代码变得非常便宜。当代码可以快速生成、快速运行、快速修改、快速推倒重来时,第一版代码就不再需要被过度珍惜。
过去,程序员写代码像砌墙,每一块砖都要谨慎;现在,AI 让一部分代码更像白板上的草稿,先画出来,错了再擦掉。这就是 AI 编码时代一个值得重新理解的变化:代码正在从长期资产,部分变成可消耗的草稿。这不是质量标准下降,而是工作方式变了,团队必须重新区分验证阶段和交付阶段。
在传统软件工程里,能跑就行通常不是一句好话。
它往往意味着没有设计、没有测试、没有边界、没有异常处理、没有长期维护意识。今天为了赶进度写出来的临时代码,明天可能就变成没人敢动的祖传逻辑。一个功能表面上跑通了,但后续稍微改一点需求,就牵一发动全身。
所以过去的工程文化一直强调代码质量。代码不仅要能运行,还要可读、可维护、可扩展、可测试。因为代码不是写完就结束,它会被其他人阅读,被新需求修改,被线上问题拷打,被时间反复折磨。
这也是为什么程序员对烂代码高度敏感。烂代码最可怕的地方,不是它今天不能跑,而是它明明能跑,却没人知道为什么能跑,也没人敢保证改完以后还跑不跑。
在这种背景下,能跑就行当然是贬义词。它代表的是短视、粗糙和技术债。
但 AI 编码出现之后,这个判断开始变得复杂。因为过去写一版代码的成本很高,人写了很久,自然舍不得删;而现在,一段 AI 生成的代码如果不合适,完全可以让它重来。这不是说代码质量不重要,而是说:第一版代码的意义变了。
AI 编码最直接的能力,不是生成完美代码,而是快速生成一个可运行版本。
以前做一个功能,流程大致是理解需求、设计方案、写代码、调试、联调、测试、修改。每一步都要消耗工程师时间,所以大家会尽量在动手前想清楚,避免返工。
但 AI 把这个节奏改了。现在很多低风险功能可以先变成这样:描述需求、生成代码、跑起来、看效果、修改提示词、重构或重写。过去很多争论只能靠会议解决,现在可以先靠一个能跑的版本把问题摆到桌面上。
这意味着,代码初稿的成本大幅下降。当初稿足够便宜时,第一版代码的目标就不一定是长期可维护,而是尽快制造反馈。它可以先把一个抽象想法变成可点击、可运行、可测试的东西。产品可以看流程,测试可以找边界,业务可以确认规则,开发可以判断复杂度。
比如一个后台管理页到底要不要增加批量操作,以前可能需要产品、开发、测试讨论半天。现在可以先让 AI 写一个粗糙版本,跑起来给大家看。看完之后,团队可能立刻发现:这个交互根本不适合批量操作,或者这个字段必须增加校验,或者这个流程其实应该拆成两步。
这时,AI 代码的价值不在于它写得多优雅,而在于它让问题提前暴露。所以,能跑就行在 AI 编码时代可以被重新定义:它不是上线标准,而是验证标准。
这里需要引入一个概念:代码草稿化。
所谓代码草稿化,不是说所有代码都不重要,也不是说可以放弃工程质量。它指的是:一部分代码的生命周期正在变短,它们的主要价值不是长期存在,而是快速验证、快速试错、快速被替换。
典型场景包括:
这些代码过去也需要人认真写,因为人力成本摆在那里。哪怕只是一个临时脚本,也要有人花时间写、调、改。久而久之,很多临时代码会被保留下来,甚至变成生产链路的一部分。
但 AI 让这类代码的命运变了。它们可以快速生成,也可以快速废弃。
这带来一个心态变化:人类程序员会珍惜自己熬夜写出来的代码,但不会太珍惜 AI 五分钟生成的代码。正因为不珍惜,才更容易删除、重写和重构。
这件事反而有价值。过去很多技术债不是因为没人知道代码烂,而是因为大家舍不得改,或者不敢改。它已经跑在线上,没人知道里面藏了多少隐性依赖。改它风险太大,不改又越来越重。
但如果一个模块从一开始就被设计成可替换的,边界清楚,测试充分,那么内部实现就没那么神圣。AI 生成的第一版不好,可以换第二版;第二版结构不清晰,可以让 AI 帮忙重构;需求变了,也可以重新生成。
这时,代码不再像纪念碑,而更像草稿纸。草稿不是垃圾。草稿的价值,是让想法尽快落地,让问题尽早暴露。真正危险的不是草稿,而是把草稿当成成品上线,并且没有任何测试、审查和边界保护。
这也是这个观点最容易被误解的地方。
说 AI 代码可以是草稿,并不是说 AI 写出来能跑就直接上线。恰恰相反,AI 编码越快,质量护栏越重要。
因为 AI 代码有一个典型问题:它很容易满足 happy path,却遗漏异常路径。它能把正常输入、正常流程、正常返回写得像模像样,但在权限校验、并发冲突、数据一致性、错误处理、安全攻击面这些地方,经常不可靠。
所以我们需要区分不同阶段的质量要求。
| 阶段 | 目标 | 代码质量要求 |
|---|---|---|
| 草稿阶段 | 验证想法 | 能跑、能看、能改 |
| 原型阶段 | 验证流程 | 结构基本清楚,有关键测试 |
| 工程化阶段 | 准备交付 | 模块边界清晰,异常处理完整 |
| 生产阶段 | 对用户负责 | 稳定、安全、可观测、可维护 |
也就是说,AI 代码可以从草稿开始,但不能以草稿状态结束。能跑就行只能用于低风险、早期验证、影响面可控的场景。越靠近钱、权限、数据、合规和基础设施,就越不能只追求能跑。
支付、账务、权限、风控、加密、交易、基础设施、高并发一致性逻辑,这些地方不能把 AI 代码当草稿随便上线。因为这些代码一旦出错,代价不是重写一下就好,而是资金损失、数据泄漏、系统故障或安全事故。
所以 AI 编码时代真正合理的流程,不是 AI 写完、能跑、上线,而应该是:AI 生成草稿、跑通流程、补充测试、暴露问题、重构实现、人工审查、工程化合入。
这才是代码草稿化的正确打开方式。
如果代码初稿变得便宜,程序员的价值会不会下降?
我认为不会,但会转移。
过去,程序员的主要价值是把需求翻译成代码。谁能更快、更准确地写出实现,谁就更有价值。
AI 编码时代,这部分能力会被稀释。因为 AI 可以快速生成大量代码,甚至可以根据错误信息不断修改。但 AI 仍然不知道什么代码值得写、什么边界必须守、什么风险不能碰、什么实现应该删掉重来。
所以人的价值会转向几个更关键的方向:
尤其对测试开发来说,这个变化很明显。很多测试辅助工具、数据构造脚本、接口验证脚本、Mock 服务、自动化用例,本来就不是核心业务资产。AI 可以快速生成一个能跑的版本,测试开发再补充断言、异常用例、边界条件和稳定性保障。
这会让测试开发的工作更偏向反馈系统设计,而不是单纯写脚本。
未来优秀的程序员,可能不是最会一行一行写代码的人,而是最会驾驭反馈循环的人。他知道什么时候可以让 AI 快速试错,什么时候必须停下来做设计;知道哪些代码可以草稿化,哪些代码必须工程化;知道如何用测试、审查和监控,把一个粗糙实现逼近可靠系统。
所以,能跑就行在 AI 编码时代不应该被理解成放弃质量,而应该被理解成一种新的起点。先让想法运行起来,再用测试、重构和工程规范筛选它、修正它、淘汰它。
过去,差代码最可怕的地方是没人敢改;现在,如果代码由 AI 快速生成,模块边界清晰,测试反馈充分,它反而可以被随时推倒重来。
代码正在从纪念碑变成草稿纸。真正重要的,不是第一版代码有多漂亮,而是团队有没有能力快速发现问题,并且有勇气把它重写。