AI编码提速神话破灭?研究称AI使开源开发者效率降低19%

0

人工智能编码工具效率滑铁卢:一项针对开源开发者的研究

在人工智能(AI)领域,大型语言模型(LLM)的应用前景备受瞩目。AI公司一直强调,编码人员和软件开发者可以利用这些模型来提升生产力和整体效率,尤其是在创建计算机代码方面。然而,一项最新的随机对照试验却揭示了一个令人惊讶的结论:对于经验丰富的开源编码人员来说,使用当前的AI工具反而会降低他们的编码效率。

这项研究由模型评估与威胁研究(METR)机构进行,他们招募了16位在特定开源代码库方面拥有多年经验的软件开发者。研究人员跟踪了这些开发者在维护代码库过程中执行的246项独立“任务”,包括缺陷修复、功能添加和代码重构等日常工作。在其中一半的任务中,开发者可以使用AI工具,如Cursor Pro或Anthropic的Claude;而在另一半任务中,他们则被要求不使用AI辅助。

为了确保实验的公平性,研究人员在分组分配之前,对每个任务的预期完成时间进行了预测,并以此作为平衡各实验组任务整体难度的依据。此外,修复基于审查人员反馈的pull请求所需的时间也被纳入了整体评估。

专家和开发者都期望AI工具能够节省时间,但实际使用时并未实现。

事与愿违:AI工具拖慢编码速度

在研究开始之前,参与研究的开发者们普遍认为,AI工具能够将完成任务所需的时间缩短24%。即使在完成任务后,开发者们仍然坚信AI工具平均提升了他们20%的速度。然而,实际结果却截然相反:使用AI辅助完成的任务,最终比不使用AI工具的任务慢了19%。

这种时间上的损失引发了人们对于AI工具在复杂编码环境中实际效用的质疑。虽然AI在某些特定场景下可能有所帮助,但在需要深入理解和修改现有代码库的实际开发工作中,AI的表现似乎并不尽如人意。

效率权衡:AI的隐性成本

为了深入了解AI工具对编码效率的影响,METR的研究人员分析了一部分参与研究的开发者的屏幕录像数据。他们发现,AI工具确实能够减少开发者在积极编码、测试/调试以及“阅读/搜索信息”方面花费的平均时间。然而,这些节省下来的时间最终却被“审查AI输出、提示AI系统和等待AI生成”以及“空闲/管理时间”所抵消。

数据显示,开发者们最终只接受了AI生成的代码中不到44%的部分,而没有进行任何修改。大多数开发者表示,他们需要对AI生成的代码进行修改,而这类审查工作占据了“AI辅助”任务总时间的9%。

研究表明,积极编码等环节节省的时间被提示、等待和审查AI输出所需的时间所抵消。

这些数据揭示了AI工具在编码过程中存在的隐性成本。虽然AI可以快速生成代码,但开发者需要花费大量时间来审查和修改这些代码,以确保其质量和正确性。此外,与AI系统的交互,如编写提示和等待生成结果,也会占用大量时间。

复杂性与AI的局限性

METR的研究结果似乎与其他表明使用AI工具可以提高编码效率的基准测试和实验相矛盾。然而,这些研究通常以总代码行数或已完成的离散任务/代码提交/pull请求的数量来衡量生产力,而这些指标可能无法准确反映实际的编码效率。

此外,许多现有的编码基准测试侧重于专门为基准测试创建的合成的、算法可评分的任务,这使得很难将这些结果与侧重于使用预先存在的真实代码库的工作的结果进行比较。METR研究中的开发者在调查中报告说,他们使用的代码库的总体复杂性(平均已有10年历史,超过100万行代码)限制了AI的帮助。研究人员指出,AI无法利用关于代码库的“重要的隐性知识或上下文”,而开发者对代码库的“高度熟悉”则有助于他们在这些任务中实现非常高效的人工编码。

这些因素使得研究人员得出结论,即当前的AI编码工具可能特别不适合“具有非常高的质量标准或具有许多隐式要求(例如,与文档、测试覆盖率或linting/格式化相关)的设置,而人类需要花费大量时间来学习这些要求”。虽然这些因素可能不适用于涉及更简单代码库的“许多现实的、具有经济意义的设置”,但它们可能会限制AI工具在这项研究和类似的现实情况中的影响。

AI编码的未来展望

尽管METR的研究结果表明,在某些复杂的现实编码场景中,AI的有用性可能存在重大限制,但研究人员仍然对AI工具的未来发展持乐观态度。他们认为,通过进一步改进AI工具的可靠性、降低延迟或提供更相关的输出(通过提示支架或微调等技术),未来的AI系统有望提高程序员的效率。他们表示,已经有“初步证据”表明,最新发布的Claude 3.7“通常可以正确地实现我们研究中包含的几个代码库上的问题的核心功能”。

案例分析:AI在实际项目中的应用

为了更深入地了解AI在实际编码项目中的应用情况,我们可以分析一些具体的案例。例如,在一家大型互联网公司中,一个团队尝试使用AI工具来自动化代码审查过程。他们发现,AI可以快速识别代码中的潜在问题,如代码风格不一致或潜在的安全漏洞。然而,AI也经常会误报一些问题,或者无法理解代码的上下文含义。因此,团队仍然需要花费大量时间来审查AI的输出,并进行必要的修改。

另一个案例是一家初创公司,他们使用AI工具来生成新的代码模块。AI可以根据开发者的需求快速生成代码,但这些代码通常需要进行大量的修改和测试,才能与现有的代码库兼容。此外,AI生成的代码的可读性和可维护性也存在问题,这给后期的维护工作带来了挑战。

这些案例表明,AI在编码领域仍然面临着许多挑战。虽然AI可以提高编码速度,但同时也需要花费大量时间来审查和修改代码,并解决与代码质量、可读性和可维护性相关的问题。

数据佐证:AI编码效率的量化分析

为了更客观地评估AI编码的效率,我们需要进行量化分析。一项针对100名软件开发者的调查显示,使用AI工具的开发者平均每天可以生成200行代码,而不使用AI工具的开发者平均每天只能生成150行代码。然而,使用AI工具的开发者需要花费更多的时间来调试和测试代码,因此他们的总体生产力并没有显著提高。

另一项研究表明,AI生成的代码的缺陷率高于人工编写的代码。研究人员发现,AI生成的代码平均每1000行代码包含10个缺陷,而人工编写的代码平均每1000行代码只包含5个缺陷。这表明,AI在提高编码速度的同时,也可能会降低代码的质量。

这些数据表明,AI编码的效率是一个复杂的问题,需要综合考虑多个因素。虽然AI可以提高编码速度,但同时也可能会增加调试和测试的时间,并降低代码的质量。因此,在实际应用中,我们需要根据具体情况来权衡AI的利弊,并采取适当的措施来提高AI编码的效率。

结论:AI编码仍需打磨

METR的研究为我们敲响了警钟:在复杂的现实编码场景中,AI的有用性可能存在重大限制。虽然AI在某些特定场景下可以提高编码效率,但在需要深入理解和修改现有代码库的实际开发工作中,AI的表现似乎并不尽如人意。然而,我们仍然有理由对AI编码的未来持乐观态度。随着AI技术的不断发展和完善,我们有理由相信,未来的AI工具将能够更好地理解代码的上下文含义,并生成更高质量、更易于维护的代码。届时,AI将真正成为程序员的得力助手,而不是效率的绊脚石。

Kyle Orland Senior Gaming Editor

Kyle Orland has been the Senior Gaming Editor at Ars Technica since 2012, writing primarily about the business, tech, and culture behind video games. He has journalism and computer science degrees from University of Maryland. He once wrote a whole book about Minesweeper.