
当代码生产接近零成本时,正确性将成为最昂贵的资产。
一、软件开发最大的误解
很多人认为,软件开发的核心是写代码。但只要回想一下你上一个需求的完整周期,就会意识到这个认知有多不准确。
一个完整的开发周期,大概是这样的:理解需求、系统设计、技术调研、编码实现、测试验证、上线维护。真正坐下来敲代码的时间,往往只占整个周期很小的一部分。
原因很简单:编码只是思想的表达,而不是思想本身。 当你开始编码时,最关键的决策往往已经完成了——要解决什么问题、如何设计、如何验证。代码只是这些决策的最终载体。
既然编码从来就不是软件开发的主要成本,那么 AI 大幅加速编码,究竟加速了什么?
二、AI 加速了最容易的部分
AI 非常擅长一件事:把意图转化成实现。你给出一个清晰的需求,它能快速生成可运行的代码。这是因为大语言模型本质上是一个知识压缩器和模式生成器——它见过海量的代码和对应的语义,自然能高效地完成"意图 → 代码"这个映射。你越明确,AI 越高效。这套协作模式在单点任务上效果极好。
但 AI 有两个问题无法回答:我们应该构建什么? 以及 我们怎么知道它是正确的?
换句话说,AI 解决了实现问题,但没有解决正确性问题。
三、代码越便宜,正确性越昂贵
这里出现了 AI 时代一个新的悖论。
过去,写代码慢,代码量少,Code Review 的压力是可控的。团队成员能认真读懂每一行代码,有时间讨论边界情况,能看出潜在的逻辑漏洞。
现在,AI 让代码生成速度暴增。同样的时间,产出的代码量可能是之前的三倍、五倍。问题随之而来:代码越多,人越不可能认真 Review。于是代码质量反而下滑。
团队会陷入两难:放开 AI,代码暴增,质量失控;限制 AI,效率下降,竞争落后。看起来是一个死结。
但问题的根源在于,我们一直在问一个错误的问题。
Review,真的等于正确吗?

四、什么叫正确?
在传统开发中,所谓"正确"的结构其实非常清晰:给定一个输入,经过某段逻辑,得到预期的输出。无论是单元测试、集成测试、接口测试还是验收测试,本质都在做同一件事——定义正确性。
这里有一个值得深思的观点:
测试不是在验证正确性,测试是在定义正确性。
因为如果没有"预期结果",你根本无法验证任何东西。测试必须先于验证而存在。你首先要知道"什么叫对",才能说"这是对的"。
五、AI 不会定义正确性
AI 能写出文件上传的接口,能写出数据库查询语句,能写出权限校验的逻辑。但 AI 无法决定这些问题的答案:
上传同名文件时,是覆盖还是报错?文件超过 2GB 怎么处理?权限不足时,返回 403 还是 404 更安全?删除操作是否允许恢复?
这些都属于正确性的定义,而正确性来自业务知识、领域理解和用户期望——这些只能来自人。
于是形成了一个清晰的分工:人定义正确性,AI 实现正确性。
你甚至可以用面向对象的语言来类比这个关系。测试更像是一个接口(Specification),而 AI 负责的是实现类(Implementation)。AI 能写出无数种 Implementation,但它无法定义 Specification 本身。
六、测试成为新的知识载体
在传统开发的认知里,知识流向是这样的:
领域知识 → 代码(核心资产) → 测试(辅助验证)代码被视为最核心的资产,测试是为了保护它而存在的附属品。
但在 AI 时代,这个顺序正在被倒转:
领域知识 → 测试(知识载体) → 代码(可再生资源)当代码可以被 AI 随时重新生成时,代码本身变成了一种可再生资源。而测试——那些描述"什么叫正确"的规格说明——才是真正不可替代的知识沉淀。
测试正在变成一种可执行的知识(Executable Knowledge)。它不仅描述系统怎么运行,更描述什么叫做正确。这才是 AI 时代真正的稀缺品。
七、稀缺的从来不是代码
让我们看清楚历史的演变脉络:
| 时代 | 便宜的 | 稀缺的 |
|---|---|---|
| 工业时代 | 原材料 | 劳动力 |
| 互联网时代 | 流量与分发 | 代码与工程师 |
| AI 时代 | 代码生成 | 正确性的定义 |
AI 让代码变得廉价,但它无法让正确性变得廉价。能够清晰定义"什么叫对"的人,才是 AI 时代真正的工程师。
AI 时代最稀缺的,不是代码,而是正确性的定义权。
所以当有人问"AI 时代还需要写测试吗",真正的答案不是"需要,因为 TDD 是好实践",而是:
测试,是你在 AI 时代唯一不会被替代的那部分工作。
AI 让代码变得廉价。
但它无法让正确性变得廉价。
当代码生成接近零成本时,
能够清晰定义什么是正确的人,才是真正的工程师。
觉得内容不错?我要