翻译自:https://human-in-the-loop.bearblog.dev/llms-are-eroding-my-software-engineering-career-and-i-dont-know-what-to-do/
今年是我从事软件工程的第十年。十年来,我花了大量时间积累金融支付领域的专业知识:PCI合规、双复式记账、第三方支付、资金托管、对账流程、银行转账幂等性——这些知识让我成为这个细分领域的专家,也让我在竞争激烈的市场中建立了自己的差异化优势。
然而过去一年,这些积累正在以我始料未及的速度贬值。
2024年,我加入了一家金融科技公司。这家公司全面拥抱AI,从入职第一天起就给我配备了ChatGPT和Claude Enterprise账号,鼓励我将其用于研究、探索和编码工作——当然,同时要求我对所有进入生产环境的代码负责。
我的第一个项目是重构一套陈旧的在线支付系统。公司之所以雇佣我,很大程度上是因为我之前的支付系统开发经验。我写的架构设计文档要求能让工程师和产品经理同时读懂,需要避免过于技术化的深挖,更多呈现架构层面的视角。我带着最少的人工智能辅助完成了第一份文档——当时我甚至把LLM称为"随机鹦鹉",这个观点我后来不再持有了。
然后我的经理找到我:你交付代码的速度不错,但设计文档花的时间太长了。你在用AI吗?应该多用AI。
我内心想着"这怎么行",但还是同意了。那时候的模型还没有现在这么强,但它们确实在我的写作甚至决策过程中提供了显著的加速。然后我开始意识到:我多年积累的所有知识——不同实现方案之间的权衡、支付系统如何运作、如何构造幂等性以防止重复扣款——所有这些,都在变得无用。即使模型仍然需要一些引导,它们已经能够串联起如何构建这类系统的所有要点,而这正是最难的部分——只有经过多年实践才能在脑海中形成的东西。
这是我的第一次冲击。
但我安慰自己:模型之所以能做到这些,是因为网上有大量关于这些系统运作原理的文章,以及所有解释如何将技术工具应用于该领域的技术文档。人类可能需要很长时间才能学会所有这些,但那只是训练数据,模型可以吸收。
模型永远做不好的事情——那就是调试!我积累了大量在生产环境中调试竞态条件和分布式系统的经验。这才是我长期就业的通行证。
这是我的第二根支柱。
然后MCP、Agent工作流和Claude 4.5出现了,天开始塌下来。
Claude 4.5说实话并没有那么强。它解决了约60%的bug——给定一个堆栈跟踪和一些上下文,大多数情况下一个Sentry链接加上Sentry MCP就足够了。有时候它给出的解决方案听起来合理但完全是错的。
但这一次,我停止了对机器的怀疑。我看到过去需要整整一天全职调试的bug,被Claude Code一击解决。当然,不是所有bug都能这样——但模式已经很清楚了。
然后4.6、4.7、GPT 5.5、Opus 4.8和Datadog MCP相继问世。现在我有了可以一击解决跨分布式系统bug的CLI工具,包括那些我过去无法解决的bug、那些需要两天全职调试的bug、那些缺乏分布式可观测性的跨系统bug。现在90%的bug都被一击解决,包括奇怪的竞态条件、意想不到的边界情况、第三方集成问题、文档未记录的API边缘情况——一切。我几乎不需要干预。
当然,我仍然在职,因为需要有人审查代码和引导AI。但我现在只是一个"现成工程师"了。我的领域专业知识,没有任何一项是另一个引导LLM的高级工程师无法匹配的。我所有的金融支付领域专业知识、所有那些通过汗水和泪水换来的调试直觉和分布式系统知识,现在都变成了可以"提示工程化"的东西。
我们一直被教导通才和专才总会有自己的位置。但现在市场正在把每个人都塑造成通才。这本身并不是坏事——直到你从供需经济学角度看:如果每个人都是通才,而需求没有相应增长,通才的价格就会下降。我们都知道,需求正在枯竭。
现在我的最后一根支柱还在:代码质量和软件架构——现在被简称为"品味"。
在整个职业生涯中,我始终喜欢重构、始终珍视好的代码,在冲刺阶段为它争取时间。DDD、六边形架构、整洁架构——你知道所有的流行词。我喜欢这个话题,喜欢讨论权衡和不同的代码库塑造想法。我真的很喜欢。
这是最后一根站立的支柱。只是,没有人在乎了。
Agent在保持代码库整洁方面做得非常糟糕。如果你不引导它们,它们会比你想的更早地遇到循环依赖问题。它们会复制代码。添加不必要的注释。混淆纯函数和副作用。忽视SOLID原则。
这应该能让人类保持就业,只是这个技能现在被简化为"品味"这个词。但这不仅仅是重命名——行业正在走向一个代码组织不再那么重要的世界。
当然,人类应该引导Agent防止意大利面代码库和循环依赖图。我们不想要F级的代码库——无法触碰而不破坏任何东西的东西。但C级或D级?现在可以了。没有人再需要A级或B级的代码库了,因为它们现在是给LLM写的,不是给人类读的。
我不想争论这本身是好是坏。如果源代码现在是为机器而不是为人类写的,可能实际上是可以接受的。
但这是我最后一根专业知识的支柱也在侵蚀。一个我在那个话题上积累的大量知识不再那么有价值了。所有我花在那上面的时间——读书、做真实世界的练习、与其他工程师讨论、写架构决策记录——正在变得无用。
我仍然有工作,我可以看到自己在可预见的未来(至少在那家公司)仍然有就业。但我不知道如何看待长期。
我花了10年时间(加上非职业经验甚至更久)擅长的事情正在变得越来越没有价值。我的最后一根专业知识的支柱现在被简化为"品味",可能不会持续太久。
我知道不只是我。大约8个月前,我现在的公司有一次裁员(他们说与AI无关)。一些出色的前同事被裁了,现在还在找工作。他们中的大多数人都患有我在这里概述的同样的问题:他们的领域专业知识已经不足以脱颖而出。
公司现在正在为几个职位招聘,领域熟悉度不再是强有力的差异化因素。我们过去常标注"软件工程师-某领域"。现在只是"软件工程师",团队分配是在offer接受之后才进行的。
当然,这对那些从来没有机会深入某个领域的杰出工程师来说是好事,他们现在有更好的机会找到工作。但想到那些花了一辈子积累领域知识的人现在却在同一条赛道上竞争,还是令人伤感的。
保持长期就业能力的唯一出路似乎是将我的领域专业知识转向LLM不容易快速掌握的东西。但还剩下什么呢?
我想过回学校,学数学、统计学、进阶机器学习,然后申请前沿实验室的研究职位。除非在我所在的国家没有前沿实验室,少数存在的那些正在被申请淹没,而且我有家庭事务使得移居另一个国家变得困难。等我有能力做出那个跳跃的时候,RSI可能已经让研究人员过时了。
也许我应该考虑把我的木工爱好变成一种职业...