生成式 AI 可以将程序员的开发速率提高两倍。技术管理者有望通过 AIGC 应用,大幅缩短四类关键开发任务的完成时间,进而提升组织生产力。
——麦肯锡《通过生成式 AI 释放开发者生产力》
01 生成式 AI 将如何影响研发效能?
麦肯锡最近的一项实证研究发现,生成式 AI 工具可以显著提升程序员的开发速率,进而显著提升组织生产力。
该研究对来自美国和亚洲各地的 40 余名开发者展开了观察和实验。参与者们需要执行三种常见的开发任务——代码生成、代码重构和文档编写,而开发者特征、任务的完成时间和复杂性,以及代码质量等数据被科学地记录下来。
研究结果表明,在生成式 AI 的辅助下,可维护性代码文档可以在一半的时间内完成,新代码生成效率提升近一倍,而代码重构类任务的完成时间也节省近三分之一。在新工具和流程的推动下,结合正确的技能提升和企业赋能,这些速度的提升可以转化为生产力的提高,并超越过去工程生产力的进步。
不过,任务完成时间的减少也可能会因开发任务的复杂性和开发者经验而有所差异。对于高复杂度任务,由于开发者缺乏必要的背景知识,其时间节省不足 10%。此外,在某些情况下,使用了 AIGC 工具的初级开发者(指经验不足一年的开发者)比不使用工具要多花 7%-10% 的时间。
研究还发现,当开发者和工具协作时,研发质量并不会因为速度提升而牺牲或降低。有 AI 辅助的代码在缺陷率、可维护性和可读性等方面的表现更佳。参与者们指出,开发者们正在迭代中积极地应用工具以实现更高的质量,是以该技术应该用于赋能开发者,而不是取代他们。
综合来看,想要使用生成式 AI 并最大限度地提高生产力和降低风险,技术管理者需要采取结构化方法,比如生成式 AI 的培训和辅导、用例选择、技能提升和风险控制。
02 生成式 AI 在四个方面卓有成效
1. 更快完成手动和重复的工作
生成式 AI 可以处理常规任务,例如自动填充标准函数、完成键入中编码语句、根据给定提示按一定标准格式书写代码功能文档等。在此过程中,AI 就能解放开发者,让他们能够解决更复杂的业务挑战,快速开发新功能。
2. 更高效地启动新代码的初稿
面对空白文件时,开发者可以在 AI 工具中获得编码建议。参与者反馈到,AI 辅助工具提供了有用的代码建议,这使他们摆脱了写作障碍,可以更快地开始创作。「这类工具使我能够更快地进入心流状态」,一位参与者如是说到。
3. 加速现有代码的更新
如果能提供有效的提示词,开发者使用生成式 AI 还可以更快地对现有代码展开更多更改。例如,为了减少从在线编码库调整代码和改进预写代码的时间,开发者可以将代码作为提示词,提交迭代查询,要求工具根据事先提供的标准进行调整。
4. 提高开发者应对新挑战的能力
虽然生成式 AI 对复杂任务的提升效果比较有限,但它可以帮助开发者快速温习完成工作所需的陌生代码库、语言或框架。在面临新挑战时,他们可以转向工具来获得如概念解释和框架使用指南等帮助,以更好地完成工作。
因此,使用 AIGC 工具执行复杂任务的开发者在规定时间内完成任务的可能性要比不使用工具的开发者高出 25%-30%。
除了生产力的提高,研究还发现,让开发者发挥出最大生产力可以显著改善开发者的体验,从而帮助公司留住并激发最优秀的人才。使用生成式 AI 工具的开发者,其总体幸福感、满足感和心流状态是其他人的两倍多。
03 依赖开发者专业知识的三个领域
生成式 AI 可以做很多事情,但其使用效果取决于使用它们的开发者的技能水平。从参与者的反馈来看,人类的监督和参与在以下三个领域至关重要:
1. 检查代码的漏洞和错误
生成式 AI 有时会提供不正确的编码建议,甚至会在代码中引入错误。一名开发者表示,她必须输入大量的提示来纠正工具的错误假设,然后才能得到答案。
2. 贡献必要的背景信息
虽然现成的 AIGC 应用拥有很多编码知识,但它们不知道项目和组织的具体需求。要确保最终的软件产品能与其他应用程序无缝集成,满足公司的性能和安全要求,并最终解决用户诉求,这些信息必不可少。
开发者需要通过提示词为 AI 提供背景信息,包括代码如何使用、由谁使用、接口类型以及软件将与之交互的其他系统,使用的数据等等。
3. 应对或分解棘手的编码要求
参与者还提到,生成式 AI 更适合回答简单的问题(如优化代码片段),而不是复杂的需求(如将多个框架与不同代码逻辑相结合)。
一位开发者分享到,为了获得可用的解决方案来满足多方面的需求,他首先必须手动地组合各个组件,或将代码分解为更小的片段。「当问题变得更加复杂并且需要考虑全局时,生成式 AI 提供的帮助最小。」