2.0版本的开发工具已正式登场

发表时间: 2023-03-28 22:58

AI 正在变革软件工程:开发工具 2.0 时代

生成式 AI 的爆发已经开始改变了很多行业的工作方式,但对于软件工程来说,转型才刚刚开始。

从 Copilot 说起

不可否认 Github Copilot 成功的引发了一场 AI 编程工具的浪潮,在其《Research: quantifying GitHub Copilot’s impact on developer productivity and happiness》这篇文章中对 Copilot 为开发者的生产力和幸福指数做了一个研究,结果发现

  • 使用 GitHub Copilot 的开发人员比不使用 GitHub Copilot 的开发人员完成任务的速度快 55%
  • 使用 GitHub Copilot 的小组完成任务的比例为 78%,而没有使用 Copilot 的小组为 70%
  • 88% 的使用者认为自己生产力提高了
  • 96% 的使用者认为自己处理重复性的工作更快了
  • 88% 的使用者认为自己可以更加专注于更喜欢的工作上了

报告地址:
https://github.blog/2022-09-07-research-quantifying-github-copilots-impact-on-developer-productivity-and-happiness/



但是当我们把眼光放到整个软件工程行业的时候,才发现 Copilot 可能只是 AI 改变软件工程师工作方式的开端。

关于 Copilot 可以查看 与 AI 结对编程,好搭档 Copilot

开发工具 2.0 与现状

红衫资本最近发布了一篇文章《Developer Tools 2.0》,该文不仅定义了”开发工具 2.0“还整理了一张图,用以展示现有的开发工具在不同的软件研发阶段的应用。

如下:


这图本质上是一个表格,每一行从左到右代表了软件的时代版本,分为

  • Incumbents:当前主流使用的标准工具
  • Challengers:挑战者,一些加入了 AI 特性的创新型工具
  • Dev Tools 2.0:通过 AI 改变软件创造方式的工具

列的话从上到下代表了软件开发的各个阶段,或者说生命周期,分别为

  • Deployment:部署阶段,包括 CI/CD、云、监控等
  • Implementation:实现阶段,包括 code review 工具、文档工具、代码编写维护工具等
  • Setup:配置阶段,包括 IDE、终端、ISSUE 记录工具等

接下来我们从上往下来分析。

Deployment 所属区域中,软件还是集中在 Incumbents(主流) 和 Challengers(挑战者) 中,我们可以看到很多熟悉的产品,比如 Datadog、Grafana、Aws、Jenkins 等。

目前还没有 Deployment 工具被归属到 Dev Tools 2.0,算是空白



Implementation 中,目前已有很多 Dev Tools 2.0 了,比如 AI code review 工具 Codeball、DEBUG 和对话工具 ChatGPT、AI 文档工具 Mintlify、以及 AI 代码补全工具 Copilot 和 Tabnine。

注意看细分的 write docs(文档编写) 和 write & maintain code (代码编写维护)中,在主流中这些都是人力维护,这说明当前的软件工程已经处于一个分水岭了。

对比 Deployment 的话,Implementation 的 2.0 可谓是百花齐放。



最后就是 Setup 了,目前只有 Cursor (一款集成了 ChatGPT 4 的代码编辑器)被完全定义为 Dev Tools 2.0



这里比较意外的是 warp 和 fig 居然没有被定义为 2.0 工具,因为我前段时间刚试用了 warp 终端,有兴趣的可以看看我发的视频。

21世纪的终端和 AI 相遇,会产生什么火花?Warp 体验

不过再回顾一下红衫资本对 Dev Tools 2.0 的定义:通过 AI 改变软件创造方式的工具。

这里其实也就想通了,warp 和 fig 只是带了 AI 的特性,但是还没有改变软件的创造规则,所以就被列入了 challenger 里。

从目前世面上的工具来看,AI 有巨大的机会改变软件工程,并且这是一个关于“谁”,而不是“是与否”的问题。

开发工具 2.0 的共同点

再再再次啰嗦一下红衫资本对 Dev Tools 2.0 的定义:通过 AI 改变软件创造方式的工具。

我考察了 5 个图中被归类为 2.0 的软件,看看它们是如何改变软件的创作方式的

软件

官网

状态

说明

Cursor

https://www.cursor.so/

可用

AI 代码编辑器

Codeball

https://codeball.ai/

可用

AI code review

ChatGPT

https://chat.openai.com/

可用

对话平台

grit

https://www.grit.io/

需要申请内测

基于 AI 的代码迁移和升级工具

Adrenaline

https://useadrenaline.com/

可用

AI 代码 Debug 工具

首先是 Cursor,我们可以用自然语言来写新的代码、维护既有代码,从这点来看它是超越了 Copilot 的(这不是指下一代 Copilot X )。



然后是 Codeball,它主要是用 AI 来自动执行 code review,它可以为每一个 PR 进行评分(检查代码规范、Bug 等)并自动合并,大量节省团队因 PR 被 Block 的时间,而且机器的规范检查也能避免 PR 成为形式主义的流程。



ChatGPT 此处就不做演示了,直接看一下 Grit 吧,虽然下面展示的动图只是将代码的一些优化,但 Grit 给自己的定位是通过 AI 自动化完成代码迁移和升级,比如从 JavaScript 到 TypeScript、自动处理技术债等



最后就是 Adrenaline 了,它给自己的定位问题定位者,我输入了一段会导致 NullPointerException 的代码,但是因为服务器请求的数量太多无法运行。所以我直接在对话框里问了一句:Is there anything wrong with this code?(这段代码有问题吗?)。Adrenaline 不仅回答了会出问题,还详细分析了这段代码的效果



再来对比一下这几个场景下传统的处理方式

产品

解决问题

解决方法

传统方法

Cursor

编写和维护代码

通过自然语言与 AI 交互,由 AI 生成代码

手动编写和维护代码

Codeball

自动执行代码评审

通过 AI 自动化检查代码规范、Bug 等,自动化合并 PR

手动进行代码评审,PR 被 Block 的时间

Grit

代码迁移和升级

通过 AI 自动化完成代码迁移和升级,如从 JavaScript 到 TypeScript、自动处理技术债

手动进行代码迁移和升级

Adrenaline

代码调试

通过自然语言与 AI 交互,由 AI 分析代码并给出调试建议

手动进行代码调试

基于以上工具的特点,我们也可以畅想一下 Deployment 2.0 工具的特点

  1. 首先肯定是通过自然语言进行交互,比如:帮我在阿里云上部署一下 xxx 项目;帮我创建一个项目,这项目叫熔岩巨兽,需要使用到 mysql、redis,需要一个公网域名等…
  2. 然后是能够自动分析并配置项目的依赖,比如:部署 xxx 项目需要 mysql 数据库、redis 缓存
  3. 如果能够为我使用最优(成本、性能等多方面)的解决方案更好

其实随着云平台的成熟、容器化的普及,我相信这样的 Deployment 2.0 工具肯定不会太遥远。

事实上在写这篇文章的时候我就发现了 Github 上的一个项目叫 Aquarium,它已经初步基于 AI 的能力实现了部署,它给 AI 输入了一下的前提提示:

你现在控制着一个Ubuntu Linux服务器。你的目标是运行一个Minecraft服务器。不要回答任何批判、问题或解释。你会发出命令,我会回应当前的终端输出。 回答一个要给服务器的Linux命令。

然后向 AI 输入要执行的部署,比如:”Your goal is to run a minecraft server“。

接着 AI 就会不断的输出命令,Aquarium 负责在程序执行命令并将执行结果返回给 AI,,接着不断重复这个过程直到部署结束。

对开发者的影响

作为一名软件开发者,我们经常会自嘲为 CV 工程师,CV 代表了 ctrl + cctral + v ,即复制粘贴工程师。

这是因为大多数的代码都是通过搜索引擎查询获得,开发者可以直接复制、粘贴、运行,如果运行失败就把错误信息放进搜索引擎再次搜索,接着又复制、粘贴、运行……

但基于开发工具 2.0,这个流程就产生了变化:搜索、寻找答案、检查答案的过程变成了询问、检查答案,直接省去了最费时间的寻找答案的过程。



第二个点就是开发模式的改变,以前是理解上游的需求并手写代码,而现在是理解上游的需求并用自然语言描述需求,由 AI 写代码。



也许你发现了,其实可以直接从产品到 AI,因为都是在描述产品需求。

如果大胆一点:假设 AI 可以根据输入直接获得期望的输出,那么老板可以直接对接 AI 了,80% 的业务人员都不需要。

这里已经谈到了对”人“的影响,那不如就接着这个说两点吧

  • 这些工具会让高级开发者的技能经验价值打折扣,高级和初级的编码能力会趋于拟合,因为每个人都拥有一个收集了全人类知识集的 AI 助手
  • 会编程的人多了,但是适合以编程为工作的人少了

很多开发者对此产生焦虑,其实也不必,因为这是时代的趋势,淹没的也不止你一个,浪潮之下顺势而为指不定也是一个机遇。

如果光看软件工具 2.0,它给软件工程带来的是一次转型,是一次人效的变革,目前来看还没有达到对软件工程的颠覆,那什么时候会被颠覆呢?

有一天有一个这样的游戏出现了,每个人在里面都是独一无二的,系统会为每个人的每个行为动态生成接下来的剧情走向,也就是说这个游戏的代码是在动态生成,并且是为每一个人动态生成。这个游戏的内存、存储空间等硬件条件也是动态在增加。 这就是地球 Online

短期来看,AI 还不会代替程序员,但会替代不会用 AI 的程序员。

AI 正在吞噬软件

原 Netscape(网景公司)创始人 Marc Andreessen 说过一句经典的话:软件正在吞噬世界。

人工智能领域知名科学家 Andrej Karpathy 在 2017 年为上面的话做了补充:软件(1.0)正在吞噬世界,现在人工智能(软件2.0)正在吞噬软件

Software (1.0) is eating the world, and now AI (Software 2.0) is eating software.

你准备好了吗?

参考

  1. https://www.sequoiacap.com/article/ai-powered-developer-tools/
  2. https://karpathy.medium.com/software-2-0-a64152b37c35
  3. https://github.blog/2022-09-07-research-quantifying-github-copilots-impact-on-developer-productivity-and-happiness/
  4. https://github.com/fafrd/aquarium