网站搜索

Gartner 在其最新报告中遗漏了人工智能生成代码的 4 大挑战


Gartner 表示,人工智能将要求 80% 的开发人员提高技能,但这并不是故事的全部。从有缺陷的人工智能代码到无休止的修订,以下是报告中未提及的内容。

Gartner 是科技行业最受尊敬的分析师团体之一。其业务是定制咨询服务、会议以及发布多客户行业分析报告。

成为 Gartner 客户的费用并不便宜,估计每个席位每年 30,000 美元起。 Gartner(公平地说,还有大多数其他分析团体)引起兴趣的方式是发布总结其研究报告结论的新闻稿,希望它们能被 ZDNET 等媒体报道。

由于这些新闻稿通常包含解释行业趋势的重要内容,因此我们经常引用它们来试图了解行业的状况。

Gartner 带着新的新闻稿回来了。这篇文章的标题是“Gartner 表示,到 2027 年,生成式 AI 将需要 80% 的工程人员提高技能”。

该新闻稿接着讨论了 Gartner 对人工智能对软件工程产生的短期、中期和长期影响的预测。

在本文中,我将研究 Gartner 的结论,以及我对 Gartner 在其发布的结论中的多个明显遗漏的分析。我联系 Gartner,请求有机会查看完整的报告,该公司很友善地向我提供了该报告。

完整的报告非常简短地提到了一些我认为遗漏的内容。但由于更多的人会根据新闻稿做出判断,而不是在五位数防火墙后面的完整报告,因此值得讨论 Gartner 的一些有效观察结果以及遗漏的非常重要的内容。

我们来谈谈这个标题

Gartner 的大标题是,人工智能将需要 80% 的工程人员在未来两年内提高技能。后来,在新闻稿中,Gartner 澄清说,它指的是软件工程,而不是每个工程学科。

这意味着人工智能将极大地颠覆软件工程,如果你不提高技能,你就会被彻底搞砸。这是真实的。但这不是新闻。

提高技能、学习新东西并跟上技术的发展是任何软件工程师工作的一个关键方面。在本文中,我将交替使用程序员、编码员、软件工程师和开发人员等术语。虽然存在细微的差异,但就我们讨论的目的而言,它们都是适用的。

我的观点是,如果你是一名程序员,你需要不断学习。

作为一名软件工程师,必须提高技能并不奇怪。程序员总是需要提高技能。每一个新的操作系统版本、每一种新语言、每一个新 API、每一个新硬件的发布都需要提升技能。

人工智能还要求工程师提高技能,但这对于维持软件工程师或开发人员的职业生涯来说并没有太大的变化。

所以,是的,虽然标题是可信的,但它对编码职业的影响并不像它似乎暗示的那样。

人工智能的短期、中期和长期影响

以下是 Gartner 如何描述人工智能影响的各个阶段。

  • 短期内:“人工智能工具将通过增强现有的开发人员工作模式和任务来适度提高生产力。对于拥有成熟工程实践的组织中的高级开发人员来说,人工智能的生产力优势将最为显着。”
  • 中期:“人工智能代理将使开发人员能够完全自动化并卸载更多任务,从而改变开发人员的工作模式。这将标志着人工智能原生软件工程的出现,而大多数代码将由人工智能生成而不是人类创作的。”
  • 从长远来看:“虽然人工智能将使工程变得更加高效,但组织将需要更多熟练的软件工程师来满足对人工智能支持的软件快速增长的需求。”

我并不反对这种评估,尽管你无法真正将这三个结果归入不同的时间段。现在我们有了人工智能工具,将能够增强短期和长期的编码能力。

例如,符号调试器已经存在了 40 年左右,而且我们仍然每天使用它们。它们已经变得更好,可以做更多的事情,并且反映了工作环境的细微差别,但它们仍在使用中。人工智能辅助编程就是这种情况。

Gartner 分析师 Philip Walsh 表示:“构建人工智能驱动的软件将需要新一代的软件专业人员,即人工智能工程师。” “人工智能工程师拥有软件工程、数据科学和人工智能/机器学习 (ML) 方面的独特技能组合,这些技能备受追捧。”

请记住,人工智能对编码的影响是有区别的。有时,程序员会使用人工智能进行编程(以使更多代码正常工作)。有时,开发人员会在编程中使用人工智能(以使他们正在处理的代码和解决方案更加智能)。

Gartner 去年年底做了一项调查,向 300 名软件工程经理询问了工作角色。 56% 的受访者表示,人工智能和机器学习工程师是最受欢迎的角色,将人工智能和机器学习应用于应用程序是他们的团队需要提高技能的领域。

这是完全有道理的。人工智能和机器学习功能有潜力为几乎所有领域的应用程序增加巨大价值。

4个明显的遗漏

Gartner 的 Walsh 表示:“在人工智能原生时代,软件工程师将采用‘人工智能优先’的思维方式,他们主要关注引导人工智能代理针对给定任务找到最相关的环境和约束。”

“人工智能优先”编程的基本前提是开发人员将作业交给人工智能,然后人工智能返回项目代码。这直接类似于编程经理将任务交给团队中的开发人员,以及这些开发人员返回项目代码。

完整的报告确实提到,高级开发人员可能会在没有自动代码审查工具的组织中负责检查代码质量。但即使在完整的报告中,这个问题也比讨论的内容要多得多。以下是 Gartner 新闻稿中遗漏的四处内容。

  1. 总是需要进行修改以使代码符合规范
  2. 所有软件所需的大量测试和质量控制
  3. 整个生命周期中更新、维护、错误修复和性能调整的需求
  4. 维护不是你编写的代码要困难得多

如果不对软件工程的这四个方面给予一定的关注,就无法讨论软件工程的未来。

1. 修改代码以满足规范

场景很简单。您向人工智能提供提示或向编程团队提供一组指南。时间流逝(人工智能的时间减少,团队的时间增加),你会得到一大堆所谓的工作代码。

那你就试试吧。这不太正确。第一次运行时永远不会完全正确。即使您自己编写代码,编写代码后的第一次运行也会出现错误。这是宇宙的自然法则之一。

现在,你可以告诉 ChatGPT 它给你的东西不起作用,或者给它错误消息,它会生成一个全新的代码块。但人工智能要逐步修改其工作以适应所需的内容要困难得多。

无论人工智能是文本到文本还是文本到图像,这都适用。尝试让 Midjourney 仅对图像进行所需的更改。您可以指定要处理的小区域,然后 Midjourney 会做 Midjourney 想做的事情。

为了能够让开发人员“将作业交给人工智能,人工智能返回项目代码”,人工智能必须能够接受批评并做出小的、有针对性的改变。

现在,每个返回的修订版都是一次完整的骰子掷骰。

2. 测试和质量控制

可以让一个 AI 测试另一个 AI 的输出。我已经做到了这一点并取得了相当好的结果,特别是检查正则表达式的构造方式和执行方式。

但考虑到人工智能产生幻觉的程度,以及人工智能编写不起作用的代码的频率,需要将开发测试协议和套件作为人工智能编程过程的一部分。

所有这些可能都需要人类完成大部分工作。在我们确定代码是好的之前,我们将无法依赖人工智能来编码。项目越大,代码越复杂,我们就越需要人类程序员和项目经理来引导整个过程。

3. 更新、维护、错误修复、性能调整

软件远非静态。一旦发布,就需要修复错误、实施更新、调整性能等等。这些都不是人工智能可以在整个产品中完成的事情。

这并不是说人工智能无法提供帮助。例如,它当然可以被交给一个函数,并提示重写(注意我没有说“更新”)该函数以提供更好的性能。

当然,现在你有了一个全新的功能,需要进行功能测试。如果重写过程中出现问题,您就不能只查看修改的几行。您必须在整个代码块中找到错误。

4. 维护不是你编写的代码

维护您编写的代码是一项工作。维护不是您编写的代码是一项繁重的工作。当您编写代码时(无论是作为个人还是团队),您都会了解为什么代码是这样构造的、所有部分如何协同工作以及为什么做出某些决定。

当您维护其他人(人类或人工智能)编写的代码时,该代码是全新的。您首先必须解构代码的整个架构。如果你做得正确,你就会仔细记录你发现的一切。这个解构过程非常非常耗时——而且是在您修改或添加一行新代码之前。

我对此有一些经验。早在 2015 年,我就采用了 10 个开源 WordPress 插件。这意味着我负责维护代码、修复错误和安全缺陷,以及将其中的一些代码转变为更具商业功能的产品。

我不仅必须解构原始程序员如何编写代码,而且我还发现——在某些情况下——我讨厌他们的编程风格。程序员可能非常注重编程风格、代码的编写和结构方式。

在大多数情况下,以多种风格编写的代码都会运行,但每个程序员的大脑工作方式不同,并且倾向于某些编写代码的方式。我对代码风格特别挑剔。如果它按照我喜欢的方式编写,我的工作效率就会非常高。但如果编码风格让我烦恼,我的工作效率就会下降,而且我会变得暴躁。

我尝试让 ChatGPT 从一种更烦人的编码风格转换为我喜欢的一种编码风格,特别是对于 PHP 和 HTML 的混合。 ChatGPT 没有成功。随着时间的推移,也许可以根据首选的编码风格仔细训练人工智能,并让它将采用的代码更新为开发人员或开发团队喜欢的风格,但我们还没有做到这一点。

因此,维护人工智能生成的代码不仅比最初编写代码更困难,而且还可能与良好的风格实践相冲突,使其工作起来更加烦人。

AI会取代开发者吗?

Gartner 在其新闻稿中宣传的研究报告标题为“人工智能不会取代软件工程师(事实上,可能需要更多)”。这是我完全同意的前提——至少在未来十年左右的时间里是这样。

正如我所展示的,除了使用人工智能帮助编程或使用人工智能使程序更有能力之外,还有很多与编程项目的基本逻辑相关的工作要做。

毫无疑问,人工智能可以帮助编程。我估计,在过去的一年里,人工智能至少为我节省了一个月的编程时间,让我能够完成在我有限的空闲时间下可能不会完成的项目。

但人工智能帮助编写的代码确实损坏了。很多。我发现自己花费了同样多的时间来修复人工智能没有预料到的边缘情况,对人工智能的编码架构进行逆向工程,然后将代码重新投入生产。这当然与不干涉编码工作的委托相去甚远。

完整的 Gartner 报告具有启发性且经过深思熟虑。但该报告可以对我提到的领域进行更多讨论。我鼓励分析师补充他们的报告,更加注重修订、测试和持续维护。请记住,不仅仅是生成代码的过程,而是在所有这些代码行的末尾添加第一组分号*之后软件项目的整个生命周期。

你怎么认为? AI会取代程序员还是对编程技能产生更多需求?您是否已经在不断提升技能?您认为人工智能会要求您提高一组不同的人才的技能吗?您认为人工智能有一天能够完成编程项目中必需的错误修复和维护吗?

*注意:Python 不需要分号,但 Java、JavaScript、PHP 和所有基于 C 的语言都需要。

相关文章