当开发环境退到后台——AI正在重新定义软件开发和软件本身

当开发环境退到后台——AI正在重新定义软件开发和软件本身

过去两年,软件开发发生的变化,可能比过去十几年加起来都更加值得注意。表面上看,我们看到的是 Copilot、Codex、各种编程 Agent,从最初帮助补全几行代码,逐渐发展到能够修改整个项目、运行测试、处理 GitHub 仓库,甚至在后台持续执行任务。但如果只把这些变化理解为“AI越来越会写代码”,其实还是低估了正在发生的事情。

真正变化的是整个软件开发的工作方式。

最近 OpenAI 正在推进的 Codex Cloud 就是一个很典型的信号。现在 Codex 已经可以在 OpenAI 管理的云端计算机上执行开发任务,连接代码仓库、准备依赖环境、修改代码、运行测试,而且任务可以在开发者自己的电脑休眠之后继续执行。开发者甚至可以从桌面、Web 或手机继续这些云端任务。 OpenAI 对 Codex 的定位也已经明显不再只是一个代码补全工具,而是在向多 Agent、后台任务以及端到端的软件工程方向发展。

但是目前这个阶段仍然有一个很明显的边界。

专业开发者还没有真正摆脱自己能够直接控制的开发环境。尤其是 iOS、macOS、Windows,以及涉及模拟器、真机、证书、硬件接口、复杂调试工具的项目,开发者仍然需要知道底下发生了什么。AI可以替你完成大量操作,但一旦碰到环境问题、架构问题、部署问题或者很难复现的 bug,开发者对操作系统、IDE、编译链、运行环境和网络架构的理解仍然非常重要。

所以现在其实是一个过渡阶段。

过去的软件开发方式,是人直接面对 IDE。我们打开 Visual Studio、Xcode、Android Studio,自己建立项目、修改代码、编译、运行、调试,再部署到服务器。

现在正在出现另外一种结构。

人首先面对 AI,然后 AI 再去面对 IDE、编译器、Git、测试框架、浏览器、服务器和各种工具。

这中间增加了一层智能代理。

这看起来只是增加了一个接口,实际上却可能最终改变整个软件工程的结构。因为一旦 AI 能够稳定地控制下面这些工具,开发者就没有必要知道这些工具具体在哪里。IDE不会消失,编译器也不会消失,Xcode、Visual Studio、Docker、GitHub Actions仍然存在,但是它们可能逐渐从人的视线中消失。

就像今天普通互联网用户并不知道一个网站后面运行着多少数据库、负载均衡器和容器一样,未来的软件开发者也未必需要天天面对编译器和项目文件。

他只需要说,我要增加这个功能。

AI判断应该修改哪些代码,调用什么工具,使用什么测试环境,运行哪些测试,然后把结果交回来。

开发者真正面对的东西,从“操作工具”逐渐变成了“表达意图”。

这也会带来另外一个非常重要的变化,就是有软件开发背景的人和没有开发背景的人之间,优势所在正在发生漂移。

过去的软件开发门槛主要来自实现能力。一个人必须懂编程语言、数据结构、操作系统、数据库、网络、框架和部署,才能把一个想法变成软件。

AI正在迅速降低这一层门槛。

但是这并不意味着软件开发专业知识突然没有价值了。恰恰相反,在目前这个阶段,有开发经验的人使用 AI 通常仍然具有明显优势。因为他知道一个系统应该怎样分层,知道数据库、前端、后端、身份认证、缓存、消息系统之间是什么关系,也知道 AI 给出的一个方案究竟是真的合理,还是仅仅“看起来能够运行”。

这种优势可能还会存在相当长一段时间。

只是它正在从“我会不会写这段代码”,转向“我能不能理解这个系统”。

再继续发展下去,优势可能进一步转移到另外一个层次——能不能理解问题本身。

一个没有软件工程背景的人,也许不会写 Swift,不懂 Kubernetes,也不知道 OAuth 的具体实现,但如果他真正理解一个行业的需求,知道用户到底在做什么,知道哪些流程是必要的,哪些约束不能被破坏,他仍然有可能通过 AI 构造出非常复杂的软件。

反过来,一个技术非常熟练的人,如果根本不知道自己在解决什么问题,那么即使 AI 把他的开发效率提高十倍,他仍然可能只是在十倍速度地制造没有意义的软件。

所以 AI 时代的软件开发能力,可能会逐渐从“实现能力”向“问题定义能力”转移。

但这里还有比开发过程更深的一层变化。

未来发生变化的,不只是“软件怎么开发”,而是“软件是什么”。

过去的软件基本上是给人使用的,所以软件设计一直围绕人的感官和操作能力展开。窗口、菜单、按钮、鼠标、触摸屏、导航栏,这些东西本质上都是为了让人理解计算机。

GUI其实是一种翻译层。

它把计算机内部非常复杂的状态,翻译成人可以理解和操作的界面。

但如果未来越来越多的软件不是由人直接操作,而是由 AI Agent 操作,这个前提就发生了变化。

Agent并不需要一个漂亮的按钮。

它需要的是一个稳定、明确、可以被机器理解的接口。

它甚至不需要“打开一个 App”。

它可能只是调用一个能力。

查询航班、购买商品、生成发票、修改数据库、提交代码、安排会议,这些原来分散在不同 App 中的功能,都可能逐渐被拆成可以被 Agent 调用的能力。

到这个时候,App作为一个完整封闭产品的概念就开始松动。

今天我们习惯说“打开某个 App 做一件事情”。未来可能变成“告诉 Agent 做一件事情”,至于背后调用了几个软件、几个服务、几个模型,用户根本不知道,也没有必要知道。

软件开始从“应用程序”变成“能力集合”。

而这些能力之间的连接,也会越来越机器化。

MCP就是这个方向上的一个例子。当然严格来说,MCP主要解决的是模型或 Agent 如何连接工具、数据和外部系统,它还不是一个完整的“Agent 与 Agent 互相协作协议”。但它体现出来的趋势非常清楚——未来软件之间的接口首先要考虑的对象,可能越来越不是人,而是机器。

再往前一步,就会出现大量 Agent 之间的任务分解、协作和调用。

一个 Agent理解你的目标。

另外一个Agent负责查资料。

一个Agent负责写代码。

一个Agent负责运行测试。

另外一个Agent负责部署。

甚至还有一个Agent专门负责审查前面几个Agent有没有犯错。

这个时候,传统意义上的前端、后台、App、服务之间的边界都会重新组合。

软件的生命周期也会变化。

今天的软件通常是启动、运行、退出。

Agent时代的软件未必如此。

有些软件可能长期存在,一直监控某个条件。条件满足以后才执行一次任务,然后再次进入等待。有些任务可能运行几分钟,有些可能运行几天,有些则可能永远没有所谓“退出”这个动作。

软件不再只是一个等待人点击的程序,而可能变成一个持续存在的行为过程。

这其实会重新定义“运行”这个概念。

同样,它也会重新定义“开发完成”这个概念。

过去,一个软件发布以后,开发基本告一段落。

未来,一个由 Agent 驱动的软件系统可能永远处于修改、测试、部署和调整之中。AI观察运行结果,发现问题,修改代码,再测试,再部署。软件开发和软件运行之间原来非常清楚的边界,会越来越模糊。

所以今天我们看到的所谓“云端开发”,可能只是整个变化中非常早的一步。

真正值得注意的并不是以后还需不需要 Xcode,也不是程序员还要不要写代码。

更根本的问题是,人与软件之间的关系正在改变。

过去人学习怎样操作软件。

后来人学习怎样开发软件。

下一阶段可能是人只负责表达目的、定义约束、判断结果,而大量实现过程由机器自己完成。

再往后,甚至软件本身也不再主要面向人,而是首先面向另外的软件和智能体。

如果这个方向继续发展,那么未来真正重要的软件工程能力,可能不再是熟练掌握多少种开发工具,而是三件事情——能不能把问题理解清楚,能不能把约束定义清楚,以及能不能判断机器最终做出来的东西究竟是不是我们真正想要的。

IDE并不会消失。

代码也不会消失。

服务器更不会消失。

它们只是可能像今天的数据中心一样,逐渐退到人的视线之外。

而开发者真正面对的,将不再是一台计算机,而是一层能够理解意图、组织工具、调用软件并协调其他智能体的智能系统。

从这个意义上说,我们现在经历的已经不只是一次编程工具升级。

它正在成为软件形态本身的一次变化。


了解 Geoffrey Chen 的更多信息

订阅后即可通过电子邮件收到最新文章。