我们不应将AI视为替代人类开发者或代码的存在,而要审视其转型的价值与风险。
译自 AI Will Create Demand and Empower Developers, Not Replace Them,作者 Tony Graham 是 Sonar 的产品营销经理。他在企业软件开发方面有近 10 年的经验,拥有丰富的背景,涵盖了报表程序生成器和 .NET 开发人员、信息系统管理员、谷歌软件的各种角色......
我们所有人都知道 AI 不仅是未来,也是现在。在软件开发的世界中,它已经来了。
与其害怕 AI 取代人类开发者甚至传统代码,不如看看这项技术在 DevOps 流程方面的变革价值和风险。然后,我们会明白,AI 需要开发者的专业知识来引领方向——从而创造更多,而不是更少的需求。它还带来了可以增强开发者职业生涯的好处。
生成式 AI 已经为开发者带来了许多好处,并且结合整洁代码的最佳实践,它有巨大的潜力帮助创建安全、可维护和可靠的软件。然而,我们必须权衡生成式 AI 工具的优劣。
自诞生以来,每个人一直在讨论生成式 AI 的利与弊。这是一场公平的对话。随着我们适应和采用这项技术,AI 的未来还有很多未知之处。事情是:在此期间,我们可以弄清楚在现在最好的使用方式。
AI 在开发方面可以发挥有用作用,这一点毫无疑问。来自布朗大学的这项研究表明,使用 AI 来构建软件具有前景。根据我们在 Sonar 的第一手知识,我同意这一点,但当涉及到编程方面时,我也谨慎地对 AI 的前景持保留态度,因为 AI 是为了速度而不是质量进行编写的,这带来了风险。下面会详细讨论。但是首先,让我们谈谈 AI 在支持人类开发者方面的益处。
AI 会处理那些可能否则会占用开发者大量时间的恼人、乏味、例行任务,这样他们就能更好地专注于手头的实际工作。事实上,92% 的开发者已经使用 AI 来减轻他们的负担。从这里开始,AI 可以在以下几个具体类别中最好地辅助开发者:
- 生成代码片段: AI 可以在几秒钟内完成这项工作。开发者只需要告诉技术他们想要完成什么以及想要使用什么语言,他们就可以对问题的最佳方法有一定的了解。
- 学习: 尽管需要检查准确性,但 AI 可以帮助开发者在不必自己进行研究的情况下理解代码片段和编程概念。
- 文档: 没有人喜欢文档。它既枯燥又困难。然而,AI 文档可以帮助引起对开发过程中没有工作的事情的关注,同时减少事后开发时间。
- 代码快速启动: 这给予了那些有想法但不知道从哪里开始的开发者很大的帮助。尽管语言不同,AI 可以在几秒钟内生成编码。即使项目的参数需要审查,它也可以让你有一个良好的开端。
- 算法辅助: 算法很难。AI 的伟大之处在于它帮助开发者学习和理解他们正在处理的内容。通过伪代码和分步说明,此工具可以引导我们的编码人员完成最重要的项目。
虽然 AI 可以节省开发者的时间去从事更高价值的项目,并帮助提高生产力,但它存在需要人类技能来控制的固有风险。这就是为什么在 AI 时代,对开发者的需求会增加而不是减少的原因。以下是需要注意的几个陷阱:
- 来源是什么?:AI 的一个问题是它降低了对代码负责的能力。AI 的工作依据是它所教授的,这意味着当某些事情出错时,它结合了太多来源而无法具体定位一个。如果代码是由人直接编写的,还是来自某人发布到互联网上的代码,这将使解决问题最终变得更加困难。
- 漏洞:同样,由于其汇聚能力,无法保证 AI 生成的编码是安全或整洁的。它创建的内容可能包含你的团队一直努力防止的那种错误和漏洞。特别是安全问题可能会使你的公司陷入困境。检查 AI 编码的需要为软件开发者创造了更多工作。
- 质量:AI 是自动的。它没有进行质量检查或复核。仅仅因为 AI 生成了编码并不意味着它尽可能高效或高质量。团队必须筛选 AI 创建的内容以确保它是其项目或公司所需的正确编码。
- 无上下文:自然地失去人的元素意味着你会失去问题或项目的上下文。AI 是自动的;它并不假设知道你试图实现的每个目标的性质。它受过大量代码训练,这些代码通常来自未知来源。即使它有助于减少一些苦差事,也仍然需要双重检查以确保它能全面完成工作。
AI 有解锁广阔可能性的潜力,但前提是我们在利用其潜力的同时,把人的因素放在首位,检查技术的局限性。这对软件行业和软件开发有转型的潜力,但让它毫无检查地运行并不明智,特别是当现代商业成功依赖于支撑它的软件的优势时。
目前,我们的最佳行动方案是仔细监控和更好地理解 AI,以便我们可以负责任地将其付诸实践。在此过程中,关键是要牢记 AI 的工作原理,它不是用来取代传统编码,而是可以与之相辅相成的资产。
随着对 AI 的依赖性加强,组织还必须通过遵循整洁代码最佳实践,主动审查生成的代码并预防产后问题。当开发人员以“编码整洁”的方式处理代码(无论是人工生成还是 AI 生成)时,他们可以确保它适合开发和生产,并满足组织要求的标准。通过这种方式,开发人员可以对其软件充满信心,确信它是一致的、有意义的、可适应的和负责任的——易于理解和更改,运行顺畅并且没有技术债务,因此使其符合目的,并使软件成为长期业务资产。