研究:量化GitHub Copilot对开发人员生产力和幸福感的影响

一年多前推出GitHub Copilot技术预览版时,我们想知道一件事:这个工具是否有助于开发人员?GitHub Next团队采用调查和实验相结合的方式进行研究,得出了预期和意外的答案。

GitHub Copilot标志。
|
| 8分钟

每天,我们使用工具并养成习惯,以少花钱多办事。软件开发产生了大量的工具和技术来提高工作效率,甚至导致决策疲劳。当我们在2021年首次发布GitHub Copilot的技术预览时,我们的假设是它将提高开发人员的生产力,事实上,早期用户共享了它的报告。在其发布后的几个月里,我们希望通过定量和定性研究更好地了解和衡量其效果。要做到这一点,我们首先必须解决一个问题:提高生产力意味着什么?

为什么开发人员的生产力如此难以衡量?

当谈到衡量开发人员的生产力时,几乎没有达成共识,问题远多于答案。例如:

  • 什么是“正确的”生产力指标?[1,2]
  • 生产力的自我报告有多大价值?[]
  • 传统的生产力——产出高于投入的观点是否很适合发展工作中的复杂问题解决和创造力?[4].

在2021年的一项研究中,我们发现开发人员自己对生产力的看法发生了变化——这更类似于好天气。能够专注于手头的任务,取得有意义的进展,并在一天的工作结束时感觉良好,这对开发人员的满意度和生产力有着真正的影响。

这也不是一次性的发现。其他学术研究表明,这些结果对开发人员来说很重要[5]满意的开发人员表现更好[6,7]. 显然,开发人员的生产力不仅仅是输入和输出。

我们如何看待GitHub的开发人员生产力?

因为人工智能辅助开发是一个相对较新的领域,作为研究人员,我们几乎没有可利用的前期研究。我们想测量GitHub Copilot的效果,但它们是什么?在对用户进行早期观察和访谈后,我们对2000多名开发人员进行了调查,以了解他们使用GitHub Copilot的经验。我们设计研究方法时考虑了三点:

  • 从整体上看生产力。在GitHub,我们喜欢思考广泛且可持续关于开发人员生产力以及影响它的许多因素。我们使用SPACE生产力框架选择要调查的方面。
  • 包括开发人员的第一手观点。我们进行了多轮研究,包括定性(感知)和定量(观察)数据,以整合整体情况。我们想验证:(a)用户的实际经验是否证实了我们从遥测推断的结果?(b) 我们的定性反馈是否适用于我们庞大的用户群?
  • 评估GitHub Copilot在日常开发场景中的效果。在建立我们的研究时,我们特别注意招募专业开发人员,并围绕开发人员可能在特定日期完成的典型任务设计测试。

让我们深入挖掘,看看我们发现了什么!

发现1:开发人员生产力超越速度

通过一项大规模调查,我们想看看使用GitHub Copilot的开发人员是否在加速任务之外的其他方面看到了好处。以下是最突出的:

  • 提高开发人员满意度。60-75%的用户表示,他们对自己的工作更有满足感,编码时不那么沮丧,使用GitHub Copilot时能够专注于更令人满意的工作。这是一个让开发者对他们所做的感到满意的胜利!
  • 节省脑力。开发人员报告称,GitHub Copilot帮助他们保持流畅(73%),并在重复任务期间保持脑力劳动(87%)。这就是开发人员的幸福,因为我们从以前的研究中知道,上下文切换和中断可能会破坏开发人员的一天,而且某些类型的工作正在枯竭[8,9].

表:使用GitHub Copilot时测量开发人员生产力维度的调查结果

当使用GitHub Copilot时,调查响应测量开发人员生产力的维度——感知生产力、满意度和幸福感,以及效率和流量
所有问题都是模仿的SPACE框架.

开发人员将GitHub Copilot视为一种生产力辅助工具,但它还不止于此。一位用户描述了整体体验:

(与Copilot一起)我必须少思考,当我不得不认为这是有趣的事情时。它引发了一点火花,使编码更加有趣效率更高。

-高级软件工程师

我们定性调查的结论是让GitHub Copilot承担枯燥重复的开发工作减少了认知负荷这为开发人员提供了享受更有意义的工作的空间,这些工作需要复杂的批判性思考和问题解决,从而带来更大的幸福感和满意度。

发现2:……但速度也很重要

在调查中,我们看到开发人员报告说,使用GitHub Copilot时,他们完成任务的速度更快,尤其是重复性任务。这是一个意料之中的发现(毕竟GitHub Copilot的写作速度比人类快),但>90%的一致性仍然是一个惊喜。绝大多数开发人员都认为GitHub Copilot正在帮助他们更快地完成任务——我们能否在实践中观察和测量这种效果?为此,我们进行了一项对照实验。

图:实验过程和结果总结

实验过程和结果总结(见下文)
我们招募了95名专业开发人员,将他们随机分为两组,并计算了他们用JavaScript编写HTTP服务器所需的时间。一组使用GitHub Copilot完成任务,另一组没有。我们试图控制尽可能多的因素——所有开发人员都已经熟悉JavaScript,我们给每个人都给出了相同的指令,我们利用GitHub Classroom通过测试套件自动对提交的正确性和完整性进行评分。我们很快将分享一篇关于我们如何设置实验的幕后博客文章!

在实验中,我们测量了各组平均完成任务的成功程度以及完成任务所需的时间。

  • 使用GitHub Copilot的小组有一个任务完成率更高(78%,而无Copilot组为70%)。
  • 最显著的区别是使用GitHub Copilot的开发人员完成任务的速度明显更快,比不使用GitHub Copilit的开发员快55%。具体来说,使用GitHub Copilot的开发人员平均需要1小时11分钟才能完成任务,而不使用GitHub Copilot的开发人员平均需要2小时41分钟。这些结果具有统计学意义(P=.0017)速度增益百分比的95%置信区间为[21%,89%]。

还有更多要揭开的!我们正在进行更多的实验,并对我们已经收集的实验数据进行更彻底的分析,以研究异质效应,或对代码质量的潜在影响,我们还计划出版更多的学术出版物来分享我们的发现。

这些发现对开发人员意味着什么?

我们在这里支持开发人员开发软件,包括提高工作效率和工作满意度。在我们的研究中,我们看到了这一点GitHub Copilot支持更快的完成时间,节省开发人员的精力,帮助他们专注于更令人满意的工作,并最终在编码中找到更多乐趣。

我们还听说,这些好处对使用GitHub Copilot进行早期试验的公司的工程领导来说正变得重要。当他们考虑如何让他们的工程师保持健康和高效时,他们是从同样的角度思考整体开发人员的福祉,并提倡使用能带来快乐的工具。

工程师们对做前卫的事情感到满意,我们给了他们前卫的工具,这对我来说是一个因素。

-CTO,大型工程组织

随着GitHub Copilot的出现,我们并不是唯一一个探索AI驱动的代码完成工具影响的人!在生产力领域,我们最近看到对24名学生的评估、和谷歌对ML增强代码完成的内部评估。更广泛地说,研究界正在试图理解GitHub Copilot在许多背景下的含义:教育,安全,劳动力市场以及开发人员实践行为。我们目前都在通过在各种设置中尝试GitHub Copilot来学习。这是一个不断发展的领域,我们对包括我们在内的研究团体将在未来几个月内发现的发现感到兴奋。

致谢

我们非常感谢所有参与调查和实验的开发人员,如果没有您的参与,我们将一无所获!GitHub下一步与微软首席经济学家办公室合作,特别是与斯达·彭Aadharsh Kannan公司.

相关职位