7.2

7.2 衡量人工智能辅助的软件开发

概述与动机

主题 7.1 确立了为什么在人工智能辅助开发下,若干现有指标不再可靠地衡量它们曾经衡量的东西。本主题讲的是该转而衡量什么:如何用真实的证据,而不是印象或供应商的营销宣传,来判断人工智能编程辅助是否真正在帮助你的组织,帮助了多少。这是一个真正重要、具有真实预算后果的问题,人工智能工具许可代表着一项真实、持续的成本,主题 5.4 的单位经济学纪律在这里直接适用,而一个无法用证据回答这个问题的组织,要么在为一个没有起作用的工具超额付费,要么对一个真正起作用的工具投资不足。

本主题的方法直接借鉴了主题 1.3 的结果优先于产出原则,现在专门应用到人工智能工具评估上。天真、最常见的方法,是按产出量衡量人工智能辅助开发,生成的代码行数、被接受的建议、开发者自我报告的每项任务节省的时间,恰恰是主题 7.1 所警告的、在这场转变中暴露最严重的那些指标。本主题所建议的更严谨的方法衡量的是结果:人工智能辅助是否在不降低质量的情况下真正缩短了周期时间,它是否减少了花在真正低价值、重复性工作上的时间,从而为更高价值的工作释放出产能,以及它是否可衡量地影响了第5部分的业务和产品结果。

对大团队而言,把这项测量做对,决定了人工智能工具投资决策是建立在证据之上,还是建立在供应商的宣称和组织惯性之上。正在谈判大规模人工智能工具合同的企业组织,需要真实的价值证据来论证这笔支出的正当性,并公平地比较相互竞争的工具;常常在技术支出方面受到特别审查的政府组织,需要一套严谨、站得住脚的评估方法,然后才能把公共资金投入到大规模采用人工智能工具上。

核心原则

  • 按结果、而不是按产出量或供应商报告的使用统计数据来衡量人工智能辅助。 主题 1.3 的纪律在这里全力适用。
  • 在可行的情况下使用一个真正的对照组,而不只是一次可能被一个不断上升的全行业基准所混淆的前后对比。
  • 自我报告的时间节省,单独看是一个弱信号。 把它们与客观的周期时间和质量数据配对。
  • 衡量完整的成本,包括评审和纠正时间, 而不只是生成速度。
  • 不同的任务和不同的工程师,可能看到非常不同的人工智能辅助价值。 避免用一个掩盖这种差异的单一、混合的全组织数字。

建议

建立一个真正的比较,而不只是一次前后对比快照

在可行的情况下,比较一个使用人工智能辅助的群体,与一个在同一时期内、可比但不使用它的群体之间的结果,而不是只比较你自己组织的前后数字,因为后者无法把人工智能辅助的效果,与任何其他同时发生的变化区分开来(主题 1.6 关于混淆变量的告诫在这里直接适用)。在一个真正的对照组不切实际的地方,至少对照一个更长的历史基准(依据主题 1.6 的一份控制图)来比较,而不是一次容易受到均值回归或不相关同期变化影响的单一前后对比快照。

一起衡量周期时间和质量,绝不单独看人工智能辅助的速度主张

直接应用主题 2.6 和主题 2.10 的纪律:跟踪人工智能辅助的工作是否在周期时间各阶段中移动得更快,同时跟踪那项工作的变更失败率或逃逸缺陷率(主题 5.1)是否朝错误的方向变动。一次真正的生产力提升,会显示出更快的周期时间,同时质量保持稳定或有所改善;一次虚假的提升,会显示出更快的周期时间,同时质量在恶化,这恰恰是主题 7.1 所警告的那种交易,在这里通过本书自始至终应用的同一种配对指标纪律被发现。

把评审和纠正时间纳入完整的成本核算

生成起来更快、但评审起来更慢的人工智能生成代码,或者在最初生成之后需要更多纠正和返工的代码,一旦测量整条流水线,可能显示不出任何净周期时间改善,即使最初的代码生成步骤在具体工程师看来快得多。测量完整的周期时间链条(主题 2.6),而不只是编码阶段,以诚实地捕捉这一点,而不是基于一种被感觉到、却不完整的速度感,就把功劳记给人工智能辅助。

把自我报告的时间节省当作一个起始假设,而不是一个结论

开发者自我报告”这为我节省了一个小时”,作为一个初步信号和定性背景是有用的(主题 5.3 定量与定性相结合的方法在这里同样适用),但它同样受制于主题 1.5 针对任何自我报告数据所警告的那种回忆和期望偏差,而且它对下游的评审或纠正成本只字未提。用自我报告来生成关于人工智能辅助在哪里最有帮助的假设,然后在得出一个确定的结论之前,对照客观的周期时间和质量数据来验证这些假设。

按任务类型细分测量,避免一个单一的混合数字

对于样板化、被充分理解的任务,与真正新颖、复杂的问题解决相比,人工智能编程辅助很可能提供非常不同的价值。按任务类别测量并报告,而不是一个单一、混合的全组织平均值,后者可能掩盖了辅助在一个类别中提供了强大价值、而在另一个类别中提供了很少甚至负面价值这一事实,这是一个混合数字会完全掩盖的信息。

权衡取舍:利与弊

方案优点缺点
单独的自我报告时间节省快速,容易收集信号弱;容易受偏见影响;对下游评审成本视而不见
只做前后对比设置起来简单容易被任何其他同期变化或全行业趋势混淆
真正的对照组最有力、最站得住脚的证据更难安排;对一次全面推广的部署可能不切实际
按任务细分的结果测量揭示出价值真正集中在哪里需要更细粒度的跟踪和分类工作

核心张力是测量的严谨性与实践的可行性之间的张力。一个真正的、受控的对照组是最有力的证据,但一旦一个工具已经在没有保留对照组的情况下在全组织范围内推广,往往就不切实际了;自我报告的印象快速、容易,但单独看很弱。解决这种张力的办法,是使用你实际的推广方式所允许的最有力的比较设计,如果可能,在早期试点阶段使用一个真正的对照组,如果不行,就使用一份历史基准控制图,并且无论你最终使用哪种比较设计,都把自我报告当作一个用于生成假设的工具,而不是最终的定论。

与团队讨论的问题

  1. 我们是否曾经拥有、或者现在能否构建一个用于评估我们人工智能工具采用情况的真正对照组,还是我们完全依赖一次前后对比? 如果从未建立过一个真正的对照组,讨论一份历史基准控制图是否依然能提供一个足够严谨的替代方案。

  2. 我们是否一起衡量了人工智能辅助工作的周期时间和质量,还是我们只有一个没有相应质量检查的速度主张? 拉出任何现有的数据,检查这种具体的配对;如果它不存在,这个缺口就是本主题最优先要修复的问题。

  3. 我们对人工智能辅助工作的周期时间测量,是否包括评审和纠正时间,还是只有最初的生成步骤? 一个仅基于生成时间、忽视下游评审成本的速度主张,冒着本主题直接警告过的那种核算不完整的陷阱。

  4. 我们收集了哪些自我报告的时间节省主张,我们是否对照客观数据验证过其中任何一个? 挑一个具体的、常被重复的主张,检查客观数据是否真正支持它。

  5. 我们当前的测量是把所有任务类型混合成一个数字,还是我们知道哪些具体类别的工作显示出最强的人工智能辅助价值证据? 如果是混合的,讨论一份按任务细分的分解可能揭示出当前数字所掩盖的什么。

  6. 如果今天我们必须用证据、而不是印象,向一位持怀疑态度的财务利益相关方为我们的人工智能工具投资辩护,我们实际上能够向他们展示什么? 这项具体的检验,揭示出你的组织目前对人工智能辅助价值所相信的东西,与它实际上能够用证据证明的东西之间的差距。

行业视角

初创公司。 在小规模下,正式的对照组研究通常不切实际,但即使是一次简单、诚实地审视周期时间和缺陷率的前后对比,而不是纯粹依赖工作感觉上快了多少,也能提供比单纯印象有意义地更可靠的信号。

小型企业。 首先把测量精力集中在你价值最高、最重复的任务类别上,那里人工智能辅助的价值最有可能清晰、可测量,而不是试图在你小团队所做的每一种工作上进行一次全面的评估。

企业。 在全组织范围全面推广之前,在早期试点阶段进行一次真正的、受控的比较,在这里往往是可以实现的,也值得刻意花精力去安排,因为它能为通常紧随一次成功试点而来的大规模工具投资决策,产生远更站得住脚的证据。

政府。 公共技术支出决策,包括人工智能工具采购,常常面临特别的审查,可能需要正式的成本效益论证(主题 5.5)。从一开始就把本主题所建议的测量纪律建立到任何试点阶段中,因为一套严谨的、有文档记录的评估方法,会大大强化最终的资助或采购论证。

案例

企业。 一家软件公司把一款人工智能编程助手推广给了它一半的工程团队,作为一次刻意的试点,在完全推广之前,把另一半保留为一个对照组,为期一个季度。试点组对定义明确、样板化程度高的任务,显示出了真实的、统计上有意义的周期时间改善,但对复杂、新颖的架构工作,却没有显示出可衡量的改善,评审迭代次数(主题 2.9)反而略有升高。这一按任务细分才浮现出来的发现,只有因为真正的比较设计和按任务类别的分解才得以看见,促使该公司专门把人工智能辅助推广的宣传和培训,导向那些它已被证明有帮助的任务类别,而不是把它呈现为对所有工作都统一的生产力提升。

政府。 一家联邦机构为其现代化项目的一部分团队试点人工智能编程辅助,最初依赖自我报告的时间节省调查,结果显示出热情、一致的正面回应。一次后续的客观分析,比较试点团队与一个在类似系统组件上工作的可比非试点群体之间的周期时间和逃逸缺陷率,发现真实的周期时间改善是真实存在的,但明显小于自我报告估计所暗示的程度,并识别出一次适度但真实的评审时间增加,抵消了一部分生成速度收益,这一发现是单靠自我报告数据完全会遗漏的。这幅更准确、基于证据的图景,直接为该工具继续、扩大采购提出了一个更朴实、也更站得住脚的商业理由提供了依据。

商业理由:动机、投资回报与总拥有成本

严谨地衡量人工智能辅助开发的回报,是自信的、基于证据的投资决策:一个精确知道人工智能辅助真正在哪里有帮助的组织,可以在那里投资扩大它,并避免在它几乎没有价值的任务类别上为许可证超额付费,这正是上面的软件公司案例所展示的任务细分洞见。这直接连接到主题 5.4 的单位经济学和主题 5.5 的投资回报纪律,因为人工智能工具成本,常常按席位授权,需要与本书应用于任何其他重大工程投资相同的严谨成本效益处理。

总拥有成本是建立真正的比较、测量包括评审和纠正在内的完整周期时间、按任务类型细分所需的分析工作,这比按表面价值接受供应商报告的使用统计数据或自我报告印象要多做一些工作。这份努力,直接由一个大型组织中人工智能工具许可成本的规模,以及基于印象而不是数据、做出一项证据不足、成本高昂的全组织承诺的风险所证明是合理的。

反模式与陷阱

  • 只按产出量或供应商使用统计数据来衡量人工智能辅助: 直接重复了主题 7.1 的核心警告。
  • 完全依赖自我报告的时间节省: 一个容易受偏见影响、对下游评审和纠正成本视而不见的弱信号。
  • 只测量生成速度这一步,忽视完整的周期时间: 产生一份不完整、可能具有误导性的实际生产力效果核算。
  • 报告一个单一、混合的全组织数字: 掩盖了不同任务类别之间真实的价值差异。
  • 没有对照组或历史基准: 无法把人工智能辅助的真实效果,与任何其他同时发生的变化区分开来。
  • 把一次热情的自我报告调查结果当作一项大规模投资决策的充分证据: 冒着上面联邦机构案例所展示的那种缺口的风险,那个缺口只有在建立了一次更严谨的比较之后才被发现。

成熟度模型

  • 第一级,启动: 人工智能辅助开发的价值,即使有被评估,也只通过自我报告的印象和供应商使用统计数据来评估。
  • 第二级,发展: 存在一些周期时间或质量数据,但没有真正的对照组或历史基准,也没有按任务细分的分析。
  • 第三级,标准化: 一种真正的比较设计(对照组或历史基准),配以配对的周期时间和质量测量,被一贯地应用,并按任务类型细分。
  • 第四级,管理: 完整的周期时间核算,包括评审和纠正时间,被跟踪;自我报告的主张被系统性地对照客观数据加以验证。
  • 第五级,协奏: 组织对人工智能辅助真正在哪里有帮助,拥有一种成熟、基于证据的理解,用可证明、站得住脚的投资回报为有针对性的推广、培训投资和采购决策提供依据。

讨论思路

  1. 对我们当前的人工智能工具采用,我们拥有什么样的真正比较,如果有的话?
  2. 我们是否一起衡量了周期时间和质量,还是只有一个速度主张?
  3. 我们应该对照客观数据验证哪一个自我报告的人工智能辅助主张?
  4. 哪个具体的任务类别,对我们而言显示出最强的真正人工智能辅助价值证据?
  5. 我们目前能否用证据向一位持怀疑态度的财务利益相关方为我们的人工智能工具投资辩护?

要点回顾

  • 按结果、而不是产出量或供应商报告的使用统计数据来衡量人工智能辅助开发。
  • 使用一个真正的对照组或历史基准,而不只是一次容易受混淆因素影响的前后对比快照。
  • 一起衡量周期时间和质量,包括完整的流水线、评审和纠正时间,而不只是生成速度。
  • 把自我报告的时间节省当作一个假设,而不是一个结论,并对照客观数据验证它。
  • 按任务类型细分;一个混合的数字掩盖了价值真正集中在哪里、又不集中在哪里。

参考文献与延伸阅读

  • Accelerate: The Science of Lean Software and DevOps,Nicole Forsgren、Jez Humble、Gene Kim著(本主题应用于人工智能工具评估的结果测量纪律)。
  • GitHub关于人工智能结对编程与开发者生产力的研究(关于人工智能辅助开发结果的行业规模实证研究)。
  • Forsgren, Nicole, Margaret-Anne Storey, Chandra Maddila, Thomas Zimmermann, Brian Houck, and Jenna Butler, “The SPACE of Developer Productivity,” ACM Queue (2021)(本主题应用于一个具体新工具类别的多维度测量纪律)。
  • How to Measure Anything,Douglas W. Hubbard著(在真实的不确定性下构建站得住脚的比较并量化价值)。