AI正在改变软件开发,但不会取代开发者。开发者角色将转变为监督者,负责代码质量、安全和可维护性。文章强调了AI编码的最佳实践,以及不良代码的后果,并预测开发者职位将持续增长。
译自:AI and the Future of Code: Developers Are Key
作者:Tom Howlett
软件开发领域正在发生一场巨大的变革。Anthropic 的 CEO 最近预测,在未来三到六个月内,AI 可能会编写目前由软件开发人员管理的 90% 的代码。虽然这似乎是开发人员末日来临的预兆,但更准确地说,它是转型的信号。
向 AI 辅助编码的转变不是要取代开发人员,而是要将他们的角色演变为质量、安全性和可维护性的监督者。无论是使用 AI 工具进行快速原型设计的“氛围编程”,还是将 AI 作为代码创建的核心组件,有一点很明确:AI 将提升开发人员的角色,而不是消除它们。
为什么开发人员的职位不会消失
在软件开发中使用 AI 的最大担忧之一是“代码腐烂”的可能性。没有人工监督的 AI 可能会生成缺乏结构、具有隐藏漏洞且难以维护的代码。确保代码健康和避免“代码腐烂”需要熟练的开发人员。人类需要指导、审查和验证 AI 生成的代码,这保证了对他们专业知识的持续需求。
美国劳工统计局支持这一观点,预测 2022 年至 2032 年软件开发人员的就业岗位将增长 25%。最近的趋势也表明,产品管理和工程职位正在增加。根据 Lenny’s Newsletter 最近的一项调查,我们看到项目经理 (PM) 和工程岗位的空缺数量达到了两年半以来的最高水平,目前全球有超过 6,000 个 PM 空缺职位和超过 58,000 个工程空缺职位。这不是一个垂死行业的迹象,而是一个正在适应和扩张的行业。
氛围编程 vs. AI 编码
我们与代码生成交互的方式正在分化,了解新兴的区别很有用:“氛围编程”和“AI 编码”。
氛围编程正逐渐意味着使用 AI 工具来快速拼凑东西,而无需验证,作为概念验证 (POC) 或非业务关键型应用程序。它是关于快速让某些东西工作起来,其中质量不是主要关注点。氛围编程在原型设计方面具有令人难以置信的速度,并降低了 软件开发 的门槛,从而可以进行快速实验。但是,如果不加以管理,它可能会导致技术债务迅速增加,并可能忽略安全问题,并且缺乏与现有复杂系统的集成。
相比之下,AI 编码涉及 AI 在编写代码中发挥重要作用,但在结构化的开发过程中。在这里,开发人员充当架构师、审查员和验证者。AI 提供帮助,但人类进行验证、保护和确保代码符合严格的质量标准。AI 编码有助于加速复杂功能的开发,如果部署了正确的分析解决方案,可以在早期支持识别潜在的错误或效率低下问题,并且可以自动化样板代码,以便开发人员可以专注于更高级别的设计和逻辑。
无论如何,开发人员的智能和经验至关重要——要么管理“氛围”及其下游后果,要么精心指导和验证 AI 的输出。
AI 不会取代开发人员,但会提升他们
我们正在见证 AI 带来的重大转变:软件工程师花费在逐行编码上的时间越来越少,现在有更大的工作来确保 AI 代码的质量——细致的设计、严格的验证、长期的可维护性和强大的安全性。由于 AI 生成代码的速度更快,开发团队现在比以前有更大的验证工作。
这种转变呼应了对“谁破坏,谁负责”方法的需求,即开发人员对他们管理的所有代码承担全部责任,无论他们自己编写的代码还是由 AI 生成的代码。这不再仅仅是编写代码行,而是理解这些行创建的整个生态系统并拥有对它的所有权。
根据 Stack Overflow 年度调查,AI 编码工具确实支持效率(例如 58% 的受访者)和生产力(81%)。但是,AI 并非完美,因此责任和架构监督至关重要。开发人员需要成为代码设计方面的专家,了解 AI 生成的代码的细微差别,并确保其与架构模式和业务需求保持一致。这会将他们的角色从简单地编写代码提升到指导和验证代码。
AI 驱动的代码开发的最佳实践
开发人员应遵循以下几种实践,以确保有效地、负责任地使用 AI。首要任务是问责制——“谁破坏,谁负责”。必须仔细检查代码,尤其是 AI 代码,并且开发人员必须对其负责。其他要遵循的实践包括:
[gf]2022[/gf] 全面的文档,不仅包括代码的作用,还包括代码以某种方式构建的原因。这不仅对人类至关重要,而且对 AI 也至关重要。
[gf]2022[/gf] 努力追求清晰和简洁,并建立明确的流程来防止混乱,并使用护栏提示大型语言模型 (LLM)。
[gf]2022[/gf] 确保没有多余或不必要的代码,这是 AI 生成的输出中常见的问题。
[gf]2022[/gf] 分析所有内容,并为开发人员提供工具,这些工具可以可靠地强制执行一致的编码和架构标准,并帮助发现 AI 可能会遗漏的难以检测的运行时和安全问题。
[gf]2022[/gf] 强制性单元测试,测试要提前编写,而不是由编写代码的同一编码代理编写。
[gf]2022[/gf] 警惕的代码审查,这需要训练有素的开发团队和适当的工具来启用自动化检查。
这些措施有助于确保 AI 增强而不是降低代码质量和开发人员效率。
不良代码的后果
许多公司都在运营着数百万行遗留代码。AI 编码必须在此上下文中实施,这意味着 AI 工具需要与现有系统协同工作并改进现有系统。如果他们不这样做,低质量软件的后果将是严重的。
这种成本不仅仅是一个抽象的概念,它还会造成巨大的财务损失和声誉风险。仅在美国,不良代码就可能造成高达 2.41 万亿美元 的损失,累积的技术债务约为 1.52 万亿美元。在生产中修复一个 bug 的成本可能是在设计阶段修复它的成本的 100 倍。
除了金钱成本之外,软件故障还会严重影响运营,损害品牌信任并导致重大安全漏洞。如果不负责任地使用 AI,可能会放大这些问题,从而导致更复杂且难以维护的代码库。
AI 是一种强大的工具,但它不能替代开发人员。相反,它正在改变他们的角色。软件开发的未来不是一个没有开发人员的未来,而是一个开发人员得到提升并专注于监督、质量和安全性的未来。