人工智能时代的代码正在变为只写且可丢弃的
Phillip Mortimer 在 QCon London 演讲"软件工程中的复杂性与创造力"中抛出一个判断:AI 让所有代码都变成了"只写"的。这并非危言耸听,而是对 AI 生成代码密度与产出量的直接观察。
只写代码:从设计哲学到 AI 默认状态
Mortimer 引用 Eric S Raymond 的定义——"只写代码"指那些深奥、复杂或结构混乱,除作者外几乎无人能修改甚至理解的代码。他指出 APL 和正则表达式从设计上就是"只写的",以牺牲可读性换取极致表达力与性能。AI 生成的代码正在自发走向同样状态:密度高、结构不可控,人读不动。
应对原则很务实:让测试定义行为。当代码本身难以阅读时,大量测试用例成为理解代码意图的唯一途径,测试实质上替代了代码文档化的职能。
代码可丢弃:重写优于调试
第二个原则更激进——代码是可丢弃的。只写代码难以调试,从头重写往往比修补现有代码更快。Mortimer 的建议是:保留测试,丢弃实现,重新生成。这对前端工程化的启示值得深思:当 AI 能在秒级重写一个组件时,我们花在 code review 和 hotfix 上的时间是否还划算?
人工审查的天花板
AI 产出代码的速度已远超人工审查的吞吐量。Mortimer 直言:
让人工逐行审查 AI 生成的代码没有意义,因为人很快就会成为瓶颈。
他建议两条路径并行:
- 自动化代码审查——将编码智能体作为 CI Action 调用,赋予其资深开发者的审查技能集,可以发评论、请求修改甚至批准 PR。Mortimer 承认让模型审查自身输出听起来可疑,但实践证明不同提示词和上下文足以产生有价值的对抗性审查意见。
- 自我修复——让 AI 编码智能体监听可观测性平台,在时间窗口内聚合告警后自动发起修复 PR,从最高频问题入手。这是把"发现问题—定位问题—修复问题"的闭环完全自动化。
此外,"去污(De-slopify)"类智能体可定期扫描代码库,自动清理重复代码、未参数化测试、未使用的特性标记等低风险项。
意图与实现解耦
Mortimer 认为关键转变是意图与实现的解耦。AI 使用自然语言作为交互层,开发者不再被特定编程语言的语法细节绑定,跨语言迁移性大幅提升。这意味着"全栈开发者"的门槛降低——你需要的只是一个有创意的想法,实现层面 AI 已经解决。
开发者角色的回归:创造力
Mortimer 的核心主张:AI 已解决实现问题,剩下的就是创造力。他对创造力的定义很具体——不是灵感迸发,而是迭代式的长期累积工作。关于组织如何培养创造力,他的建议对一线管理者有参考价值:
- 给有创造力的人时间和空间,避免会议、交付和演示的碎片化干扰
- 头脑风暴往往不如个人独立思考有效,不要迷信集体讨论
- 约束是创造力的催化剂,消除空白画布的无限可能,迫使在有限空间内探索
- 会议集中安排在一天开始或结束,留出大段不 interrupted 的专注时段
Rainsho 视角
作为前端工程师,几个点可以直接 actionable:一是把"保留测试、丢弃实现"纳入组件迭代策略——与其维护一个被 AI 改了三轮已经面目全非的组件,不如固化测试用例后整块重写;二是认真对待 CI 中的 AI 代码审查 Action,这比人工 review 的覆盖率和速度都更高;三是"去污智能体"的思路可以落地为前端仓库的定期 lint 深扫,清理无效 feature flag 和重复逻辑。意图与实现解耦这件事,对前端意味更深——组件描述(意图)和框架实现之间的翻译层正在被 AI 填平,跨框架迁移成本会持续下降。