
高德纳是科技行业最受尊敬的分析机构之一。它的业务是定制咨询服务、会议和发布多客户行业分析报告。
成为Gartner的客户并不便宜,估计每个座位每年的起价为3万美元。高德纳(公平地说,大多数其他分析机构也是如此)创造兴趣的方式是发布新闻稿,总结其研究报告的结论,希望它们能被像ZDNET这样的媒体所报道。
由于这些新闻稿通常包含解释行业趋势的金块,我们经常通过它们来试图了解行业状况。
高德纳(Gartner)带着一份新的新闻稿回来了。这篇文章的标题是:“Gartner表示,到2027年,生成式人工智能将需要80%的工程劳动力提高技能。”
新闻稿接着讨论了Gartner对人工智能对软件工程的短期、中期和长期影响的预测。
在这篇文章中,我将看看Gartner的结论,以及我对Gartner在其发布的结论中多个明显遗漏的分析。我联系了Gartner,要求有机会查看完整的报告,该公司很好心地为我提供了完整的报告。
完整的报告非常简短地提到了我认为是遗漏的一些内容。但由于更多的人会根据新闻稿而不是在五位数的防火墙后面的完整报告做出判断,因此有必要讨论一下Gartner的一些有效观察结果,以及遗漏的非常重要的内容。
高德纳的头条新闻是,人工智能将要求80%的工程人员在未来两年内提高技能。后来,在发布中,Gartner澄清说,它指的是软件工程,而不是每一个工程学科。
这意味着,人工智能将极大地颠覆软件工程,如果你不提高技能,你实际上就完蛋了。这是真的。但这不是新闻。
提高技能、学习新东西和跟上技术是任何软件工程师工作的一个关键方面。在本文中,我将交替使用程序员、编码员、软件工程师和开发人员等术语。有细微的差别,但就我们讨论的目的而言,它们都是适用的。
我的观点是,如果你是一名程序员,你需要不断地学习。
作为一名软件工程师,必须提高技能并不奇怪。程序员总是需要提高技能。每一个新的操作系统,每一种新的语言,每一个新的API,每一块新的硬件的发布都需要提升技能。
人工智能也需要工程师提高他们的技能,但这对于维持软件工程师或开发人员的职业生涯来说并没有太大的变化。
所以,是的,虽然标题是可信的,但它对编码职业的影响并不像它所暗示的那样重要。
以下是Gartner对人工智能影响的各个阶段的描述。
在短期内:“人工智能工具将通过增加现有开发人员的工作模式和任务来适度提高生产力。对于拥有成熟工程实践的组织中的高级开发人员来说,人工智能的生产力优势将最为显著。”
从中期来看:“人工智能代理将改变开发人员的工作模式,使开发人员能够完全自动化并卸载更多任务。这将标志着人工智能原生软件工程的出现,届时大多数代码将由人工智能生成,而不是人类编写。”
从长远来看:“虽然人工智能将使工程更有效率,但组织将需要更多熟练的软件工程师来满足对人工智能软件快速增长的需求。”
我不反对这种评估,尽管你不能把这三种结果划分到一个时间段。人工智能工具,现在我们有了它们,将能够增加短期和长期的编码。
例如,符号调试器已经存在了40年左右,我们仍然每天都在使用它们。它们变得更好了,它们做了更多的事情,它们反映了工作环境的细微差别,但它们仍在使用中。这将是人工智能辅助编程的情况。
Gartner分析师菲利普?沃尔什(Philip Walsh)表示:“构建支持人工智能的软件将需要一种新型的软件专业人士,即人工智能工程师。”“人工智能工程师在软件工程、数据科学和人工智能/机器学习(ML)方面拥有独特的技能组合,这些技能是人们追捧的。”
请记住,AI对编码的影响是有区别的。有时候,程序员会使用AI进行编程(让更多的代码工作)。有时,开发人员会在编程中使用AI(使他们正在处理的代码和解决方案更智能)。
Gartner在去年年底做了一项调查,询问了300名软件工程经理的工作角色。56%的人表示,人工智能和机器学习工程师是最受欢迎的角色,将人工智能和机器学习应用于应用程序是他们的团队需要提高技能的一个领域。
这完全说得通。人工智能和机器学习的特点有潜力为几乎任何领域的应用增加巨大的价值。
Gartner的沃尔什表示:“在人工智能原生时代,软件工程师将采用‘人工智能优先’的思维方式,他们主要关注的是引导人工智能代理在特定任务中找到最相关的环境和约束条件。”
“AI优先”编程的基本前提是,开发人员将任务交给AI, AI为项目返回代码。这直接类似于编程经理将任务分配给团队中的开发人员,而这些开发人员为项目返回代码。
完整的报告确实提到,在没有自动代码审查工具的组织中,高级开发人员可能会承担代码质量检查的任务。但是,即使在完整的报告中,问题也比讨论的要复杂得多。以下是Gartner新闻稿中遗漏的四项内容。
修改代码以使其符合规范总是必要的
大量的测试和质量公司所有软件所需的控制
更新的需要整个生命周期的e、维护、bug修复和性能调优
维护不是您编写的代码要困难得多
在讨论软件工程的未来时,你不可能不给予这四个方面一些重要的关注。
这个场景很简单。你向AI提供提示或向编程团队提供一组指导方针。随着时间的流逝(AI的时间变少了,团队的时间变多了),你会得到一大块可以运行的代码。
然后你试一下。这不太对。在第一次运行时,它永远不会完全正确。即使您自己编写代码,编写代码后的第一次运行也会有错误。这是宇宙的自然法则之一。
现在,你可以告诉ChatGPT它给你的东西不起作用,或者给它一个错误信息,它会生成一个全新的代码块。但人工智能很难逐步修改他们的工作,以适应需求。
这适用于人工智能是文本到文本还是文本到图像。尝试让Midjourney在图像中进行您想要的更改。你可以指定一个小的工作区域,但是Midjourney会做Midjourney想做的事情。
为了让开发人员能够在项目中“将任务交给AI, AI为项目返回代码”,AI必须能够接受批评并做出小而集中的更改。
现在,每次返回的修订都是一次完整的掷骰子。
让一个AI去测试另一个AI的输出是可能的。我这样做的结果相当不错,特别是检查正则表达式是如何构造和执行的。
但考虑到人工智能产生幻觉的程度,以及人工智能编写出无法运行的代码的频率,测试协议和套件需要作为人工智能编程过程的一部分来开发。
所有这些都可能需要人类做很多工作。在我们确定代码是好的之前,我们不能依赖人工智能来编写代码。项目越大,代码越复杂,我们就越需要程序员和项目经理来指导整个过程。
软件远不是静态的。一旦发布,就需要修复错误,实现更新,调整性能,等等。这些都不是人工智能可以在整个产品上完成的。
这并不是说人工智能不能提供帮助。例如,当然可以给它一个函数,并提示它重写(注意,我没有说“更新”)该函数以提供更好的性能。
当然,现在您有了一个全新的函数,需要进行功能测试。如果在重写过程中出现问题,您不能只查看修改的几行代码。你必须在整个代码块中找到错误。
维护自己编写的代码是一项工作。维护不是你写的代码是一大堆工作。当您编写代码时(无论是作为个人还是团队),您对代码的结构为什么是这样、所有部分如何协同工作以及为什么做出某些决策都有一定的了解。
当你维护别人写的代码(人类或AI)时,代码是全新的东西。首先必须解构代码的整个体系结构。如果你做得对,你会仔细记录下你发现的一切。这种解构过程非常耗时——这是在您修改或添加哪怕一行新代码之前。
这方面我有经验。早在2015年,我采用了10个开源WordPress插件。这意味着我要负责维护代码,修复错误和安全漏洞,并在其中一些项目中,将它们变成更具商业功能的产品。
我不仅要解构最初的程序员是如何编写代码的,我还发现——在某些情况下——我讨厌他们的编程风格。程序员可能非常注重编程风格,即代码编写和结构的方式。
在大多数情况下,以各种风格编写的代码都可以运行,但是每个程序员的大脑工作方式不同,并倾向于某些编写代码的方式。我对代码风格特别挑剔。如果是按照我喜欢的方式写的,我就会非常有效率。但如果编码风格惹恼了我,我的工作效率就会下降,我就会变得暴躁。
我曾尝试将ChatGPT从一种更烦人的编码风格转换为我喜欢的风格,特别是PHP和HTML的混合。ChatGPT没有成功。随着时间的推移,我们可能会根据自己喜欢的编码风格仔细训练AI,并让它按照开发者或开发团队喜欢的风格更新所采用的代码,但我们还没有做到这一点。
因此,维护ai生成的代码不仅比编写原始代码更困难,而且还可能与良好的风格实践相冲突,使其更加令人讨厌。
高德纳在其新闻稿中宣传的这份研究报告题为《人工智能不会取代软件工程师(事实上,可能需要更多)》。这是一个我完全同意的前提——至少在未来十年左右。
正如我所展示的,除了使用AI帮助编程或使用AI使程序更有能力之外,还有许多与编程项目的基本后勤相关的工作要做。
毫无疑问,人工智能可以帮助编程。我估计AI在过去一年里为我节省了至少一个月的编程时间,让我完成了在有限的空闲时间里我可能不会承担的项目。
但人工智能帮助编写的代码确实会出错。很多。我发现自己花了很多时间去修复人工智能没有预料到的边缘情况,对人工智能的编码架构进行逆向工程,然后将这些代码重新投入生产。当然,这与不干涉编码工作的委托相差甚远。
完整的Gartner报告很有启发性,而且经过深思熟虑。但报告可以对我提到的领域进行更多的讨论。我鼓励分析人员通过更多地关注修订、测试和正在进行的维护来补充他们的报告。请记住,不仅仅是生成代码的过程,而是在所有代码行末尾添加第一组分号*之后软件项目的整个生命周期。
你觉得呢?人工智能会取代程序员,还是会对编程技能产生更多需求?你已经在不断提高技能了吗?你认为人工智能会要求你提升一系列不同的天赋吗?你认为人工智能有一天能够完成编程项目中必不可少的bug修复和维护工作吗?
*注意:Python不需要分号,但Java、Javascript、PHP和所有基于c的语言都需要。
你可以在社交媒体上关注我每天的项目更新。一定要订阅我的每周更新时事通讯,并在Twitter/X @DavidGewirtz, Facebook Facebook.com/DavidGewirtz, Instagram Instagram.com/DavidGewirtz和YouTube YouTube.com/DavidGewirtzTV上关注我。





