方向一:AI如何改变IT行业
提示:详细阐述 AI 目前在 IT 行业具体领域的应用,以及对 IT 从业者工作内容产生的实际影响。
大语言模型(LLM)在中国的情况我不太清楚,但像我这样的韩国人,它正在成为一项核心技术。
我是一名独立游戏开发者,主要从事外包和自由职业工作。
过去,能够胜任外包和自由职业的人越来越少,但随着LLM时代的到来,“氛围编程”(VIBE Coding)这种编程方式的普及,外包和外派工作急剧减少。
此外,韩国的就业市场也在逐渐转向不招聘新人的趋势。虽然部分原因是韩国经济状况不佳,但整体来看,AI的引入几乎掀起了一场风暴。目前,AI在韩国市场上被广泛应用于许多领域,甚至我那些在大企业工作的朋友也表示,他们被迫使用IT技术。如果不使用IT工具,可能会因为生产力问题而受到上司的严厉批评。
事实上,无论使用哪种AI,最终都会发现它的不足之处。因为AI无法解决长期的上下文问题,而且LLM本质上基于统计学,倾向于将最常见的代码视为“好代码”,因此其代码风格可能与程序员的习惯不符。尽管如此,用AI编写代码时,在实现常见功能方面确实表现出压倒性的优势。然而,在编写低级别的代码时,AI仍然会犯很多错误。而且,由于市场需求通常集中在用户看不到的领域,AI在开发全新功能时表现较弱。
但无论如何,我们无法完全从零创造一切,因此我认为程序员的一项重要技能就是区分哪些部分需要自己亲手实现,哪些部分可以交给AI来完成。
问题是,这也使得**提示工程(Prompt Engineering)**本身成为了一项技能。
虽然不应该轻易评价AI,但在韩国社区中,AI经常能写出比一些拥有10到15年经验的程序员更好的代码。不过,问题在于当代码变长时,AI难以保持上下文一致性,缺乏架构视角;但在方法或函数级别上,AI往往比大多数人类程序员展现出更优的代码优化能力。
这是显而易见的,因为范围越小,匹配模式的种类就越多。
因此,AI应该被用于处理细小且不重要的逻辑部分。核心逻辑仍然由人类编写,但可以通过借用AI来生成辅助逻辑,从而提高生产力。
为了实现这一点,程序员通常需要掌握以下提示工程技术:
Prompt Engineering | Kaggle
提示:探讨AI的出现从哪些方向改变了 IT 从业者的工作方式、以及 IT 从业者具备哪些独特的能力、知识和思维方式,是 AI难以模仿和取代的。
首先,我们需要根据AI的不同水平来讨论这个问题。
在这个问题中提到的AI水平应该是当前的大语言模型(LLM)级别。如果是实现了通用人工智能(AGI),那么恐怕所有人都会失业。
有时我们会将编程比作写作。在早期的架构观点中,挪威数学家Trygve Reenskaug曾将架构视为编程的隐喻。
那么,什么是隐喻?隐喻是一种比喻,也是一种目的。
大语言模型本质上难以直接设定目标,因为它没有“自我”的概念。目标由需求产生,而需求则由“自我”形成。因此,人类的角色就是设定目标。
老实说,在我刚入职时,大部分时间都在维护前辈编写的代码。这种任务实际上AI做得更好。
如此一来,新人的角色可能会逐渐消失。然而,通过维护代码积累经验并形成自己的隐喻、构建架构视角的机会也将随之消失。
也就是说,过去IT从业者的职业路径依赖性正在消失。过去的职业路径通常是“维护 -> 架构师 -> CTO”,但现在可能会出现新的路径。比如从架构师起步,或者将LLM当作集群使用的新职业路径可能会诞生。
实际上,最近微软裁员6000多人时,海外有分析认为被裁掉的主要是“编码人员”。这意味着那些无法进行编程设计的人很可能被AI取代。换句话说,维护工作的需求减少是时代的变迁,现在需要创造与过去不同的新职业路径。
当然,少数顶尖的研究人员,例如开发全新算法的人,仍然会幸存下来。问题是,由于AI的普及,成为这些顶尖人才的成本变得更高,导致这类职业的门槛也提高了。
此外,使用AI本身是有成本的。根据国外统计数据,有人提到使用AI生成代码还涉及token费用的问题。
即便如此,即使考虑到这些成本,AI仍然比大多数普通人类更便宜,并且能够生成更多的代码。我自己一天最多只能编写6000行代码,但使用AI后,我曾一天生成过5万行代码。
那么,作为人类,真正重要的能力是什么?
这表明我们需要从AI生成的代码中筛选出高质量的部分,将其“缓存”起来,以提高代码的重用率,从而尽量降低高级代码的开发成本。换句话说,人类应该记住使用AI的目的,并缓存AI生成的代码,以便在未来减少代码生成成本,从而在市场上保持竞争力。
提示:对未来 IT 行业发展做出预测,设想 IT 从业者与 AI 共存并协同发展的理想模式。
目前仍感觉方法论有所不足。
最近,IT从业者在与AI协作时发现,尽管使用LLM时可以遵循SOLID原则和良好的架构原则,但事实上,AI更容易理解那些通常被认为不该编写的“上帝类”(God Class)。
此外,在上下文理解方面,生成这些代码的token消耗成本也较低。因此,我认为现有的技术理解方式可能会因为人类与AI的协作而发生变化。
根据我的个人经验,相比于按照面向对象编程(OOP)的原则将类拆分为职责明确的小单元,将代码以稍大的“语义”单元进行划分,并以类似集群的形式附加到“上帝类”上的方式,往往能让AI生成的代码保持更高的连贯性。
当然,LLM未来的发展程度将决定我们是否需要改变现有的技术方向,因此不应轻易预测。但或许现在真的需要寻找一种新的编码方式,让AI能够更好地理解和协作。