Your job is to deliver code you have proven to work

Your job is to deliver code you have proven to work.png

软件工程师的职责不仅仅是生成代码,而是交付那些经过验证、确实有效的代码。

当前 AI 辅助开发中常见的一个现象:一些工程师利用 LLM 工具生成大量代码,在未经验证的情况下直接提交巨大的 PR,试图将“代码审查”的责任完全转嫁给同事或开源维护者。

Simon Willison 认为这种行为不仅粗鲁,浪费他人时间,更是一种失职。工程师的价值不在于产出代码的速度,而在于交付能工作且包含有效性证明的代码。

Simon 提出了证明代码有效的两个必要步骤:

第一是手动测试。如果你没有亲眼看到代码按预期运行,那它就是不可靠的。手动测试是一项核心技能,通过命令行输出或屏幕录制来展示代码的实际效果,是代码审查中非常有力的证明。寻找边缘情况(Edge Cases)并进行测试,更是区分高级工程师的关键能力。

第二是自动化测试。在拥有 LLM 工具的当下,编写测试变得前所未有的简单,因此没有任何借口跳过这一步。提交的代码必须包含能证明其功能的自动化测试,并且这些测试在代码被回滚时应当报错。不要因为有了自动化测试就跳过手动测试,两者缺一不可。

针对 2025 年爆发的编程智能体(Agent)趋势(如 Claude Code 和 Codex CLI),Simon 指出,你需要像管理人类下属一样,要求你的智能体证明它们的代码是有效的。这包括让智能体执行手动测试步骤,以及编写自动化测试。好消息是,智能体通常非常乐意编写测试,如果你的现有项目中测试代码结构清晰、模式良好,智能体 会自动模仿这些优秀的模式来扩展测试套件。

计算机无法承担责任,只有“在环”的人类可以。任何人都可以通过 Prompt 生成千行代码,但这已不再稀缺;真正的价值在于你作为人类,为你交付的代码提供了它确实有效的可信证明。