Featured image of post AI时代应该怎么写代码:督导和编排

AI时代应该怎么写代码:督导和编排

程序员的迷茫

程序员这个行业从来没有像现在这么迷茫过。我看到太多不同的说法:

  1. 有个老板要求员工的 AI 写代码率必须超过 70%
  2. 有的人手写代码,然后让 AI 来写单元测试、做测试
  3. 有人在面试时被问到是否用过 Claude Code,会觉得很生气
  4. 有人说 vibe coding 是一场赌博
  5. 有人说程序员要失业了,我们不再需要程序员了
  6. 有人说只要用 TDD、BDD 写出来的项目就会很稳定
  7. 有人说 AI 写出来的代码,测试都能通过,但实际一运行就挂掉
  8. 有人说 AI 编程是个骗局,只是各大厂商为了卖 token 的营销手段

2 个坏消息

其实这些说法都对了一部分,也错了一部分。我想说两个坏消息:

  1. Cursor 会死,JetBrains 会死,甚至 Copilot 也会死,几乎整个 IDE 产业最后可能都不存在
  2. 虽然已经裁了很多程序员了,但裁得还不够

我不喜欢坏消息,但我也不喜欢假装一切都很好。这就像你明明有重大疾病,却不去体检一样。这样只会害了你。


AI 编程的极限

这几个月 AI 编程领域高歌猛进。看起来它似乎是无敌的,最终会统治世界。确实,我们现在对 AI 编程的开发还远远没有到极限。

但是,AI 编程是有极限的。

我们要知道,我们现在用来编程的 AI,其实不是 AGI。我们既然是专业人士,就不要再用"AI"这个笼统的词了。我们真正使用的是大语言模型(LLM)。

大语言模型的工作原理,本质上是预测下一个 token。这跟抽象思维、大局思维、创造力并不是一回事。

所以,大语言模型有几个非常致命的问题:架构偏移、软件熵增、上下文困境、token 滥用。

  • 架构偏移:如果你让 LLM 长时间独立完成一件事情,它最终可能会偏离轨道,走到一个你完全想不到的方向。
  • 软件熵增:如果你让 LLM 自己写一个大型项目,最终很可能会生成屎山代码。实际上甚至不需要大型项目,只要让它写一个稍微复杂一点的模块,都可能出现代码质量失控。我甚至发现,让它帮我写一个类的单元测试,它也能写出屎山代码。
  • 上下文困境:当上下文过长时,LLM 的工作效率会明显下降,因为过长的上下文会让它"分心"。于是你会陷入两难:压缩上下文,会丢失信息;不压缩上下文,LLM 又几乎无法高效工作。你当然可以通过摘要、归档以及渐进式披露来缓解这个问题,但代价就是性能下降。LLM 每做一次修改,都可能需要思考很久。
  • token 滥用:这是一个非常现实的问题。token 是要付费的,而且并不便宜。你没有无限的 token 可以挥霍。但由于缺乏监管的 AI 容易写出糟糕的逻辑和单元测试,最终会导致你修改逻辑时的 token 消耗越来越高,让维护成本变得越来越昂贵。

程序员的作用

程序员不会失业,但"写代码的程序员"这个职业会逐渐消失。

写代码的方式会彻底改变,而且会分成两个阶段:督导和编排。


督导

有人问,用 AI 写代码的比例多少比较合适。

我的答案是:100%。

当人类开始使用拖拉机播种之后,人工播种的比例是多少?是 0%。

用了 AI 写代码之后,人类已经没有必要继续用缓慢、而且容易拼写错误的方式手写代码。你真正要做的事情,是"督导"。

督导的作用,就是克服 LLM 的那 4 个核心问题。

程序员的大部分时间,将不再是写代码,而是审核 AI 写的代码、提出修改意见,并防止 AI 下次再犯同样的错误。或者指导 AI 用更好的实践去管理代码。

所以,设计模式、代码整洁、代码品味、重构、如何写好的单元测试——这些以前看起来很高级的东西,现在会变成基础能力。

原因很简单,不是为了"优雅",而是为了一个很现实的目标:

写出可维护、bug 更少、并且节省 token 的代码。

督导示意图

IDE 的终结

但这样一来,其实已经不太需要传统 IDE 了。

因为 IDE 本质上是为了"人类写代码"而诞生的。

如果 AI 写的代码不会出现低级错误,也不需要 auto-complete,而人类自己又不再直接写代码,那么 IDE 中那些辅助人类编写代码、重构代码的功能,其意义就会大幅下降。

未来也许还会有 IDE,但会是非常轻量级的 IDE:秒开、功能简单,只保留一些最基础的能力。

而且这种东西很难再形成高利润产业,因为它太简单了,最终一定会出现大量开源、免费的替代方案。

就像胶卷和录像带租赁行业一样,这个产业最终会逐渐消失。


编排

单独开一个 agent 写代码,效率其实还是不够高。

你可以回忆一下,当你拿到一个新的 requirement 时,你是怎么工作的。

你肯定不是直接开始写代码。

你会先细化需求、设计实现方案,有时候甚至还需要先做 POC 验证方案,然后才开始真正写代码、测试功能。

所以,最终整个软件开发流程都会 AI 化。

但由于上下文问题的存在,又无法让一个 agent 完成所有事情。

注意:这并不是"上下文长度限制"这种可以单纯靠技术升级解决的问题,而是 LLM 工作原理本身带来的限制。

所以,未来真正的开发环境,很可能会变成一个完整的 AI 工作流。

整个工作流中,会有多个不同角色的 AI 工作者:

开发方案设计者 + N 个开发者 + 测试方案设计者 + N 个测试者

AI 工作流编排示意图

之所以没有"需求分析者"这个角色,是因为这部分最好仍然由人类亲自完成。

因为需求分析只要偏移一点点,后面的整个架构就可能彻底偏掉。

但这个工作流并不是搭建完就没事了。

因为如果你让它自己无限制地运行,它绝对会耗费大量 token,最终给你生成一个不可维护的屎山代码库。这就是架构偏移。

虽然 OpenAI 和 Anthropic 都在研究长时间运行的 AI 项目开发,但你可以把这些研究理解成"实验室中的理想环境"。

它们不需要太在意 token 消耗,但你需要。

而且我相信,它们所谓的"长时间运行项目",本质上也是有督导存在的。人工需要不断增加规则、纠正 AI 的工作方式。

这其实也就是现在越来越多人提到的 Harness Engineering。

于是,程序员最终的工作,就会变成:

搭建、调试并使用这个 AI 工作流。

因为你仍然需要督导 AI。


总结

因为 LLM 在原理上存在一些暂时无法解决的问题,所以程序员这个职业,短时间内仍然会以另一种形态继续存在。

直到真正的 AGI 出现的那一天。

但我还是希望大家尽快开始转型,否则很可能会被这个时代淘汰。