初级开发者的陷阱

AI 消除了阻力。而阻力正是课程本身。

初级开发者的陷阱
AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo

你正在做 code review。那个 pull request 看起来不错,结构清晰,变量命名合理,通过了所有 lint check。但某个代码块引起了你的注意,于是你留言让写这段代码的初级开发者解释一下逻辑。

回复比你预期的要慢了几分钟。

然后:"我得再仔细看看。"

那是他们昨天写的。

这不是一个关于差劲开发者的故事。也不是关于懒惰、粗心或不够努力的故事。这是一个关于陷阱的故事,而这个陷阱最显著的特征是:身处其中的人完全意识不到它的存在。

我写代码已经二十五年了。我见证过很多开发者开启职业生涯,也见证了最初几年究竟能塑造什么、或是什么也塑造不了。见鬼,我自己刚起步时也亲身经历过这些。我们都一样。初级开发者的陷阱并不新鲜。但 AI 让它几乎变得隐形,而这改变了一切。

1、最初几年究竟是为了什么

早期职业生涯有一种版本看起来像是产出。你写代码。你关闭工单。你发布功能。这个版本是真实的。是你的经理看到的,是让你获得晋升的,是出现在简历上的。

但还有另一个版本在底层运行,它不会出现在任何地方。它是心智模型的缓慢积累。一张关于系统实际如何运作的地图,通过一次又一次痛苦的偏差逐步建立。一个你三天都无法解析的错误信息,最终打破了你对于编译器如何工作的理解。一个本不该出现的 null pointer exception,直到你理解了它为何会出现。一次失败的部署,因为你没有理解代码所说的和环境所做的之间的区别。

那张地图不是任何学术意义上的知识。你无法通过学习获得它。无法被告知它。它建立在你足够长时间地停留在困惑中,直到自己解决。从你沿着错误的路径追踪 bug,然后不得不爬出来。从你反复犯下的错误中,那种特定的质感,让你开始能在看到 stack trace 之前就识别出形状。

这才是最初三到五年的真正意义。不是产出。是塑造。

产出是你正在干活的证明。困惑才是课程。

2、AI 消除了什么

AI 消除了阻力。这是它的卖点,从某种角度来说,也确实如此。错误信息得到解释。模式被自动填充。"我不知道怎么做"和"这是能用的代码"之间的差距被压缩了。对于已经拥有心智模型的开发者,这是杠杆。对于仍在形成心智模型的开发者,这是陷阱。

当工具解释了错误信息,你就没有建立起阅读错误信息的能力。当它填充了模式,你就没有建立起为何是这个模式而不是另一个的直觉。当它在困惑和可用代码之间填补了空白,而你还来不及坐在困惑中时,你得到了产出,却没有得到塑造。而塑造一旦错过,就不会重来。

这里的关键区别在于,自从我写这个系列的开篇以来就一直在思考:AI 并没有让初级开发者萎缩。萎缩意味着你先有了肌肉,然后失去了它。初级开发者不是在萎缩。他们根本没有形成。这不是同一个问题。

一个过度依赖 AI 的高级开发者会开始失去多年来建立的判断敏锐度。这可以通过纪律和意识来恢复。一个用 AI 跳过一到四年痛苦塑造期的初级开发者,没有可以恢复的判断力,他们有的是一个缺口,一个判断力本该发展的地方,被能用的代码覆盖着,直到它不能用了。

3、从外部看是什么样子

我开头描述的 code review 场景是最明显的版本。但不是唯一的。

有那种事故处理电话会议,一个已经发布生产代码十八个月的初级开发者在系统出现意外行为时僵住了。不是因为恐慌,而是因为他们没有导航未知故障的地图。他们关闭了数百个工单。他们从未需要手工追踪某个故障,因为工具总是在他们不得不自己找到之前就把他们指向了正确的方向。

有那种架构讨论,一个写了三年代码的开发者无法解释为什么做了某个特定的结构选择,除了"感觉对了"。这在第一年没问题,但到了第三年应该已经进化成更深的东西。产生可辩护架构决策的判断力,建立在他们被允许跳过的同样困惑之上。

有那种看起来完美无瑕、在每个可衡量的意义上都正确的代码。一个高级开发者读到它,就会知道(这种认知只能来自看过几千个 PR)这是由理解了什么而不是为什么的人写的。你无法把它写进 lint 规则。你无法在 review comment 中指出而不显得居高临下。但你能看出来。

从外部看,陷阱是可见的。从内部看,一切看起来都很好。

4、斯多葛的视角

斯多葛学派有一种叫做 askesis(苦行/自我训练)的实践:自愿的不适Bronze不适,选择的困难,当更艰难的道路能建立真正的东西时,刻意拒绝走更容易的路。Seneca 通过定期像穷人一样生活来实践它。Epictetus 教导说,选择的能力只有通过抵抗才能强化,而不是通过回避。

这不是为了受苦而受苦。斯多葛的论点是精确的:有些东西只能通过摩擦来建立。不是偶然的,而是构成性的。困惑不是通往能力之路上的减速带。困惑,诚实地面对并足够长时间地停留其中以解决,就是能力形成的方式。

用 AI 来跳过困惑的早期职业开发者不是在提高效率。他们被剥夺了产生他们整个职业生涯都需要的心智模型的确切条件。

每次你在真正尝试理解错误信息告诉了你什么之前就求助于工具,你都在做一个不利于自身塑造的小选择。这些选择单独来看是不可见的。

它们会累积。

留在困惑中的开发者做了某种产生了一种非常具体且不可转移的知识的事情。他们阅读 stack trace,追踪线索,建立理论,测试,错了,然后调整。不是关于错误的知识。是关于他们如何思考错误的知识。几年后,当那个缺失的 null check 拯救了一次生产部署时,应用的正是这个。

5、这不是反对使用 AI 的论点

我用 AI。我诚实地写过它擅长什么、掩盖了什么。问题不在工具。

问题在于,在还没有任何东西可以杠杆化之前就使用一个为杠杆化设计的工具。问题在于,初级开发者的第一反应在不懂某事时是去询问 AI,而不是在不懂中坐足够长时间,找到自己的出路。

对于早期职业生涯,确实存在一种合适的 AI 辅助开发版本:在你挣扎过某个概念之后用它来帮助理解,而不是代替挣扎。让它解释你已经尝试过的解决方案,而不是生成你还没尝试构建的解决方案。把它当作你思考的检验,而不是思考的替代品。

这需要工具无法安装的东西:当更容易的路就在眼前时选择更艰难道路的纪律。在困惑中停留足够长时间以从中学习的意愿。长远的理解,即这些年正在形成的东西比正在发布的东西更重要。

6、我想让初级开发者考虑什么

不是要不要用 AI,那是错误的问题,任何这样框定问题的人都在推销什么。

问题是:当你困惑时,你如何处理困惑?

因为这才是会累积的决定。你是在里面坐足够长时间来建立地图,还是在地图形成之前就把它交出去?你是学习导航这个系统,还是学习让别的东西为你导航?

三十年后,你不会记得你关闭的工单。你不会记得产出。

你会拥有判断力,或者不会。

陷阱是安静的。它缓慢地闭合。而当你看到它时,你已经在里面待了好几年。


原文链接: The Junior Developer's Trap

汇智网翻译整理,转载请标明出处