AI 效率神话破灭?开源软件开发者实测:效率竟下降 19%!
大型语言模型(LLM)在各行各业的应用如火如荼,AI 公司也乐于宣传 AI 在提升代码编写效率方面的巨大潜力。然而,一项最新的随机对照试验却给 AI 的“效率光环”泼了一盆冷水:经验丰富的开源代码开发者在使用 AI 工具后,编码效率反而降低了。
这项研究由 METR(模型评估与威胁研究中心)进行,他们招募了 16 位在特定开源代码库方面拥有多年经验的软件开发者。研究人员跟踪了这些开发者在维护代码库过程中涉及的 246 项独立“任务”,例如 bug 修复、功能添加和代码重构。在其中一半的任务中,开发者可以使用 Cursor Pro 或 Anthropic 的 Claude 等 AI 工具,而在另一半任务中,则禁止使用 AI 辅助。研究人员预先对每个任务的预期时间进行了预测,并以此来平衡每个实验组中任务的总体难度。此外,根据审查人员反馈修改代码所需的时间也被纳入了整体评估。
事与愿违:AI 辅助反而拖慢进度
研究结果令人惊讶。参与研究的开发者原本预期 AI 工具能将任务所需时间减少 24%。即使在完成任务后,开发者们仍然认为 AI 平均提高了他们 20% 的速度。然而,实际情况是,使用 AI 辅助完成任务的时间比不使用 AI 工具的任务慢了 19%。
为了深入探究原因,METR 的研究人员分析了一部分开发者的屏幕录像数据。他们发现,AI 工具确实减少了开发者在积极编码、测试/调试或“阅读/搜索信息”上花费的平均时间。但这些节省的时间最终被“审查 AI 输出、提示 AI 系统和等待 AI 生成”以及“空闲/管理时间”所抵消——屏幕录像显示,这些时间段没有任何活动。
更令人惊讶的是,开发者们最终只接受了 AI 生成代码的不到 44%,这意味着他们需要对 AI 生成的代码进行大量修改。事实上,大多数开发者表示需要修改 AI 伙伴生成的代码,而这项审查工作占据了“AI 辅助”部分研究总任务时间的 9%。
复杂代码库成 AI 效率绊脚石
表面上看,METR 的研究结果似乎与其他表明 AI 工具能提高编码效率的基准测试和实验相矛盾。但那些研究往往以总代码行数或已完成的离散任务/代码提交/拉取请求的数量来衡量生产力,而这些指标并不能准确反映实际的编码效率。
此外,许多现有的编码基准测试都侧重于专门为基准测试创建的合成、算法可评分的任务,这使得将这些结果与专注于使用现有、真实世界代码库的工作进行比较变得困难。METR 研究中的开发者在调查中报告说,他们所使用的代码库的整体复杂性(平均已有 10 年历史,超过 100 万行代码)限制了 AI 的帮助。研究人员指出,AI 无法利用关于代码库的“重要的隐性知识或上下文”,而“开发者对代码库的高度熟悉”则有助于他们在这些任务中保持高效。
这些因素使得研究人员得出结论:当前的 AI 编码工具可能特别不适合“具有非常高的质量标准,或具有许多隐性要求(例如,与文档、测试覆盖率或 linting/格式化相关)的设置,而人类需要花费大量时间来学习这些要求”。虽然这些因素可能不适用于涉及更简单代码库的“许多现实的、具有经济意义的设置”,但它们可能会限制 AI 工具在这项研究和类似的现实情况中的影响。
AI 编码工具仍有潜力
即使对于像研究中那样复杂的编码项目,研究人员仍然乐观地认为,进一步改进 AI 工具可能会在未来提高程序员的效率。他们写道,具有更好的可靠性、更低的延迟或更相关的输出(通过提示支架或微调等技术)的系统“可以加快开发者在我们的设置中的速度”。他们表示,已经有“初步证据”表明,最近发布的 Claude 3.7“通常可以正确地实现在我们的研究中包含的几个代码库上的问题的核心功能”。
但就目前而言,METR 的研究提供了有力的证据,表明 AI 在编码任务方面的巨大用处在某些复杂的、现实世界的编码场景中可能存在重大局限性。
案例分析:AI 在不同复杂度代码库中的表现
为了更直观地理解 AI 在编码效率上的影响,我们可以对比两种假设情境:
简单代码库: 假设一个初创公司正在开发一个简单的 Web 应用程序。代码库相对较小,结构清晰,文档完善。在这种情况下,AI 编码工具可以帮助开发者快速生成样板代码、自动完成常见任务,并提供实时的错误检查。由于代码库的复杂性较低,AI 可以更容易地理解上下文,并生成相关的、高质量的代码。
复杂代码库: 假设一个大型企业正在维护一个已经存在了 10 年以上的遗留系统。代码库非常庞大,结构复杂,文档不完整,并且充满了技术债务。在这种情况下,AI 编码工具可能难以理解代码库的整体结构和依赖关系,生成的代码可能不准确或不兼容。开发者需要花费大量的时间来审查和修改 AI 生成的代码,反而降低了效率。
数据佐证:AI 在不同类型任务中的表现
除了代码库的复杂性,任务的类型也会影响 AI 的编码效率。以下是一些数据佐证:
- 重复性任务: 对于重复性的任务,例如生成数据访问对象(DAO)或创建单元测试,AI 可以显著提高效率。一项研究表明,AI 可以将 DAO 的生成时间缩短 50% 以上。
- 复杂算法设计: 对于复杂的算法设计任务,AI 的表现并不出色。开发者仍然需要依靠自己的专业知识和经验来完成这些任务。一项调查显示,只有不到 20% 的开发者认为 AI 在算法设计方面有帮助。
- 代码审查: AI 可以帮助开发者进行代码审查,自动检测潜在的错误和漏洞。一项实验表明,AI 可以检测到 80% 以上的常见代码错误。
行业观察:AI 编码工具的未来发展趋势
尽管目前的 AI 编码工具存在一些局限性,但它们仍在快速发展。以下是一些行业观察:
- 更强大的语言模型: 未来的 AI 编码工具将基于更强大的语言模型,能够更好地理解代码的上下文和语义,生成更准确、更可靠的代码。
- 更好的集成: AI 编码工具将与现有的开发环境(IDE)更好地集成,提供更流畅、更自然的用户体验。
- 更个性化的推荐: AI 编码工具将能够根据开发者的个人偏好和项目需求,提供更个性化的代码推荐。
- 更智能的调试: AI 编码工具将能够更智能地调试代码,自动检测和修复错误。
结论:AI 编码,扬长避短方为上策
总而言之,AI 编码工具并非万能的,它们在不同的场景和任务中的表现各不相同。开发者应该根据自己的实际情况,扬长避短,合理利用 AI 编码工具,才能真正提高编码效率。在简单代码库和重复性任务中,AI 可以显著提高效率;但在复杂代码库和复杂算法设计任务中,开发者仍然需要依靠自己的专业知识和经验。未来的 AI 编码工具将更加强大、智能和个性化,有望在更大程度上提高编码效率。