正文
开源和开源软件的最终实现,是两回事,源代码永远是二进制软件包的一部分,二者并非 100% 保持一致, 不要把二者混淆在一起。
InfoQ:曾经在微软 Build 大会上,您预言:未来的开发者,都应该是 AI 开发者。到了今天,预言好像已经变成了现实,开心吗?
Julia:
哈哈哈,很开心。
Julia:
我觉得,现在的 AI,比我当初想象的 AI ,能力要强太多了。当时的 AI 还像一个小朋友,今天的 AI 完全是颠覆性的。从 GPT 3.5 发布之后,AI 发生了质的改变,超出了我的想象。我经常跟我的团队说,以前好像还是马车时代,现在已经是汽车引擎时代。
InfoQ:智能编程引人瞩目,微软应该也很关注这一领域?
Julia:
应该说,微软是发起者,GitHub Copilot 是行业内第一个大型 GenAI 智能编程应用。
InfoQ:那么能否分享一下,过去三年,微软在设计智能编程产品的过程中,思路上有什么变化?
Julia:
过去三年,微软对 AI 的理解变得越来越深。另外,微软和业界一样,都觉得计划赶不上变化。GitHub Copilot 的第一个预览版,实际上在 2021 年的夏天就推出了。只有一个功能,就是在你做自动补全的时候, AI 跳进来,给你推荐一段代码。实现这个功能,需要开发者给出提示词,说明目的,来提升代码补全的效果。
等到 ChatGPT 出来之后,我们发现,咦,实际上开发者可以和 AI 对话,通过大模型来理解代码,使得智能编程工具的能力得到很大的提升。所以 GitHub Copilot 是逐步变成今天的样子。
但当时我做了一个判断,我觉得,放在今天仍然适用。
很多技术人员写完代码之后,觉得非常喜欢自己的代码,越看越喜欢。让他把这段代码干掉,对他而言,是一个比较困难的事。相当于你在否定他。所以我做了一个预言:就是在 AI 时代,你要不断否定自己以前写的代码。
另外,我们通常比较习惯做大的系统工程。比如 Azure,或者某个操作系统,需要有很强的稳定性。围绕架构的可扩展性,做很好得设计。但在 AI 时代,当你开始想这些设计性、扩展性的时候,就已经晚了、慢了。
因为 AI 的能力进化得非常快,可能以前需要用某段代码来解决的问题,过了一周、一个月、两个月,用大模型就可以自动解决。所以你得不断去否定、不断去重写,不断去创新,这对很多工程师来说,都是一个新的挑战,也是一种全新的软件开发思路。
所以关于 GitHub Copilot, 我们从战略规划开始,就想走在 AI 的最前沿,根据大模型的能力,不断推出新的功能。从最简单的编程助手,到“agent mode(代理模式)”,未来再到 vibe coding(氛围编程),给 AI 一个创意,AI 就会帮你实现这段代码。
当然,表达能力越强,智能编程的效果也会更好。AI 就像一个校招的大学生,对业务完全不了解,需要你将需求和背景描述清楚。如果你都说不清楚,那 AI 就更不清楚。很多开发者在自我介绍时,会提到自己比较内向,表达能力不行,但代码能力还不错。到了 AI 时代可能就要突破这个短板。
InfoQ:如您所说,该如何看待“AI 越来越强,开发者的重要性在下降”这一观点?能否给开发者三个建议?
Julia:
可以看看 SWE-bench Verified 榜单,问题解决率最高也只达到 65% 左右。你想想,如果你有一堆系统问题需要解决,但 AI 解决简单问题的成功率也只有 65% ,说明 AI 还有一些路要走。再比如说 vibe coding,做个小 APP 还好,解决生产级的工程问题,可能就很难。
其中难点在于,AI 不清楚某段代码的上下文,即使是一个初来乍到的人类工程师,也很难说清楚某段代码在整个生产线中里的具体作用。只有对业务全流程有了解,才能理解具体模块的划分逻辑。而这也是 AI 接下来会面临的挑战。