附录 3:关于 AI 辅助开发与 AI 指导开发之间的界限——我们如何控制
提示
下文所说的 “现阶段” 都指本文编写的时间,即 2026 年。 以下观点均为作者个人观点,仅供参考。
虽然我们现在可以看到各种 AI 工具在疯狂刷屏——从最开始的 ChatGPT 到 DeepSeek、Claude Sonnet 再到 Claude Code、Codex,再到今年(2026 年)开始大火的 ClawBot、OpenClaw 以及基于这个概念的 AI 工具(例如 QoderWork、TraeWork、DeepSeek Harness 等
也许现在有人会说 “既然 AI 已经这么强了,那我把所有事情都交给 AI 不就好了
其实如果我们冷静下来想一想就会发现,很多时候,我们会认为一种机器会替代另一种需要人参与的活动,但是实际情况是其实并不会,反而是这些自动化产物的加入使得人类的作用变得越发紧要。例如在计算机刚开始在国外普及的 1980-1990 年代,就有很多人预计会计这个行业将会被淘汰。他们认为以后都是计算机自动算账的天下,会计以及金融分析已经没有未来了。但是结果呢?我们现在还是会盯着同花顺的一片绿深深感到无奈。那么在软件行业,情况是否也类似呢?关于这个问题,Frederick Brooks 在 1980 年代就给出了他的答案。在他的 The Mythical Man-Month
所有软件活动包括根本任务 -- 打造由抽象软件实体构成的复杂概念结构,次要任务 -- 使用编程语言表达这些抽象实体,在空间和时间限制内将它们映射成机器语言。软件生产率在近年内取得的巨大进步来自对后天障碍的突破,例如硬件的限制、笨拙的编程语言、机器时间的缺乏等等。这些障碍使次要任务实施起来异常艰难,相对必要任务而言,软件工程师在次要任务上花费了多少时间和精力?除非它占了所有工作的 9/10,否则即使全部次要任务的时间缩减到零,也不会给生产率带来数量级上的提高。
这段话是什么意思呢?Brooks 在这里想要表达的是:所有软件系统的设计都包含一个根本任务(包括理解需求、根据现有约束进行技术选型、进行架构设计、进行验收等)与一个次要任务(包括设计程序内部的数据结构与算法、进行编码实现、进行测试等
而近 40 年间出现的所有工具——包括高级程序语言、IDE、先进操作系统与硬件、互联网资料库、现代开发范式、现代系统基础硬件与软件设施等,大部分情况下只提高了这里的次要问题的解决效率。例如高级程序语言避免了程序员编写汇编代码与机器码、IDE 使程序的编译与调试更方便、先进操作系统与硬件提高了我们的编码速度、互联网资料库能解决我们在编码时遇到的大部分问题、面向互联网时代的敏捷开发方法(例如 Agile、Scrum 等)以及更先进的代码组织方法(例如面向对象编程、面向接口编程、面向切片编程、设计模式等)提高了我们的产品开发与迭代效率,降低了我们编写的代码出错或不能复用于其他项目的概率、Docker、Kubernetes(K8S
但所有这些工具都没有触及到我们本质的问题——即上面提到的根本任务。我们稍微思考一下就会发现,这些语言、工具与开发范式,本质上都是在帮我们降低次要任务的解决难度,而这些任何一样东西都没有触及到最本质的问题,也就是说这些工具无法帮我们组织用户需求、无法帮我们细化需求清单、无法帮我们搞清楚 “这个软件系统到底做到什么程度才算完成、如何具体定义完成” 这个问题、无法帮我们搞定最后的验收流程与用户反馈流程——因为我们的软件系统编写完以后,最终用户一定是人。这里我们暂时忽略 AGI 与更高阶段的意识形态问题,即便未来 AI Agent 可以充当 “用户” 来调用我们的系统,系统的设计目标与价值判断,依然来源于人类,并且这与我们现在要讨论的问题,即我们如何在 AI 时代下学习没有直接关系。
当然这里可能有人说:那现在面向 AI 进行编写的一系列 Skills、记忆相关的代码、MCP 工具等,那不都是 AI 这类机器在使用吗?话是这么说没错。但它们的产物最终的使用者还是人类,这些工具与规范的出现,只是人们为了规范 AI 的行为、将 AI 引导至正确的路径上所采取的外部限制措施。我们甚至可以推测——在目前的 AI 辅助开发实践下,我们的软件开发几乎一定会回到以前的文档先行模式。因为文档本质上就是在规范 AI 的行为、将 AI 引导至正确的开发路径,从而开发出我们想要的产品。这与前面的 Skills 等的本质是一样的。区别在于——Skills 这些工具是在所有项目中可以复用的、可以在任意地方被调用的,而产品相关的文档只为这一个软件系统或产品服务。
这里还有可能有人问:现在 AI 也能够对创意类的问题提出一些解决方案,是否能视为它也解决了软件开发的本质问题呢?答案是——对,但不完全对。问题在于,它是没有自主意识的。目前,基于 Transformer 架构的 LLM(大语言模型,Large Language Model)的本质都是一种 “贪心随机状态机
我们甚至可以在现在推测,未来随着 AI 理解代码的能力不断深入,代码本身反而会成为为 AI 准备的最好的文档。到那时,AI 辅助开发可能会再次回到现在的代码先行模式。
那么这与我们的学习有什么关系呢?关系在于,现在的 AI 是会犯错的。当我们询问 AI 一个并不存在的概念时,AI 就会为我们自信地回答一些错误的内容。这些内容大多是从它们自己的数据库中拼合而来的 “拼好解
然而事实又真的如此吗?其实不然。我们可以在这里做一个大胆的推测——未来随着 AI 的发展,最先被淘汰的往往是那些只会进行重复操作的程序员。他们的工作已经有大量的重复结果,自动化程序很容易就能够完成他们所能完成的所有操作,自然会最先被淘汰。而最难被淘汰的往往是那些能够做到 AI 做不到的大部分事情的程序员——他们能够分析用户的需求,能够根据用户的需求提出相关产品的灵感,也能够根据这个灵感进一步细化需求,最后通过严谨的语言指导 AI 来开发产品的程序员。
在 AI 时代,我们又需要保留多少能力呢?我们不仅需要保留创造力。我们还需要保留对底层的理解,以便在 AI 出错或不可用时仍然能够正确地完成我们的工作。此前 Claude Fable5 的禁令已经足以让我们明白,AI 可能会耗尽配额,可能会搞地区封锁,服务器可能会崩溃,网络可能不可达,但我们脑子里的知识不会。我们的大脑只要有充足的营养供应就能正常运作,不可能封锁自己,除非疾病或其他原因也不可能遇到崩溃,更不可能遇到网络不可达的问题。所以我们在这里需要理解 AI 对我们的作用——它是一个超级加速器,可以帮我们完成一些底层的、重复的工作,而不是一台轮椅,一台我们离了它就不能自己走路的轮椅。
我们再说回 AI 对创意类问题提出的解决方案。虽然 AI 现在能为我们的应用提出很多具有创意,甚至很多是我们自己想不到的方案,但是这些方案最终采纳与否,还是要由我们人来决定。它自己并不能脱离人类的操控来决定采纳或拒绝某版方案——因为 AI 的本质还是机器,而机器的职责是服务人类。虽然 AI 对创意类问题的解决方案收缩了一部分我们所谓的 “本质问题” 的范围,但它并没有令收缩范围后的问题消失。恰恰相反,它暴露了一些初学者不会面对的问题,包括涉及用户价值判断、涉及风险权衡、涉及系统边界的任务,这些任务恰恰是现阶段的 AI 最难替代的。
这时可能有人还要说:在多年的软件工程实践中,很多部分都是经验复用和模式匹配,那这些部分不能被 AI 替代吗?答案是——基本上能,但是这并不属于我们收缩范围后的本质问题。在收缩范围前,这些问题仍然属于本质问题,但当 AI 能够解决这部分模式匹配问题时,这部分问题就已经被划归到偶然问题上了。而本质问题还在那里,等待我们的决策。
那么,这对我们意味着什么?
如果我们把 AI 看作一个能力不断膨胀的实习生,那么我们的角色正在从 “编码工人” 转变为 “技术决策者
- 需求辨析能力——能从模糊的对话中提炼出真正的问题;
- 架构权衡能力——能在多个可行方案之间做出有依据的选择;
- 边界感知能力——能判断什么时候该让 AI 做,什么时候该自己上;
- AI 批判能力——能识别 AI 输出的幻觉与偏见,而不是盲从。
这些能力,不会因为 AI 变得更强而贬值——恰恰相反,AI 越强,它们就越珍贵。
未来的软件开发,不是 “AI 替代人类” 的零和博弈,而是 “人类借助 AI” 的协作进化。我们手中的工具变了,但我们工作的核心没有变:理解需求、创造价值、服务他人。 而这一切的起点,依然是那颗不断学习和思考的大脑,它不会被淘汰,也不会被替代,因为它是所有工具的最终解释者。