AI提效神话破灭?研究称AI工具使开源开发者速度降低19%

1

在人工智能领域,大型语言模型(LLM)的应用日益广泛,尤其是在软件开发行业,AI工具被寄予厚望,希望能够显著提升程序员的生产力和整体效率。然而,一项最新的随机对照试验却给出了截然不同的结论:对于经验丰富的开源代码贡献者而言,使用当前的人工智能工具实际上降低了他们的编码效率。

这项研究由模型评估与威胁研究机构(METR)进行,他们招募了16位在特定开源代码仓库方面拥有多年经验的软件开发者。研究人员跟踪这些开发者在维护代码仓库过程中遇到的246个独立任务,涵盖了bug修复、新功能开发和代码重构等日常工作。在这些任务中,一半的任务允许开发者使用诸如Cursor Pro或Anthropic的Claude等AI工具,另一半则禁止使用AI辅助。

研究人员在实验前对每个任务进行了预期时间预测,以此来平衡各个实验组任务的总体难度。此外,他们还将根据审查人员反馈修复pull请求所需的时间纳入总体评估。

AI快讯

研究结果显示,开发者和专家原本期望AI工具能够节省时间,但实际情况却大相径庭。开发者们事先预计,AI工具将使任务所需时间减少24%。即使在完成任务后,他们仍然认为AI平均提升了20%的速度。然而,最终的数据表明,使用AI辅助完成的任务实际上比不使用AI工具的任务慢了19%。

为了深入了解这一现象背后的原因,METR的研究人员分析了一部分开发者的屏幕录像数据。他们发现,AI工具确实减少了开发者在积极编码、测试/调试以及“阅读/搜索信息”上花费的平均时间。然而,这些节省的时间最终被“审查AI输出、提示AI系统和等待AI生成”以及“闲置/开销时间”所抵消。

研究还发现,开发者们只接受了AI生成的代码中不到44%的部分,而没有进行修改。大多数开发者表示需要修改AI生成的代码,并且在“AI辅助”部分中,总任务时间的9%用于此类审查。

AI快讯

AI快讯

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

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

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

尽管存在这些挑战,研究人员对人工智能工具的进一步改进抱持乐观态度,认为这可能会为程序员带来未来的效率提升。他们写道,具有更好可靠性、更低延迟或更相关输出(通过提示支架或微调等技术)的系统“可以加快开发者在我们的环境中的速度”。他们还表示,已经有“初步证据”表明,最近发布的Claude 3.7“通常可以正确地实现我们研究中包含的几个代码仓库中的问题的核心功能”。

总而言之,METR的研究为人工智能在编码任务中的作用提供了一些有力的证据,表明在某些复杂的、现实的编码场景中,人工智能的用处可能存在重大局限性。

案例分析:AI辅助编码的挑战与机遇

为了更深入地理解AI在实际编码过程中的影响,我们可以进一步探讨METR研究中揭示的几个关键挑战,并分析这些挑战如何转化为未来的发展机遇。

  1. 隐性知识与上下文理解的不足

正如研究指出的,AI工具在处理具有复杂历史和大量代码的现有代码库时,往往难以捕捉到开发者长期积累的隐性知识和上下文信息。这意味着AI生成的代码可能在语法上正确,但缺乏对项目整体架构和设计理念的理解,从而导致集成问题或引入潜在的bug。

案例:假设一个开发者正在使用AI辅助修复一个存在多年的bug。AI可能会生成一个看似有效的解决方案,但如果它没有考虑到该bug与其他模块之间的复杂依赖关系,那么这个修复可能会在其他地方引发新的问题。解决这个问题需要开发者花费额外的时间来审查和修改AI生成的代码,从而抵消了AI原本带来的时间节省。

机遇:未来的AI工具可以通过更有效地学习和利用代码库中的隐性知识来克服这一挑战。例如,可以开发一种能够自动分析代码库历史、识别模块间依赖关系并学习项目特定编码规范的AI系统。这样的系统将能够生成更符合项目上下文的代码,从而减少开发者需要进行的手动调整。

  1. 提示工程与输出审查的额外负担

研究表明,开发者在使用AI工具时,需要花费大量时间来编写有效的提示和审查AI生成的输出。这部分时间的消耗可能会超过AI在实际编码过程中节省的时间。

案例:一个开发者希望使用AI生成一个用于处理用户输入的函数。为了获得理想的结果,开发者可能需要尝试多种不同的提示,并对AI生成的代码进行多次修改。这个过程不仅耗时,而且需要开发者具备一定的提示工程技能。

机遇:未来的AI工具可以通过简化提示过程和提高输出质量来减少这部分负担。例如,可以开发一种能够自动理解开发者意图并生成相应代码的AI系统,而无需开发者编写复杂的提示。此外,还可以通过改进AI的代码生成算法,使其能够生成更准确、更可靠的代码,从而减少开发者需要进行的审查。

  1. 质量标准与隐性要求的匹配

研究还指出,AI工具可能不适合具有非常高的质量标准或许多隐性要求的环境。这意味着AI生成的代码可能无法满足项目的测试覆盖率、文档完整性或代码风格等要求。

案例:一个开发者使用AI生成了一个新的功能模块。虽然该模块在功能上可以正常工作,但它缺乏必要的单元测试和文档,并且不符合项目的编码规范。为了使该模块达到项目的质量标准,开发者需要花费额外的时间来编写测试、编写文档并进行代码格式化。

机遇:未来的AI工具可以通过更好地理解和满足项目的质量标准和隐性要求来提高其可用性。例如,可以开发一种能够自动生成单元测试、生成文档并进行代码格式化的AI系统。此外,还可以通过将AI工具与现有的代码质量检测工具集成,使其能够生成符合项目规范的代码。

数据佐证:量化AI辅助编码的实际效果

为了更客观地评估AI辅助编码的实际效果,我们可以参考一些相关的研究和数据:

  • GitHub Copilot研究:GitHub进行的一项研究表明,使用Copilot的开发者完成任务的速度比不使用Copilot的开发者快55%。然而,这项研究也指出,Copilot生成的代码中有大约30%需要进行修改。

  • Google AI研究:Google AI进行的一项研究表明,使用AI辅助编码可以减少开发者的认知负荷,并提高他们的工作满意度。然而,这项研究也强调,AI工具需要与开发者的工作流程紧密集成,才能发挥最大的作用。

  • Stack Overflow调查:Stack Overflow进行的一项调查表明,大多数开发者认为AI工具可以提高他们的生产力,但他们也担心AI可能会取代他们的工作。

这些数据表明,AI辅助编码具有很大的潜力,但也存在一些挑战。为了充分利用AI的优势,我们需要解决诸如隐性知识理解、提示工程和质量标准匹配等方面的问题。

结论与展望

总而言之,METR的研究为我们提供了一个关于AI辅助编码的现实视角。虽然AI工具在某些方面可以提高编码效率,但在复杂的、现实的编码场景中,它们可能并不总是能够带来预期的效果。为了充分发挥AI在软件开发中的潜力,我们需要继续改进AI工具,使其能够更好地理解项目上下文、简化提示过程并满足项目的质量标准。

展望未来,我们可以期待看到更加智能、更加高效的AI编码工具的出现。这些工具将能够与开发者紧密协作,共同构建高质量的软件系统。同时,我们也需要认识到,AI并不能完全取代人类开发者。在软件开发过程中,人类的创造力、判断力和经验仍然是不可或缺的。