LLM-时代的软件工程
LLM 时代的软件工程
原文:
towardsdatascience.com/software-engineering-in-the-llm-era/
在广泛的软件工程领域,关于是否在编码中使用 LLM(大型语言模型)是一个好主意还是坏主意,争论正在激烈进行。在极端的观点中,有些人认为在编码中使用 LLM 是不可辩护的,而另一些人则准备将整个软件工程领域视为过于昂贵且不必要的而抛弃。我对这场讨论非常着迷,尤其是从我的社会学家视角来看,因为对话中的大部分似乎都在讨论是否 一个 LLM 是有用的。它是否致命地有缺陷,以至于完全是浪费时间,还是它如此不可思议地强大,以至于避免它是徒劳的?与其如此狭隘地思考,我实际上真的想讨论在 LLM 技术背景下的软件工程更广泛的环境。(我认为软件工程只是与我所在的机器学习工程领域相邻,但在我的职业生涯中,我与许多极具才华的 SWE(软件工程师)一起工作,在大小不一的技术公司,我有机会非常密切地观察这个角色。以下的一些分析也适用于 MLE(机器学习工程)领域,但并非全部。)
背景
在我的职业生涯中,我看到了美国科技经济中发生了很多变化,以及“编码”工作是如何被感知和描述的。这有点陈词滥调,但确实有一段时间,“学习编码”被吹捧为通往白领职业、稳定工资和未来保障前景的最快方式,无论是年轻人还是试图在不断变化的经济中找到位置的职场转换者。编码训练营来了又去,一度为人们提供了一个相对快速的方式,以获得工作的基础技能。
然而,在许多领域,合格员工的短缺可以迅速转变为人才过剩,无处可去(问问律师吧),尤其是在提供高薪或至少舒适薪资的情况下。虽然有些人认为这种情况正在软件工程领域发生,但还不清楚这是否一定是必然的,因为还有其他因素在起作用。在 2010 年代中期,许多科技公司和小型初创公司都在为超速增长而争抢,尽可能快地招聘,使用廉价的创业资本来资助他们的扩张而不考虑盈利能力,但现在这已经结束了。COVID 大流行开始后不久,科技行业裁员,包括许多软件开发工程师,爆炸性地增加,这在很大程度上是对之前几年不可持续招聘的回应和对封锁经济突然冲击的应对。在那段裁员期之后,许多领域的 SWE 人才招聘放缓。开发技能正在多样化并专业化,因此可能仍然有一些子领域有强劲的招聘需求,但许多年轻的 SWE 特别难以进入。
初级与高级
这就带我们来到了现在。有些人认为软件工程师并不多,但缺乏经验或初级软件工程师太多,而且雇主仍然迫切需要经验丰富的招聘人员。这究竟意味着什么?这是真的吗?没有进行学术研究来真正调查这个问题(如果有人对这个问题进行了很好的研究,请把它发给我!),我们仍然可以看看涉及的问题。首先,让我们定义一下术语。
我在这里不使用任何人的内部级别术语,也不谈论职位名称,但我想澄清,根据他们带来的经验和技能,某人的角色可能会有哪些不同。
一名初级软件开发工程师(SWE)需要相当多的支持、指导和管理工作才能产出高质量的工作。他们还没有达到独立工作或指导他人的水平。他们仍在学习如何完成这项工作。这并不意味着他们不产生价值!初级工程师确实会编写代码并完成工作,而且他们通常能快速学习并提高生产力。然而,一名高级 SWE 是可以预期主要独立工作的人,完成高质量工作和达成目标所需的监督最少,他们可以依靠来帮助那些初级人员。他们开始能够解决更复杂的问题,编写高质量、优雅的代码,甚至开始参与关于如何构建整个代码库以实现长期发展的战略讨论。
这基本上是大多数熟练职业的模式——你会从学校或培训中学到你需要知道的一些知识,但你真正学会如何成为该职业的一员并完成工作是通过经验和实践。在这个框架中,从初级到高级所需的时间没有固定的规则,因为这完全取决于你能够做什么以及你拥有的能力。随着时间的推移,你在工作中的表现越好,作为工人的感知价值(以及你的薪酬)就越高。
LLMs Enter Stage Left
在这种情况下,我们可以开始探讨这种变化,以及 LLM 和基于 LLM 的编码工具的存在实际上可能(用一种陈词滥调)如何扰乱目前的职业环境。
作为个人,如果你是一名高级软件开发工程师(SWE),你可能会发现像 Github Copilot 或 Cursor 这样的 LLM 工具在做一些琐碎的工作时很有用,比如让单元测试工作,编写基本文档,或者勾勒出一个项目的大致轮廓,然后根据你自己的知识来填充。然而,你自己的知识对于这个效果来说至关重要。正如我们在机器学习领域会告诉你的,LLM 的输出在本质上具有概率性。如果训练数据中有许多与你正在做的事情相关的代码示例,那么它为你生成有效代码的可能性是相当高的。但迟早(可能更早)它会生成一些无法工作的代码。这可能是一次明显的失败或无声的失败,可能是一个安全漏洞,或者可能只是完成任务的一种次优方式。在那个时刻,重要的是你如何应对。
假设你是一名有丰富经验的资深 SWE,自己亲手编写了所有这些内容,你拥有发现错误并找出如何平滑地修复它们以使最终产品良好的技能。LLM 最终可能使你更有效率,因为你可以将一些不有趣且不需要太多思考的工作抽象出来。如果你不是资深人员,那么你可能最终会回到 LLM 那里,请求它修复自己的错误。它可能会这样做,但总是存在引入另一个错误的风险,并且随着时间的推移,错误可能会越来越多。实际上很难预测这需要多长时间,也很难将其与你自己学习底层代码并自行解决问题的所需时间进行比较。
然而,很多人可能会争论说,LLM 重复工作流程是可行的。人们可能认为,只是在那里点击悬停按钮,一遍又一遍地告诉 Copilot“修复”就足够了,即使这不是一项特别令人满意的工作。然而,有严重的论点可以提出,输出将严重有缺陷,无论是在可读性、可维护性、安全漏洞还是其他方面。
“当然,通用人工智能(Gen AI)加速了开发,但也加速了风险。现在两个工程师可以产生与 50 个工程师相同数量的不安全、难以维护的代码。”—
www.zdnet.com/article/10-professional-developers-on-vibe-codings-true-promise-and-peril/*
最近许多作家都提到了这个问题。然而,我此刻对 Copilot 最终能否达到预期结果不太感兴趣,我更感兴趣的是这个过程和工作方式对我们产生了什么影响。
扩大视野
记住,我们在这里讨论的是 LLM 对职业的影响。在人工智能时代之前,一个初级工程师会开始处理一个工单,并犯一些错误,引入几个 bug,他们基本上会依靠 StackOverflow 和文档,以及同事的帮助来合作解决问题。一旦他们摸索出正确的方法并使代码工作,他们会提交一个 Pull Request(PR)并从更有经验的同事那里获得反馈,这些同事会提供建议和修正。一旦这些修正被采纳,PR 就可以被批准并合并。
我认为这个过程中的“摸索”部分在教育和职业发展方面实际上非常重要。一旦你通过了软件工程角色的学术准备,实际准备就是你需要发展能力的步骤。我坚信犯错并改正它们是学习的一种极其宝贵的方式。一旦负责那部分代码的初级开发人员努力工作,修复了自己的 bug,编写了测试和文档,并经历了 PR 审查,他们会比周围任何人都更了解那部分代码。这个过程是富有成效的认知劳动,使他们更接近成为一个能够独立工作并成功承担更高级职责的工程师。
关于效率
然而,从外部来看,这个过程似乎很慢。它看起来他们不得不花费大量时间四处摸索,才能得到一个能够工作的代码最终结果,难道不是直接让一个大型语言模型(LLM)来做,或者让一个资深开发者来做会更有效率吗?
如果效率是你的唯一标准,那么当然,这可能是对的。但我强烈反对这个前提。我们在很多情况下都没有考虑更广泛的背景或影响,尤其是在科技行业,不惜一切代价优先考虑效率是未来灾难的配方。让我们稍微展开这个叙述——如果效率是优先考虑的,那么我们可能让 LLM 完成大部分工作,或者让资深开发者来做,或者两者兼而有之,比如 LLM 先尝试,然后资深开发者进行审查。抛开任何关于质量的问题(对此应该有所质疑),在这个空间中,初级软件开发工程师(SWE)的角色是什么?
初级 SWE 会看着 LLM 完成大部分编码吗?他们只是作为观察者存在吗?当 LLM 进行时,他们偶尔点击“确定”,这体现了“感觉编码”?或者在这个场景中他们根本不存在?AI 领域的响亮声音确实在争论他们完全消失。如果是这样,在短期内,科技行业的雇主在工资上节省了大量的钱,因此股价上涨。
感觉编码的概念是使用基于 LLM 的工具来编写你的项目代码,实际手写代码的量最小。这个名字来源于这样一个原则:你坐在键盘后面对想要得到的结果有一个大致的“感觉”,但你要么不知道如何自己完成,要么不想自己完成,所以你将编码的认知工作外包给计算机。你只需用人类语言描述你想要的总体轮廓,然后让 LLM 找出通过代码实现这一目标的方法。
空洞化
然而,我们知道一个健康的职业需要随着资深员工的晋升和最终退休而引入新的人才。资深工程师仍然很受欢迎,因为他们可以解决只有初级开发人员和 LLM 都无法解决的问题,并编写复杂的代码。他们的经验和技能无疑是宝贵的,对于生产高质量的软件是必要的。但我们要认为资深工程师是从哪里来的呢?就像资深医生或资深律师一样,他们都是从初级人员开始的。他们的能力必须通过经验来获得。
如果我们构建一个没有初级软件工程师的工作环境,我们就在削弱这个职业所需人才管道。而不是有一个从学术研究到该领域的才能漏斗,年轻人没有真正的方法达到最需要经验水平。
结论
我很感激有读者与我一同参与这次讨论,因为思考我们普遍采用的技术不仅仅是从我们个人的角度出发,还要从更广阔的视角来看待是非常重要的。我们在软件工程领域如何运用 LLM 技术将对职业的未来以及其形态产生重大影响——我敢说,这在许多其他领域也是如此,在这些领域中,整合 LLMs 正变得流行。我并不是在主张在编码中完全不使用 LLM——如果你有经验和技能充分利用它,它可以非常有用。(关于它可能对我们技能水平的影响以及我们技能的维护,有许多重要的对话要谈,但这将是另一天的不同话题。)
但在任何职业中,资深从业者并不是突然出现的——他们是经过培养的,这个过程需要付出努力和时间,可能不是最直接“高效”的事情去做。在当下的效率并不是最重要的事情——如果我们希望未来光明,它就不能是最重要的。
我将在 2025 年 7 月参加两个活动,包括一个名为“生产中的代理”的免费虚拟会议www.stephaniekirmer.com/speaking/mlops_agents_2025/——如果您感兴趣,请注册!
在www.stephaniekirmer.com阅读我的更多作品。
进一步阅读
[AI 夺走了我的工作:技术工作者
TikTok、Google 以及整个行业的技术工作者分享关于 AI 如何改变、破坏或取代…www.bloodinthemachine.com](https://www.bloodinthemachine.com/p/how-ai-is-killing-jobs-in-the-tech-f39)
[10 位专业开发者对 vibe 编码的真正承诺和风险
Vibe 编码是软件的未来,还是伪装成安全噩梦的噩梦?这是经验丰富的开发者们的看法…www.zdnet.com](https://www.zdnet.com/article/10-professional-developers-on-vibe-codings-true-promise-and-peril/)
[Frontiers | 学习编码的认知益处的证据
请参阅提交的文件。www.frontiersin.org
世界尽头的网络开发者,来自冰岛的 Hveragerðiwww.baldurbjarnason.com](https://www.baldurbjarnason.com/2025/trusting-your-own-judgement-on-ai/)
Jones, Capers. 2014. 软件工程的技术与社会史。
[Layoffs.fyi — 技术裁员追踪器和 DOGE 裁员追踪器]
直播] 自 COVID-19 被宣布为大流行以来,跟踪所有技术初创公司的裁员情况——以及被裁员的员工名单…layoffs.fyi](https://layoffs.fyi/)

浙公网安备 33010602011771号