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% 的运用者认为自己能够更加专注于更喜欢的作业上了
- …
原文地址:github.blog/2022-09-07-…
从数据上来看,Copilot 现已是十分成功了,咱们会认为这现已是一个大的革新,可是当咱们把眼光放到整个软件工程职业的时分,才发现 Copilot 可能仅仅 AI 改动软件工程师作业办法的开端。
我从前写了一篇 Copilot 的体会文章,有爱好能够看看 # 与 AI 结对编程,好搭档 Copilot
开发东西 2.0 与现状
红衫资本在《Developer Tools 2.0》中界说了”开发东西 2.0“ :经过 AI 改动软件发明办法的东西。
还整理了一张图用以展现现有的开发东西在不同的软件研制阶段的应用。
这图本质上是一个表格,每一行从左到右代表了软件在当时商场的占用水平,分为
- 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 (代码编写保护)中,在干流中这些都是人力保护,这说明当时的软件工程现已处于一个分水岭了:从人工到 AI。
比照 Deployment 的话,Implementation 的 2.0 东西可谓是百花齐放。
最终便是 Setup 了,现在只有 Cursor (一款集成了 ChatGPT 4 的代码编辑器)被彻底界说为 Dev Tools 2.0
这里比较意外的是 warp 和 fig 竟然没有被界说为 2.0 东西,由于我前段时刻刚试用了 warp 终端,有爱好的能够看看我发的视频。
其实回忆一下红衫资本对 Dev Tools 2.0 的界说就能了解了:经过 AI 改动软件发明办法的东西。
warp 和 fig 仅仅带了 AI 的特性,还没有改动软件的发明规矩,所以就被列入了 challenger 里。
从现在世面上的东西来看,AI 现已有了巨大的机会改动软件工程,并且这是一个关于“谁”,而不是“是与否”的问题。
开发东西 2.0 的共同点
再再再次啰嗦一下红衫资本对 Dev Tools 2.0 的界说:经过 AI 改动软件发明办法的东西。
我考察了 5 个图中被归类为 2.0 的软件,看看它们是如何改动软件的创造办法的
软件 | 官网 | 状况 | 说明 |
---|---|---|---|
Cursor | www.cursor.so/ | 可用 | AI 代码编辑器 |
Codeball | codeball.ai/ | 可用 | AI code review |
ChatGPT | chat.openai.com/ | 可用 | 对话平台 |
grit | www.grit.io/ | 需求请求内测 | 依据 AI 的代码搬迁和晋级东西 |
Adrenaline | useadrenaline.com/ | 可用 | AI 代码 Debug 东西 |
首先是 Cursor,咱们能够用自然语言来写新的代码、保护既有代码,从这点来看它是超越了 Copilot (这不是指下一代 Copilot X )。
然后是 Codeball,它主要是用 AI 来主动履行 code review,它能够为每一个 PR 进行评分(查看代码标准、Bug 等)并主动兼并,大量节约功用特性因 PR 被 Block 的时刻,并且用机器替代人做查看也能避免 Review 成为形式主义的流程。
ChatGPT 此处就不做演示了,直接看一下 Grit 吧。虽然下面展现的动图仅仅将代码片段的优化,但 Grit 给自己的定位是经过 AI 主动化完结整个项目的代码搬迁和晋级,比方从 JavaScript 到 TypeScript、主动处理技术债等
最终便是 Adrenaline 了,它是一个 AI Debuger(调试器?),我输入了一段会导致 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 东西的特色
- 首先必定是经过自然语言进行交互,比方:帮我在阿里云上布置一下 xxx 项目;也能够说帮我创建一个项目,这项目叫熔岩巨兽,需求运用到 mysql、redis,需求一个公网域名等…
- 然后是能够主动剖析并装备项目的依赖,比方:布置 xxx 项目需求 mysql 数据库、redis 缓存
- 如果能够为我运用最优(成本、功能等多方面)的解决方案更好
其实随着云平台的老练、容器化的普及,我相信这样的 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 + c
和 ctral + 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.
所以,你准备好了吗?
参考
- www.sequoiacap.com/article/ai-…
- karpathy.medium.com/software-2-…
- github.blog/2022-09-07-…
- github.com/fafrd/aquar…