AI时代开发者的希波克拉底誓言:在快速编码中坚守质量与安全

本文探讨在AI辅助开发时代,开发者如何坚守"不伤害代码库"的誓言。Sonatype高管指出AI加速编码带来的质量挑战,并提出规范驱动开发和集成测试安全的最佳实践,确保在提升速度的同时维护软件质量与安全。

AI时代开发者的希波克拉底誓言:在快速编码中坚守质量与安全

医生需要遵守希波克拉底誓言,承诺不伤害病人。开发者也应当遵循类似的誓言,承诺在实现新功能或进行更改时不对代码库造成伤害。

Sonatype的首席产品开发官Mitchell Johnson在最近一期播客中探讨了这一概念,以及在AI辅助开发时代是否仍可能实现这一承诺。

Johnson表示:“在医疗领域,医生被教导‘不伤害’,这意味着他们的最高职责是确保患者优先,并且在未首先验证这是对患者最有利的治疗方案之前,不对患者进行任何治疗。当患者被推进手术室,病历上写着‘需要截掉患者的腿’时,医生有责任确保这是患者需要的治疗方案。他们不能仅仅指着病历说‘这是病历上写的’。”

软件工程师的责任类似;当被要求对代码库进行更改时,他们需要首先理解被要求做什么,并确保这是对代码库最有利的做法。

Johnson说:“我们被各种请求淹没。产品经理、业务伙伴、客户要求我们对应用程序进行更改,这是我们的工作,对吧?我们的工作是构建能为人类、客户和企业创造价值的东西,但我们必须理解这些更改的影响。它将如何影响其他系统?它安全吗?可维护吗?性能如何?最终是否能帮助客户?”

在AI出现之前,开发者大约花费40%的时间编写代码,60%的时间审查代码。但现在AI使他们能够以如此快的速度生成代码,这些比例不再准确。

Johnson提出一个问题:如果开发者生成代码的速度比以前快50倍,他们还能进行这些质量检查并遵循开发者的希波克拉底誓言吗?他相信答案是肯定的。

然而他解释说,问题在于这种速度造成了在不进行彻底检查的情况下交付的压力,因为如果代码编写得更快,就有更快将其投入生产的欲望。

去年的DORA报告显示,AI采用率增加25%与交付吞吐量下降1.5%和交付稳定性降低7.2%相关。

Johnson说:“有趣的是什么真正创造了速度。我们都喜欢速度,对吧?但更快的编码实际上并不能产生高质量的产品交付。事实上,我们看到了瓶颈和更低质量的代码。”

他继续说,测试是最可能被生成式AI改变的领域。AI非常擅长研究代码并确定你缺少哪些测试以及如何提高测试覆盖率。

他说,最优秀的组织不仅使用生成式AI更快地编写代码,而且还使用它更快地完成所有其他工作。然而他警告说,我们还没有达到生成式AI可以100%编写代码然后测试该代码的程度。这主要是因为生成式AI的最大问题是它是在旧数据上训练的。

“你可以做一个简单的实验:去你最喜欢的生成式AI模型,选择一个你正在处理的项目中的简单依赖项,你会看到它经常推荐12个月甚至两年前的依赖项,这显然是非常危险的。恶意行为者希望世界开始采用两年前的依赖项,”他说。

他认为这个问题的解决方案在于规范驱动开发,这是一种新的实践,设计师、开发者、安全团队和产品经理都在一起工作,编写针对生成式AI模型优化的规范。

“你可以确保它拥有你的上下文,你可以确保关于测试、安全性和合规性的非功能性需求被纳入规范中,”Johnson说。“你可以开始让这些规范和规则文件在你的生成式AI上下文中先行,你可以真正有效地触及这些其他领域,而不仅仅是‘我能更快地编写代码吗?’从生成式AI中获得最大收益的组织正在采用这种规范驱动的方法,并将安全和测试作为他们采用的生成式AI开发生命周期中的一等公民,他们开始看到的不仅是速度提升,还有质量提升和安全提升。”

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计