新的 DORA 报告已发布,其中有 30 页专门讨论人工智能的采用。我发现了一个特别的发现:人工智能采用的增加与代码质量的提高、代码审查速度的加快、代码复杂性的降低、技术债务的减少和文档的改进相关。然而,它也与交付时间、吞吐量和变更失败率等关键 DORA 指标的下降有关,而对产品性能没有积极影响。
这是违反直觉的,因为您会想象改进软件开发流程会带来更好的软件交付性能。毕竟,如果您正在编写更好的代码,并更快地审查该代码,您会认为它会对下游产生一些显着的影响。事实证明并非如此,作者假设:
…人工智能在受访者生产力和代码生成速度方面产生的根本范式转变可能导致该领域忘记了 DORA 最基本的原则之一——小批量的重要性。也就是说,由于人工智能允许受访者在相同的时间内生成更多的代码,因此变更列表的规模有可能甚至很可能会增加。 DORA 一贯表明,较大的变化速度较慢且更容易造成不稳定。
基本上,组织的部署过程跟不上开发人员生产力的提高,从而导致出现更大的变化,从而导致部署风险更大,从而导致出现红灯效应。这对我来说很着迷,并证实了我长期以来的信念之一(偏见?),即保持较小的变更规模是持续交付的核心,因为在所有条件相同的情况下:
- 变化越小,风险越低
- 改变越小,你需要做出的改变越多,你就越擅长做出改变
- 变更越大,需要的协调就越多,使得变更成本更高,从而降低了进行变更的动力
Reinertsen 的工作充分强调了小批量对提高质量和性能的积极影响,该工作在2012 年 HBR 的这篇文章中进行了简洁的总结,DORA 作者多年来一直在强调这一点。
我不知道他们是否有足够的数据来证实这一假设,但这是一个合理的假设。我想更进一步假设这只是一个短期趋势。对于开发人员来说,采用人工智能工具相对容易,因为它就像打开一个新的浏览器窗口一样简单。然而,对于管道和部署流程来说,速度会更慢,因为它需要对平台级工具集进行更深入的更改,这些更改涵盖个人到团队和部门。我们可能会看到交付过程的“左”和“右”之间存在滞后,我认为这是一个短期问题,由于人工智能的紧迫性,它会比预期更快消失。
例如,尽管报告没有明确将两者联系起来,但在文件的前面,他们确实指出组织是:
…愿意放弃采用新技术所涉及的典型的庞大官僚机构,因为他们感到采用人工智能的紧迫性,质疑“如果我们的竞争对手在我们之前采取这些行动怎么办”
侧边栏:这让我想起了 JDK 版本索引,它在概念上类似于巨无霸索引,可以快速指示组织落后于行业的程度。大公司通常比广泛接受的 JDK 版本落后 4-5 个(有时更多)。我记得当 JDK 1.5 推出泛型时,我多年来一直坚持使用 1.4,因为没有足够的动力来改变被视为如此核心的东西。关于 Java 8 和 Java 17 也有类似的故事。
人工智能是不同的,采用速度会更快,因为如果不这样做,就会带来明显的好处。令人惊讶的是,那些总是以规模和“哦,我们太复杂”为理由而不能迅速适应的笨拙组织,在面临危机(或感知到的危机)时,能够突然摆脱繁文缛节来完成工作(休克主义,有人吗? )。
新冠疫情应对措施就是一个很好的例子。不幸的是,根据我的经验,在 Covid 期间削减的任何流程浪费都又重新出现了。尽管我怀疑任何事情都会像 Covid 那样推动变革,但人工智能看起来也有类似的影响,因此 DORA 关于人工智能对开发人员产生积极影响的发现并没有转化为软件交付性能可能只是一个短期现象。
原文: https://zarar.dev/dora-ai-boosting-productivity-hindering-delivery/