生成式 AI 如何释放开发者的生产力?

暗物质计算
• 阅读 227

生成式 AI 可以将程序员的开发速率提高两倍。技术管理者有望通过 AIGC 应用,大幅缩短四类关键开发任务的完成时间,进而提升组织生产力。

——麦肯锡《通过生成式 AI 释放开发者生产力》

01 生成式 AI 将如何影响研发效能?

麦肯锡最近的一项实证研究发现,生成式 AI 工具可以显著提升程序员的开发速率,进而显著提升组织生产力

该研究对来自美国和亚洲各地的 40 余名开发者展开了观察和实验。参与者们需要执行三种常见的开发任务——代码生成、代码重构和文档编写,而开发者特征、任务的完成时间和复杂性,以及代码质量等数据被科学地记录下来。

研究结果表明,在生成式 AI 的辅助下,可维护性代码文档可以在一半的时间内完成,新代码生成效率提升近一倍,而代码重构类任务的完成时间也节省近三分之一。在新工具和流程的推动下,结合正确的技能提升和企业赋能,这些速度的提升可以转化为生产力的提高,并超越过去工程生产力的进步。

生成式 AI 如何释放开发者的生产力?

不过,任务完成时间的减少也可能会因开发任务的复杂性和开发者经验而有所差异。对于高复杂度任务,由于开发者缺乏必要的背景知识,其时间节省不足 10%。此外,在某些情况下,使用了 AIGC 工具的初级开发者(指经验不足一年的开发者)比不使用工具要多花 7%-10% 的时间。

研究还发现,当开发者和工具协作时,研发质量并不会因为速度提升而牺牲或降低。有 AI 辅助的代码在缺陷率、可维护性和可读性等方面的表现更佳。参与者们指出,开发者们正在迭代中积极地应用工具以实现更高的质量,是以该技术应该用于赋能开发者,而不是取代他们。

综合来看,想要使用生成式 AI 并最大限度地提高生产力和降低风险,技术管理者需要采取结构化方法,比如生成式 AI 的培训和辅导、用例选择、技能提升和风险控制。

02 生成式 AI 在四个方面卓有成效

1. 更快完成手动和重复的工作

生成式 AI 可以处理常规任务,例如自动填充标准函数、完成键入中编码语句、根据给定提示按一定标准格式书写代码功能文档等。在此过程中,AI 就能解放开发者,让他们能够解决更复杂的业务挑战,快速开发新功能。

2. 更高效地启动新代码的初稿

面对空白文件时,开发者可以在 AI 工具中获得编码建议。参与者反馈到,AI 辅助工具提供了有用的代码建议,这使他们摆脱了写作障碍,可以更快地开始创作。「这类工具使我能够更快地进入心流状态」,一位参与者如是说到。

3. 加速现有代码的更新

如果能提供有效的提示词,开发者使用生成式 AI 还可以更快地对现有代码展开更多更改。例如,为了减少从在线编码库调整代码和改进预写代码的时间,开发者可以将代码作为提示词,提交迭代查询,要求工具根据事先提供的标准进行调整。

4. 提高开发者应对新挑战的能力

虽然生成式 AI 对复杂任务的提升效果比较有限,但它可以帮助开发者快速温习完成工作所需的陌生代码库、语言或框架。在面临新挑战时,他们可以转向工具来获得如概念解释和框架使用指南等帮助,以更好地完成工作。

因此,使用 AIGC 工具执行复杂任务的开发者在规定时间内完成任务的可能性要比不使用工具的开发者高出 25%-30%。

生成式 AI 如何释放开发者的生产力?

除了生产力的提高,研究还发现,让开发者发挥出最大生产力可以显著改善开发者的体验,从而帮助公司留住并激发最优秀的人才。使用生成式 AI 工具的开发者,其总体幸福感、满足感和心流状态是其他人的两倍多。

生成式 AI 如何释放开发者的生产力?

03 依赖开发者专业知识的三个领域

生成式 AI 可以做很多事情,但其使用效果取决于使用它们的开发者的技能水平。从参与者的反馈来看,人类的监督和参与在以下三个领域至关重要:

1. 检查代码的漏洞和错误

生成式 AI 有时会提供不正确的编码建议,甚至会在代码中引入错误。一名开发者表示,她必须输入大量的提示来纠正工具的错误假设,然后才能得到答案。

2. 贡献必要的背景信息

虽然现成的 AIGC 应用拥有很多编码知识,但它们不知道项目和组织的具体需求。要确保最终的软件产品能与其他应用程序无缝集成,满足公司的性能和安全要求,并最终解决用户诉求,这些信息必不可少。

开发者需要通过提示词为 AI 提供背景信息,包括代码如何使用、由谁使用、接口类型以及软件将与之交互的其他系统,使用的数据等等。

3. 应对或分解棘手的编码要求

参与者还提到,生成式 AI 更适合回答简单的问题(如优化代码片段),而不是复杂的需求(如将多个框架与不同代码逻辑相结合)。

一位开发者分享到,为了获得可用的解决方案来满足多方面的需求,他首先必须手动地组合各个组件,或将代码分解为更小的片段。「当问题变得更加复杂并且需要考虑全局时,生成式 AI 提供的帮助最小。」

写在最后

ChatGPT 之后,不计其数的 AI 应用和辅助工具涌现,从代码生成、调试到审查、优化,我们都能发现许多令人兴奋的新面孔。也许在不久的将来,生成式 AI 会构建出新的规则,改变代码编写、审查和优化的方式,甚至成为开发者工作的必备工具。

麦肯锡认为,生成式 AI 应该成为开发者探索复杂任务的最强辅助,为其赋能,而不是取而代之。 这与 LigaAI 的观点不谋而合。

作为一款面向开发者的、以人工智能技术为核心的研发管理工具,LigaAI 自成立的第一天起就坚信,开发者最宝贵的时间和精力不该被机械重复的繁杂琐事绊住,形如信息同步、状态更新、任务流转等工作就该交给机器完成。只有这样,开发者才能专注地钻研技术、解决问题、交付价值,释放更多生产力。

相较于上一代工具,LigaAI 创新提出了「智能协作」概念,致力于以 AI 赋能每个用户,真正为研发团队提升效能。如果你正苦于滞后的、失真的进度数据、无法了解团队和项目的真实进展,或者疲于应对各种通知、提醒和干扰,欢迎注册使用我们的产品,体验新一代智能研发协作。

立即注册使用:新一代智能研发协作平台 LigaAI
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
6个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Easter79 Easter79
3年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
Jacquelyn38 Jacquelyn38
4年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
暗物质计算
暗物质计算
Lv1
我做的所有改变,只为了进入你的世界
文章
2
粉丝
0
获赞
0