AI 对开发者的影响,比取代更糟糕
几周前,我在审查一个用 Claude Code 组装的 PR。标准的重构,把一个臃肿的服务类拆分成更干净的结构。diff 大概四百行。我扫了一眼。测试通过。我批准了。
两天后,我因为一个不相关的原因回到同一个区域,发现有些不对劲。我"重构"的一个方法悄悄丢失了一个空值检查。不是灾难性的,它守卫的路径并不热门。但它确实消失了。我审查过 diff。测试通过了。我把它发布了。
二十五年写代码的经验,2020 年的我会在十二秒内发现它。
我在这个想法上停留的时间比我愿意承认的要长。不是因为那个 bug。Bug 就是 bug。我停留是因为那个 bug 是怎么通过的。
这才是我想写的东西。不是 bug 本身,而是它通过的方式。
1、错误的担忧
我们行业里现在有一场对话,我认为它偏离了重点。这场对话是关于取代的。AI 会取代开发者吗?什么时候?多少个?你看到的一半头条都是这个问题的某种变体,而头条下的一半评论都是"不,它只是个工具"或者"是的,你完了,去学焊接吧"的某种变体。
我不想在这篇文章上花太多时间争论这个。我用 AI 发布过真实的代码。我工作的领域里,代码是否正确确实很重要。我不认为 AI 会在短期内取代开发者,我也不认为对此洋洋得意有什么意思。
取代的框架声音很大。但它也是错误的担忧。
正确的担忧更安静,而且已经在发生了。它已经发生了几年了,发生在每一个认真采用了这些工具的开发者的日常工作中。只是它没有一个干净的标题。
2、变形
AI 并没有在取代开发者。它在使开发者变形。
我是字面意义上使用这个词的。变形:通过施加压力来改变某物形状的过程,通常当事物本身都没有意识到正在发生。开发者并没有消失。开发者改变了形状。判断力、肌肉记忆、阅读代码并在你能说出原因之前就感觉到有什么不对的能力。这些不会在一次戏剧性的事件中消失。它们在几个月中悄然侵蚀,而此时你被告知你比以往任何时候都更有生产力。
我错过的那个空值检查?那就是变形在说话。这不是知识缺口。我知道什么是空值检查。我写过一万个。失败的不是知道。而是日常的阅读肌肉。那种像侦探一样扫描 diff 并注意到某个应该存在的东西缺失的能力。
那块肌肉是通过缓慢地阅读大量代码、带着切身利益建立的。它也是以同样的方式维护的。而在过去一年多的时间里,我用那种方式阅读的代码变少了。不是零。只是少了。
取代的叙事想知道五年后开发者是否还会存在。我想知道的是会存在什么样的开发者。因为培养优秀开发者的管道正在被改道,而几乎没有人指出这一点。
3、三种形态
变形正在三个地方显现。它们看起来相关。但它们实际上是不同的问题,需要不同的答案。
初级开发者。 开发者职业生涯的前三到五年曾经是一场与机器的缓慢而痛苦的争论。你写的代码不起作用。你读别人的代码看不懂。你在晚上 11 点调试东西,同时质疑自己的职业选择。那种痛苦不是路径中的 bug,它就是路径。它建立了心智模型、直觉、对模糊性的容忍度,这些是将开发者与一个能产出代码的人区分开来的东西。AI 在痛苦正是课程内容的发展阶段消除了痛苦。现在进入这个领域的初级开发者可以通过询问模型来回答几乎任何他们面临的具体问题。这意味着他们可能永远不会在一个问题上停留足够长的时间,让答案教会他们任何东西。他们不是在萎缩。他们只是从未形成。
中级开发者。 五到八年经验的人群所处的境地比人们给他们的评价更糟糕。他们走的是正确的路。他们建立了肌肉。现在他们被告知如果不用 AI 就是慢的,他们的习惯过时了,他们通往高级开发者的谨慎道路实际上是没收到通知的人走的路。他们被困在两种培养模式之间:培养他们的那个正在被公开贬低,而新的那个承诺跳过他们刚刚走完的那段旅程。从内部来看,没有干净的方式处理这种情况。他们要么被贴上抗拒的标签,要么妥协,看着自己花了八年建立的肌肉开始软化。
高级开发者。 这就是开头那段坦白所指的地方。技能不会因为你不再想要它们而萎缩。它们会萎缩是因为日常的重复训练停止了。大量使用 AI 辅助了两年的高级开发者,做了更少的代码细读、更少的从零开始的问题解决、更少了曾经构成他们日常的缓慢而有条理的调试。技能在某种意义上仍然存在。但敏锐度正在以难以从内部感受到的方式下滑,直到有一天你发布了一个缺少空值检查的重构,不得不面对这意味着什么。
三个不同的问题。底下是一个模式。
4、摩擦才是课程
人们所说的"编程的困难部分"大部分是摩擦。查 API。阅读代码库以理解现有模式。在你还不知道在测试什么的时候写测试。与一个 bug 坐得足够久,直到你认识到它属于你职业生涯中还会再遇到一百次的那一类 bug。
摩擦是理解所在的地方。不是比喻。亲手写东西的行为才是建立你正在其中编写的系统的心智模型的东西。缓慢调试的行为才是教会你五年后会再次咬你的错误形状的东西。仔细阅读别人代码的行为才是校准你对好代码和坏代码在眼中感受的东西。
AI 不会让开发者慢下来。这完全是它的目的。但它在曾经用来教学的那些时刻消除了摩擦。
你不会失去你已经学到的东西。你停止往上面添加。如果你不注意,你停止使用的那些部分开始变暗。
这就是变形。仅此而已。不是灾难性的。不是大声的。只是日常的重复训练一个接一个地消失,直到那个会在十二秒内发现问题的你,不再完全在那里了。
5、这是什么
我写这个系列不是为了告诉你停止使用 AI。我用 AI。上季度我用它发布了一个真正的 iOS 应用。我明天还会继续使用它。
我写它是因为产生你尊敬的开发者的那些条件正在改变。那些你会信任凌晨 3 点处理紧急情况的人,那些能读 stack trace 告诉你三个上游服务之前发生了什么的人,那些条件正在改变。把一个迷茫的二十二岁年轻人变成你会雇佣的人的管道正在被悄悄改变。中级开发者的谨慎道路正在被公开贬低。高级开发者的日常肌肉训练正在被外包。而行业中几乎没有人清楚地指出任何这些,因为大部分写 AI 的人要么需要它是未来,要么需要它是时尚。
它两者都不是。它是一个具有真正能力和真正代价的工具,而这个代价不是由工具支付的。
它是由使用它的人支付的。
在接下来三个月里,我打算再写五篇关于这个主题的文章。一篇关于初级开发者正在发生什么,以及为什么培养问题是我最担心的。一篇关于中级开发者的挤压,这是目前最痛苦的处境,也是最少被谈论的。一篇关于高级开发者的萎缩,从二十五年经验的角度撰写:你能失去什么,你承担不起失去什么,以及如何区分。一篇关于如何在不变形的情况下真正使用这些工具,这是似乎没人想写的部分,因为这需要承认工具是有用的并且它们有真正的代价。最后一篇是如果 2026 年一个初级开发者问我未来十年应该把注意力放在哪里,我会告诉他们什么。
我不认为 AI 是开发者的终结。我认为它是一种培养方式的终结,和另一种没有人明确定义的培养方式的开始。
如果你现在是一名开发者,你属于一代将会回头看这个时期并说"我注意到了正在发生什么"或者"我没有,它让我失去了一些我说不上来的东西"的人。
第一步是给它命名。
第二步是弄清楚该怎么做。
原文链接: AI Isn't Replacing Developers. It's Doing Something Worse.
汇智网翻译整理,转载请标明出处