万字长文 - 如何实现规模化创新?AI工具、团队协作与绩效考核:从GitHub最新调研看研发者的现状与期望

作为全球最大的开源社区,Github不久前发布了一项针对美国大型企业(员工人数>1000人)中的研发人员的现状调研结果,感觉其中的很多内容有广泛的参考价值。如果最终希望能在企业内做到“规模化的创新”,需要通过提高研发者的生产力、增加他们的满意度,并赋能他们每天都可以做出最好的工作才能实现。而这些都要始于“你真的了解研发者想要什么嘛?”这个关键问题。我翻译整理了一些重点并在后面列出了翻译全文。

一:企业对于研发人员的绩效考核指标和他们认为自己应该被如何考核有很大差异

  • 研发人员认为,与他人的协作能力和代码质量,而不是产出的代码行数和完成工时,应该是他们被衡量的最重要的绩效指标;
  • 另外,很多研发者也表示,他们目前被评估指标之一是解决的bug/问题/事故数量。但是,研发者认为“如何”处理这些bug/问题/事故对绩效考核应该更为重要。这与上面的代码质量优于代码数量作为主要绩效指标的想法也是一致的;

二:研发者所重视和更想做的事项和他们目前实际日常在做的事项也有很大差异

  • 当研发者被问及什么能够对他们的日常工作产生积极影响时,他们将学习新技能(43%)、从最终用户获得反馈(39%)、自动化测试(38%)和设计新问题的解决方案(36%)列为最重要的选项;
  • 但实际上他们日常工作中花在等待代码审查、等待构建/build 和等待他人测试反馈上花了大量的时间;

三:为什么有效协作对于研发者/研发团队/公司来说这么重要?

  • 受调查的研发人员在项目中平均与其他21个研发人员合作(当然因为这些都是大公司),而且研发者普遍认为良好有效的协作对于提升代码质量有很大帮助;
  • 开发人员需要正确的工具和资源来进行这种高需求的协作——这包括与团队进行定期反馈沟通,能拥有专注时间,能访问配置完整的开发环境以及正式的导师-学员关系

此外,Github列出了两位从Twitter上收集到的研发者会如何评判一个会议是否高效+有价值的答案,也很有代表性,例如很多的会议确实最后没有定义明确的行动事项… :

Artem Zakharchenko

  1. 如果可以异步沟通解决,就不要开会
  2. 事先宣布议程
  3. 合理的会议时间框架
  4. 会议后定义清晰的目标

Mateus Freira

  1. 会议应该由有冲突的议题来驱动 - 我们在所有人都同意的议题上浪费了太多时间,我们应该关注那些没有共识的议题;
  2. 提前发送议题和相关阅读材料
  3. 记录和分享会议笔记
  4. 会议结束后明确行动和责任的所有权

四:AI编程工具正在被广泛使用,全面改善了研发人员体验

  • 92%的受调查研发者在工作内外都已经在使用AI编程工具了
  • 研发人员表示AI编程工具可以帮助他们更好达到现有的绩效标准,提高代码质量,加快输出速度,减少生产级别的事故等,而且还能增进团队协作;
  • 57%的开发人员认为AI编程工具可以帮助他们提高写代码技能 - 这也是他们看到的最重要的好处。除了作为升级技能的辅助工具外,41%的研发人员认为AI可以帮助预防工作倦怠/burnout;

由于上面这个92%的比例确实高的有点惊人,正好看到stackoverflow也发布了一个研发者调研,我补了一下那边的AI编程工具的数据在这里供对比:

  • 所有受访者中有70%正在使用或计划在今年使用AI工具来进行开发。值得指出的是刚入行的人比老手们更有可能使用AI编程工具(82%对70%);
  • 研发人员从AI工具中看到的最大好处是提高生产力,其次是加快技能学习速度和更高的效率。

结论

上述调查结果揭示了研发者的一些重要的工作现状与期望,强调了团队协作、合理的绩效考核指标和AI工具在开发过程中的重要性。企业和研发管理者可以从中吸取经验教训,调整管理策略来适应不断变化的研发生产过程。

-———————————————————————–

原文翻译内容:

今天的开发者不仅仅是编写和发布代码,他们还需要使用各种工具、环境和技术,包括新的生成式人工智能(AI)编码工具。但对于开发者来说,最重要的不是讲故事或者部署速度。而是开发者体验(DevEx),它决定了开发者是否能够高效地超越标准输出、进入流状态(flow state)并产生更大影响力。

我不仅是 GitHub 的首席产品官,也是一名长期从事全栈开发工作的开发者。几十年前,当我获得机械工程硕士学位时,我是第一批在实验室应用 AI 技术的技术人员之一。当时我们的模型处理较大数据集需要五天的时间,考虑到今天的 AI 模型速度,这是令人惊讶的。我希望能够使自己更加高效,并缩短产品上市时间。这就是为什么我对开发者体验(DevEx)充满热情,并将其作为 GitHub 首席产品官的工作重点。

在生成式人工智能迅速发展的背景下,我们希望从开发者那里更好地了解新工具和当前工作流程对整体开发者体验的影响。作为起点,我们关注了开发者体验的一些最重要的组成部分:开发者生产力、团队协作、人工智能以及开发者认为他们在企业环境中可以最好地产生影响力的方式。

为此,我们与 Wakefield Research 合作,对 500 名美国企业的开发者进行了调查。在下面的报告中,我们将展示如何消除障碍,帮助企业研发团队在这个软件开发的新时代推动创新和影响力。如果最终希望能做到“规模化的创新”,需要通过提高开发者的生产力、增加他们的满意度,并赋能他们每天都可以做出最好的工作。毕竟人才是最重要的,如果没有能够产生影响力的开发者,就不可能有任何进步。

**Inbal Shani
**GitHub 首席产品官

本次调查的核心发现

  • AI时代已经到来并且正在被广泛使用 - 92%的开发人员在工作内外都使用AI编码工具;
  • 等待构建和测试仍然是一个问题 - 尽管全行业都在DevOps方面进行了大量投资,开发人员仍然表示,除了编写代码之外,他们在工作中最耗时的事情是等待构建和测试;
  • 开发人员希望有更多的协作 - 企业中的开发人员在项目中与平均21名其他工程师合作,并希望协作成为绩效评估的重要指标。开发者认为AI将对此有所帮助 - 超过4/5的开发人员预计AI编码工具将使他们的团队更具协作性;
  • 开发人员已经看到了AI的巨大优势 - 70%的人表示,AI编码工具将为他们的工作提供良好帮助,例如更好的代码质量、更快的完成时间和解决问题等。

在 GitHub,我们意识到“大多数开发者的日常”与“关于‘开发者想要什么’的讨论”之间经常存在重大差距。

通过这项调查,我们希望更好地了解开发者的典型体验,并确定公司能够赋能研发人员以取得更大成功的关键要素。

一个重要的结论是:这个关键因素要始于愿意投资优秀的开发者体验的初心。正如我们从调查中了解到的那样,良好的协作是开发者希望的工作模式,以及提高生产力、满意度和影响力的核心。

图片

C = 协作,是整个开发者体验的乘数。

DevEx 是一个考虑到以下因素的公式:

  • 开发者能否简单快速地在更新代码库或提升生产力;
  • 从创意到上线并产生影响力的过程中的阻力程度;
  • 工作环境、工作流程和研发工具对开发者满意度的积极或消极影响;

对于领导者来说,开发者体验的重点是创建一个良好的协作环境,这样开发者可以达到工作的最高效、最具影响力和最满意的状态。对于开发者来说,协作是方程式中最重要的部分之一。

当前绩效指标不能满足开发者的期望

  • 很多时候,开发人员所重视和想要做更多的事情与他们的绩效评估方式相冲突;
  • 学习新技能和设计新问题的解决方案是对开发人员的工作产生最积极的影响的事件,但他们大部分时间都在等待代码审查、构建或测试;
  • 开发人员还认为,与其他人的协作能力和代码质量——而不是产出的代码行数和完成工时——应该是他们被衡量的最重要的绩效指标;

开发者目前被评估的方式与他们认为应该被评估的方式不一致

  • 例如,很多被调查的开发者表示,他们目前的评估指标之一是他们解决的bug和事故数量。但是,开发者认为“如何”处理这些错误和事故对绩效更为重要。这与代码质量优于代码数量作为主要绩效指标的想法一致;
  • 开发者还认为,在绩效指标方面,协作和沟通应与代码质量一样重要。他们与他人协作和沟通的能力对于他们的工作至关重要,但只有少数的开发者说他们的公司将其作为绩效指标使用;

图片

图片

开发者希望拥有更多机会来提高技能和产生影响力

当开发者被问及什么能够对他们的日常工作产生积极影响时,他们将学习新技能(43%)、从最终用户获得反馈(39%)、自动化测试(38%)和设计新问题的解决方案(36%)列为最重要的选项。

图片

但开发者表示,他们大部分时间都在编写代码和测试,然后等待代码审查或构建和执行测试。

在一个典型的工作日中,我们调查的企业开发者说他们的团队忙于各种任务,包括编写代码、修复安全漏洞和从最终用户获取反馈等。开发者还提到他们在这些任务中花费的时间相似,表明他们整天都在疲于奔命。

图片

值得注意的是,开发者表示,他们等待构建和测试的时间与编写新代码的时间相同。

  • 这表明,尽管过去十年中行业对DevOps工具做了大量投资,但构建和测试的等待时间仍然是个持续存在的问题;
  • 开发者还面临着等待代码审查、构建和测试运行等障碍,这可能会影响他们学习新技能和设计解决方案的能力,我们的研究表明,这些因素可能对他们的整体满意度产生最大的影响;

开发者希望从最终用户获得反馈,但这并不容易

开发者表示,从最终用户那里获得反馈(39%)是对他们日常工作产生积极影响的第二重要的事情,但开发团队通常很难直接获得该反馈;

  • 产品经理和市场团队经常是直接面向客户反馈的一方,使得开发者难以直接收到最终用户的反馈;
  • 开发者希望从自动化和验证测试中收到反馈以改善他们的工作,但有时这些测试会先发送给其他团队,然后再转交给研发团队;

开发团队的两个最重要的日常任务包括编写代码(32%)和查找和修复安全漏洞(31%)

  • 这表明开发人员所赋予安全的重要性日益增加,并突显了企业如何将安全置于优先位置;
  • 它还展示了企业开发团队在满足安全政策和董事会命令方面所扮演的关键角色;

协作是开发者体验的基石

  • 我们调查的开发人员在项目中平均与其他21个开发人员合作,并且大多数每周或每天与其他开发团队合作;
  • 开发人员需要正确的工具和资源来进行这种高需求的协作——这包括与团队进行定期反馈沟通,能拥有专注时间,能访问配置完整的开发环境以及正式的导师-学员关系;

开发者在协作环境中才能茁壮成长

在我们对企业工程师的调查中,开发者表示,他们平均与其他 21 名开发者一起完成一个项目,并且有 52% 的开发者报告每周或每天与其他团队合作。值得注意的是,他们将定期沟通反馈列为有效协作的最重要因素。

图片

如果从更全面的角度来看开发者如何更好协作,它不仅定义为与他人交谈和会面,而且还包括不受干扰的工作时间、访问配置完整的开发环境以及固定化的导师-学员关系。

  • 指定的专注时间 - 为开发者编写代码和工作达成了时间和空间上的平衡;
  • 访问配置完整的开发环境 - 在整个开发过程中促进了一致性。它还帮助开发者更快地协作,避免了听到“但它在我的机器上工作”那套臭名昭着的说辞;
  • 导师关系可以帮助开发者提高技能和建立在协作工作环境中必不可少的人际关系技能;

值得注意的是,这些因素也可能对开发者的日常工作产生负面影响,例如无效的会议可能会分散注意力,而不是帮助开发者。

对于开发人员来说,有效的协作是什么样子?

有效地衡量开发人员的协作似乎是一个很难的目标,但我们调查的开发人员指出了有效的方法和不靠谱的方法。开发人员认为,与同事们进行定期的沟通反馈(包括各种异步沟通、共享文档和良好的团队会议等),对于成功的协作至关重要。

结合之前GitHub在“开发者生产力的空间”中的研究,我们可以推断出对于开发人员而言,有效的协作意味着什么 - 定期的沟通反馈,包括同步会议和各种异步沟通渠道,例如IM、文档、拉取请求和问题列表等,可以提高信息的流动和可发现性。这导致了更好的协作、更好地了解团队成员都在干什么,以及更好的了解任务优先级。定期的沟通反馈也可以帮助团队调整和聚焦于解决正确的问题,从而带来更好的解决方案和更强的业务影响力。

图片

我们的调查显示,对于有效的协作,这些最重要的因素至关重要。当它们没有有效地完成时,会对开发人员的工作产生明显的负面影响

我们想更多地了解开发人员如何协作

因此我们从Twitter的那边收集了一些答案。针对如何能能高效地进行研发协作:

Colby Ray

  1. 通过与同事合作并融入他们的想法来建立协作行为的模型;
  2. 共享信息和资源以促进团队合作;
  3. 定期安排会议进行头脑风暴、设定目标和明确角色;
  4. 使用协作聊天工具,如Slack或Teams,保持开放交流;
  5. 鼓励面对面或视频会议,以实现更清晰的交流和避免误解;
  6. 通过共享文档并实时协作来“并肩作战”;
  7. 快速、专业地解决冲突,以维护健康的团队环境;
  8. 以身作则,邀请共创和开放交流;
  9. 鼓励团队成员在需要时寻求帮助或支持;
  10. 建立明确的、可衡量的目标,以跟踪协作的进展和改进;

我们还询问了如何评判一个会议是否 高效+有价值,两名研发者分享了他们的想法:

Artem Zakharchenko

  1. 如果可以异步沟通解决,就不要开会;
  2. 事先宣布议程;
  3. 合理的时间框架;
  4. 会议后定义清晰的目标;

Mateus Freira

  1. 会议应该由有冲突的议题来驱动(我们在所有人都同意的议题上浪费了太多时间),我们应该关注那些没有共识的议题;
  2. 提前发送议题和阅读材料;
  3. 记录和分享笔记;
  4. 会议结束后明确行动和责任的所有权;

有效的协作能提高代码质量

随着开发者体验的不断更新优化,成功的开发者协作也将随之而来。一方面,过多的消息和交流会影响开发流程,但另一方面我们仍然需要保持沟通反馈。在我们的调查中,开发人员表示有效的协作会促进测试覆盖范围的提高,加快更干净、更安全的代码编写,这是任何开发团队的最佳实践。这表明,当开发人员有效地与其他人合作时,他们相信他们能够构建更好更安全的软件。

图片

我们调查的开发者认为协作和沟通——以及代码质量——才应该是评估开发者工作的首要指标。

  • 从DevOps到各种敏捷研发方法论,开发者和商业世界都一直在谈论协作的重要性;
  • 但在实际中,开发人员的评估标准中仍欠缺这方面的内容;

我们请开发者分享了他们认为应该如何衡量他们的协作能力的想法(当然这里其实很难。。。):

Andrew DiMola

  • 当我为我们的代码库设置指标时,我对社区健康度可视化非常感兴趣,希望能将随时间变化的讨论指标图形化,例如问题数量、想法数量、非团队成员解决的答案等;
  • 我们创建了自己的分类(已实现的想法),作为开发人员的想法变成实际功能的镜像。为了得到星标和分支等事物的扩展范围图,我不得不在外部设置项目;

图片

要点: 公司和研发经理应该鼓励团队之间的定期交流,并设置检查时间——特别是在远程环境下——但也要尊重开发人员工作和专注的需要。

改善协作的4个技巧

在GitHub,我们的研究员、开发人员、产品团队和分析师致力于研究和提高开发者的生产力和满意度。以下是他们为希望改善开发者协作的工程师管理者提供的小技巧

  1. 将协作作为绩效目标 - 这建立了人们要将协作作为目标的期望。这可以是午餐学习会、联合项目等形式;
  2. 定义和组织中的协作范围 - 让人们知道何时被告知某件事情,何时被请教某件事情。一份概述角色和职责的矩阵有助于定义每个人的角色,GitHub团队已经在内部实施了这项工作;
  3. 让开发人员有时间交谈和相互了解 - 特别是远程或混合组织需要分配一部分开发人员的时间和虚拟空间来建立关系。查看GitHub的远程工作指南
  4. 确定主要和杰出的工程师 - 学术研究发现,组织中如果有变革代理人后能产生积极影响,以及他们应该成为特别擅长协作的人。你应该要确定哪些是团队中的杰出工程师并将他们提升到可以模拟期望行为的位置。

总结 - 有效的开发人员协作可以提高代码质量,并应成为绩效衡量标准。定期沟通反馈,静思时间,访问配置完整的开发环境以及正式的导师-学员关系可以提高测试覆盖率,并且可以更快,更干净,更安全地编写代码。

AI提高个人绩效和团队协作

  • 几乎所有的开发人员都使用过AI编码工具——我们调查的92%的人表示,他们在工作或个人时间中使用过这些工具。我们预计这个数字在未来几个月内会增加;
  • 70%的开发人员认为使用AI编码工具将为他们的工作提供优势,技能提升是最大的好处,其次是提高生产力。
  • 考虑到技能提升是开发人员说可以改善他们工作日的首要任务,这是值得注意的,因为AI编码工具可以直接将其集成到开发人员的工作流程中。

开发人员已在工作中使用AI编码工具

92%的美国大型公司的开发人员报告说,他们在工作中或个人时间中已经使用了AI编码工具,70%的人表示他们在使用这些工具时看到了显著的好处;

  • AI时代已经来了 - 它已经改变了开发人员日常工作的方式,这使得企业和工程领导者采用企业级AI工具成为至关重要,以避免他们的开发人员使用未经批准的应用程序。公司还应建立使用AI工具的治理标准,以确保它们被道德和有效地使用。

图片

开发人员认为AI编码工具将增强他们的表现

随着大多数开发人员在工作场所尝试AI工具,我们的调查结果表明,不仅仅是兴趣驱使开发人员使用AI,而是认识到AI编码工具将帮助他们满足绩效标准。

  • 在我们的调查中,开发人员表示AI编码工具可以帮助他们满足现有的绩效标准,提高代码质量,加快输出速度,减少生产级别的事故。他们还认为,这些指标应该用于衡量他们在代码数量以外的绩效;

约三分之一的开发人员报告说,他们的经理目前根据他们写的代码数量来评估他们的表现 - 相等数量的人预计当他们开始使用基于AI的编码工具时,这种情况将持续。

  • 值得注意的是,开发人员生产的代码数量不一定与其商业价值相对应;
  • 随着在软件开发中使用AI工具的增加 - 这经常导致代码量增加 - 研发管理者需要重新思考一下,根据代码数量来评估是否仍然是衡量生产力和产出的最佳方法。

开发人员认为AI编码工具将导致更好的团队协作

除了提高个人表现外,超过4/5的调查开发人员(81%)表示,AI编码工具将有助于增加他们的团队和组织之间的协作。

  • 事实上,安全审查,规划和配对编程是最重要的协作点和开发团队期望并且应该在使用AI编码工具的帮助下完成的任务。这也表明,在开发人员在工作场所增加使用AI编码工具的情况下,代码和安全审查仍将是重要的。

图片

值得注意的是,开发人员认为AI编码工具将为他们提供更多的时间专注于解决方案设计。这对组织有直接的好处,意味着开发人员认为他们将花更多时间使用AI设计新功能和产品,而不是编写样板化的代码。

  • 开发人员已经在使用生成的AI编码工具自动化他们的工作流程,这为更多协作项目如安全审查,规划和配对编程腾出了时间。

图片

开发人员认为AI增加了生产力并防止了倦怠

AI编码工具不仅可以帮助提高整体生产力,还可以提供升级技能的机会,以帮助创建更智能的劳动力。

  • 57%的开发人员认为AI编码工具可以帮助他们提高编码语言技能 - 这是他们看到的最重要的好处。除了作为升级技能的辅助工具的前景外,开发人员还表示,AI编码工具还可以帮助减少认知努力,并且由于精神能力和时间都是有限的资源,41%的开发人员认为AI编码工具可以帮助预防倦怠
  • 在我们之前的研究中,87%的开发人员说,AI编码工具GitHub Copilot在完成更多重复任务的同时帮助他们保存心力。这表明,AI编码工具可以让开发人员保留认知努力,并专注于软件开发或研究和开发的更具挑战性和创新性方面。
  • AI编码工具可以帮助开发人员在工作时提升技能。在我们的调查中,开发人员一致认为学习新技能是积极工作日的最大贡献者。但是,30%的人也说学习和发展可能对他们的整体工作日产生负面影响,这表明一些开发人员认为学习和发展会增加他们的工作负担。值得注意的是,开发人员表示AI编码工具的最大好处是学习新技能 - 这些工具可以帮助开发人员在工作时学习,而不是使学习和发展成为额外的任务。

AI正在全面改善开发人员体验

我们调查的开发人员认为,使用AI编码工具可以更好地满足他们的代码质量,完成时间和事件数量的标准 - 所有这些都是开发人员认为是评估其绩效的关键领域。

AI编码工具还可以帮助减少编码错误的可能性并提高代码的准确性 - 这最终会导致更可靠的软件,更高的应用程序性能以及更好的开发人员绩效数字。随着AI技术的不断进步,这些编码工具对开发人员的绩效和技能提升将产生更大的影响。

AI编码工具正在层层嵌入现有的开发人员工作流程,并创造更大的效率

开发人员认为AI编码工具将提高他们的生产力 - 但我们的调查表明,开发人员认为这些工具并没有从根本上改变软件开发生命周期。相反,开发人员认为它们为其带来了更大的效率。

  • 自动化和AI的使用已经是开发人员工作流程的一部分相当长一段时间了,开发人员已经利用了一系列自动化和基于AI的工具,例如基于机器学习的安全检查和CI / CD流程。
  • 这些工具不是完全重塑操作,而是在现有的工作流程中创造更大的效率,从而为开发人员提供更多时间集中于开发解决方案

总结 - 几乎所有开发人员(92%)都在工作中使用AI编码工具 - 他们说这些工具不仅可以改善日常任务,而且还可以提供升级技能的机会。开发人员看到使用AI工具带来的实质性好处,其中包括提高绩效和编码技能,以及增加团队协作。

结论和展望未来

开发人员的满意度,生产力和组织影响力都有望从AI编码工具中获得提升 - 这将对整体开发人员体验产生实质性影响。

92%的开发人员已经在工作中和个人时间中使用AI编码工具,这清楚地表明AI已经来了。我们调查的开发人员中有70%表示,当使用AI编码工具时,他们已经看到了显著的好处,81%的开发人员预计AI编码工具将使他们的团队更具协作性 - 这对于希望提高开发速度和开发人员体验的公司来说是一个净收益。

值得注意的是,57%的开发人员认为AI可以帮助他们提高技能 - 并具有在日常工作流程中构建学习和发展的潜力。考虑到所有这些,技术领导者应该开始探索AI作为提高满意度,生产力和整体开发人员体验的解决方案。

除了探索AI工具外,以下是研发和业务管理者应考虑的三个要点,以改善开发人员体验:

  1. 通过工具,流程和实践帮助开发人员更好地进入“流状态”,以帮助他们提高生产力,产生影响力,并进行创造性和有意义的工作;
  2. 通过打破组织壁垒并为开发人员提供有效沟通的机会来促进协作;
  3. 通过对AI的关键投资来为开发人员工作流程腾出升级技能的空间,以帮助您的组织进行实验和创新,以应对未来;

方法论

本报告利用Wakefield Research为GitHub于2023年3月14日至2023年3月29日在线进行的调查,调查对象为非学生,不是经理且在拥有1,000名以上员工的公司工作的500名美国开发人员。