大模型与 IDE:软件开发的进化

蹩脚的方法

我最早从 2022 年上半年开始使用 Github Copilot, 但是那时候使用体验一般,提示的速度很慢,准确度也不够,提示的内容不是我想要的。没觉得对于工作有什么实质性的帮助,后来就没继续用了。

2022 年年底 ChatGPT 爆火之后,我大概在 2022 年 12 月或者 2023年 1 月开始使用它。我使用的最多的场景就是写代码,主要以 Python 函数和 shell 脚本为主。使用的方法就是我在对话框中用文字描述我的需求,然后让ChatGPT 输出代码。一开始觉得非常好用,因为对于一些不太复杂的场景,准确率还是非常高的。一直到 2023 年 11 月我还经常使用这个方法,做的最极端的一个尝试是用 GPT4 给OriginBot(一个小机器人)开发监控功能,整个功能所有的代码都是以对话的形式让 GPT 生成。详细内容可以看https://panzhixiang.cn/2023/我让GPT4为OriginBot 开发了一个监控功能/

但实际上,我很早就觉的用这种方式让 ChatGPT 来协助写代码并不是很方便。因为我要在编辑器和 ChatGPT 的对话框之间来回切换,复制黏贴代码才能调试,而且,很多时候要结合现有的代码才能表述清楚需求,这就更麻烦了,因为要把其他文件中的代码复制到 ChatGPT 的对话框。

好用的插件

我记得大概 2023 年秋天开始,阿里推出了通义灵码,我第一时间就体验了一下,感觉发现了新世界。它让我可以在编辑器内直接针对一段代码进行操作,让它为我解释代码、添加注释、优化等等,而且可以把更新的代码一键应用到原文件中,再也不用手动复制黏贴了。虽然能感觉到通义灵码背后的模型跟 GPT4 还有一定的差距,但是从使用体验角度来说好了非常多。

再后来没多久,公司就采购了企业版 Github Copilot,有了 GPT 加持的 Copilot 比起2022 年上半年的时候好用了很多,而且由于 GPT4 的模型能力比较强大,在写代码的能力上比起通义灵码更好,所以很长一段时间我是公司的项目使用企业版的 Github Copilot,个人的项目使用通义灵码。

后面陆续有很多类似的插件出现,字节的 MarsCode、智谱的 CodeGeeX 等,但我也没怎么试过,因为看介绍感觉其实都是一类风格的产品。

大模型驱动的 IDE

Cursor

今年上半年我突然发现有很多人推荐 Cursor 这个IDE,各种吹捧,甚至有小学生使用 Cursor 开发了一个 app。我最初不喜欢 Cursor,因为我一直比较反感吹捧和标题党,但是架不住推荐的人太多了,而且后来有一个身边的朋友也向我推荐 Cursor,我就体验了一下 Cursor。

体验之后发现,Cursor 的火爆是有道理的。

不同于通义灵码、Github Copilot 这样的插件,Cursor 是基于 VS code 做二次开发,把大模型嵌入到用户的交互中去,体验上好很多。Cursor 还有一个比较实用的功能:codebase,它让用户可以直接跟代码库进行沟通,比如你可以直接问它某一个业务逻辑在哪个代码文件中,具体是怎么处理的,这是通义灵码这样的插件不能提供的。比如下面这个截图,是我使用 cursor 来询问 originbot代码库一个问题。

使用 cursor 向 originbot 代码库提问

红框的部分是 cursor 搜索和思考的过程,因为比较长,我没有展开来,但是从结果来看,是比较准确的,完全可以用于实际生产。

Cursor 很火的另一个重要原因是它默认使用的大模型是 claude 3.5 sonnet。这个模型在编码上的能力的确很强大,我也能理解有人说“小学生使用 Cursor 开发了一个 app”这种话了。在 cursor + claude 3.5 sonnet 的帮助下,小学生开发一个 demo 性质的 app 是完全可能的,并不难。

cursor 的免费额度很少,用完之后对于大模型的调用就要排队,排队时间还挺长的,而且自动补全功能也不可用了。不过它允许用户自己配置大模型,所以我有一段时间使用 DeepSeek + Cursor + 通义灵码的组合,以非常低的价格享受了非常好的编码辅助体验。

windsurf

windsurf这个工具是我10 月份从歸藏的 AI 资讯发现的。体验之后就再也回不去了,而且我也第一次为 IDE 工具付费,是的,我现在订阅了 windsurf pro,每个月 10 美金,但是非常值。上周在一场公司内部的大模型相关分享结束之后闲聊的时候,我向我们的 CEO 推荐了 windsurf,结果他在第二天的分享上就向别人推荐了。

windsurf 跟 cursor 非常像,cursor 有的功能 windsurf 都有(除了使用自定义的大模型),但它还引入了 flows 的功能设计, 而且 windsurf 给自己的称呼是“The first agentic IDE”。

下面这张图是 windsurf 官方对于 flows 的解释:

windsurf flows

我用白话解释一下。
假设你现在要从零开发一个项目(简单的项目),你可以在 windsurf 的聊天窗口用文字描述清楚需求,然后它就会开始编写代码,这个过程中,它会尝试分析现有的代码和文件(如果有的话),然后制定计划,然后执行,它编写代码时候可以直接帮助你创建、更新和删除文件,如果需要安装依赖、执行测试,它也可以帮你在终端中执行命令。总之它可以帮你做任何开发过程中需要做的事情,你只需要告诉它你的需求,然后点击 Accept 或者 Reject 就行了。

另外,它的订阅费只有 cursor 的一半,10 美金一个月。所以我在试用结束后就付费订阅了。

依然需要优秀的工程师

虽然像 cursor、windsurf 这样的IDE 工具已经非常强大了,但是想要开发产品级的项目,依然需要优秀的工程师。至少现阶段是这样的

cursor、windsurf 这样的工具,让它写个几十行的代码是没有问题的,基本上可以不做修改拿来就用。但是当项目代码稍微多一些(比如有十个以上的文件,1000 行以上代码),如果只依靠它们,会越做越乱。而且在项目的技术栈选择、架构设计和业务逻辑这些方面,也不是大模型可以独立完成的,需要有技术能力、熟悉公司情况的工程师做出决定。

从我们工程师的个人角度来看,该学的还是要学,该会的还是要会。因为windsurf 这类工具可以提高我们的效率,但是不能提升我们的能力。举一个我最近遇到的例子。

我一直是使用 Django 的,但是最近需要使用 FastAPI,我最开始想偷懒,直接用 windsurf 开发,但是由于我对 FastAPI 完全不会,很快就发现我没有能力判断大模型写的代码能不能用,更糟糕的是,随着项目变的复杂,我发现我不知道应该怎么提出问题。后来还是去学了一下 FastAPI,学它的语法、特点、注意事项和使用案例等,对它有一个基本的了解后,再进行开发,情况就好很多了。可以看到,windsurf 并不能让我掌握 FastAPI,但是在我基本了解 FastAPI,可以快速进行开发。

就我自己的经验来看,对于一门编程语言、一个框架、一个工具掌握的越好,大模型加持的 IDE 工具带来的效率提升感受越明显。因为它可以帮你做很多你会做但是耗时、繁琐的事情。

现在一个工程师的产出 = X * Y,其中 X 是工程师的个人能力,Y 是 windsurf 这样的工具带来的系数。作为一名工程师,可以利用大模型帮助我们快速提升 X,也应该以开放的心态多接触和使用类似 windsurf 这样的工具以增大 Y。

面试应该有所变化

我之前看到过一些文章,说企业和面试官很苦恼不知道如何避免候选人在面试过程中使用大模型来作弊(远程面试),也看到过一些相关的产品,既有帮助候选人使用大模型作弊的产品,也有帮助面试官检测候选人是否使用大模型作弊的产品。

我觉得企业和面试官们应该做出改变。因为大模型已经诞生,并且给软件开发行业带来了巨大的变化,不可能也不应该在日常工作中回避大模型,那么就应该考虑在面试过程中允许候选人使用大模型,并且考察他们是如何使用的。如果一个候选人只知道问大模型,并且相信大模型的所有输出,这个人大概率是不合格的,如果一个候选人从来没使用过大模型,也完全没有打算去尝试,那他大概率也是不合格的。

软件工程师是一个夕阳行业

前不久在一个大模型技术分享会上,有一个人说“我们所从事的其实是一个夕阳行业“。在某种程度上,我是认可这句话的,因为随着大模型技术的发展,也许要不了几年,软件工程师的需求会极大减少,当然了,也包括 SRE、DevOps、测试这些岗位,甚至也包括很多算法类的岗位。

我还是坚持我在你或许真的不如大模型中的观点:工程师不会被大模型取代,但是不使用大模型的工程师会被善于使用大模型的工程师取代。