关于 AI 编程,有一种几乎人人都会说的担忧:它会让程序员变懒、变依赖、变退化。
这个判断听起来正确,但它抓错了病根。
变懒,是一个行为描述——它假设程序员”本来能做,只是不愿意做了”。顺着这个诊断开出的药方也都很轻:克制一点、少用一点、多自己想想,就好了。
但过去两三年真正发生的事,比这复杂得多,也阴险得多。一个用了三年 AI 的程序员,往往不是”变懒了”——他可能比从前更忙、产出更多、PR 更频繁。他失去的不是工作的意愿,而是一种更底层的东西:在卡住的时候,自己挣扎着把问题想通的能力。
这不是退化,这是发育的中断。
两者的差别是致命的:懒是选择,靠意志力可以克服;发育中断是结构性的,你甚至意识不到自己缺了什么。一个懒人知道自己在偷懒,一个发育被打断的人,会真诚地以为自己一直在成长——因为他每天都在”学到新东西”。
这篇文章想讲的就是这件事:AI 真正切走的,不是程序员的勤奋,而是程序员”成熟”所必需的一条回路——受挫回路。而这条回路,恰恰无法被任何工具替代,只能从痛苦中长出来。
一、先校正一个坐标:”懒”是个误导性的诊断
要讲清楚受挫回路,得先把”懒”这个诊断从脑子里清掉。
“AI 让人变懒”这个说法,隐含了一个模型:人本来有某种能力,AI 把它接手了,于是这个能力像闲置的肌肉一样萎缩。在这个模型里,解药很简单——别让 AI 接手,能力就保住了。
但如果你认真观察一个深度使用 AI 的程序员,会发现一个反常现象:他并没有真的”闲下来”。他依然在写代码、调接口、改 bug、读报错。从行为上看,他做的每一件事都和以前一样,甚至做得更快。如果只是”懒”,他应该清闲才对。
真正发生的变化,藏在更细的颗粒度里。它发生在每一次”卡住”的瞬间。
一个程序员在工作中会反复进入同一个状态:我遇到了一个问题,我暂时不知道答案。过去,这个状态之后跟着的是一段长短不定的挣扎期——翻文档、加日志、读堆栈、写最小复现、在脑子里反复推演、走神、回来再试、试错、再走神、突然想通。这段挣扎期有时几分钟,有时几天,痛苦且低效,但它是不可跳过的。因为正是这段挣扎,把”信息”锻造成了”能力”。
AI 做的事情,不是替你完成了挣扎之后的工作,而是在挣扎刚开始的那一刻,就把答案递了过来。
这听起来像是好事——谁不愿意少痛苦一点?但问题在于:那个痛苦不是工作的副作用,那个痛苦就是学习本身。把它拿走,你拿走的不是痛苦,是学习。
所以”懒”是个错误的诊断。程序员并没有停止工作,他们只是不再挣扎。而挣扎,恰恰是能力生长的唯一土壤。
二、什么是受挫回路,为什么它是认知发育的必需品
把上面那段直觉,拆成一个更清楚的概念:受挫回路。
一个完整的受挫回路,长这样:
- 卡住:遇到一个超出当前能力的问题,产生真实的困惑和不适。
- 挣扎:在信息不全、方向不明的情况下,自己尝试、推演、失败、再尝试。
- 顿悟:在某个瞬间,原本散乱的信息突然连成一条因果链,”啊,原来是这样”。
- 内化:这条因果链被刻进直觉,下一次遇到类似问题,你能几乎不假思索地锁定方向。
这四个环节缺一不可,而且第三步的顿悟,只能由挣扎来换。你没办法跳过挣扎直接到达顿悟,就像你没办法跳过咀嚼直接尝到味道。
这一点有认知科学上的根据,但不需要引用一堆论文也能讲明白:人脑对”自己推导出来的结论”和”别人告诉自己的结论”,处理方式根本不同。前者会被编织进你已有的知识网络,成为可迁移的直觉;后者只是被登记成一条孤立的记忆条目,下次需要时你得重新检索,而且检索不到的时候,你毫无办法。
这就是为什么一个背过整个《算法导论》的人,未必能做出一道中等难度的题;而一个在 leetcode 上痛苦刷过两百道的人,看到新题会自动归类。差别不在信息量,在有没有经过挣扎这道锻造工序。
程序员的成熟,几乎全部建立在这条回路的反复运转上:
- 调试能力,是在无数次”为什么这里会炸”的挣扎中,慢慢长出对系统行为的因果直觉。
- 架构能力,是在无数次”为什么这里改不动”的挣扎中,慢慢长出对耦合和边界的敏感。
- 排错直觉,是在无数次”这个报错到底在说什么”的挣扎中,慢慢长出从现象直达根因的嗅觉。
这些能力没有一门课能教,没有一本书能给,没有一个 AI 能”传输”。它们只能从受挫回路里,一个一个长出来。
而 AI,正在系统性地短路这条回路。
三、AI 切断回路的方式,比想象中更精确
如果说 AI 只是”降低了学习门槛”,那它最多让一部分人不那么痛苦,不至于造成发育中断。但 AI 切断受挫回路的方式,要精确得多,也危险得多。
它的精确性体现在一个细节上:它不是在回路的某个环节帮忙,而是在”卡住”和”顿悟”之间,插入了一个”答案”。
注意这个插入点的位置。它没有替你完成”卡住”(你依然会遇到问题,依然会困惑),也没有替你完成”内化”(你依然会觉得自己学到了东西)。它只切掉了中间的”挣扎”那一段。
这造成了一个极其迷惑的假象:整个回路看起来还在运转。你遇到问题了(卡住),你问了 AI,AI 给你解释了,你点头说”懂了”(顿悟感),你记下来了(内化感)。从主观体验上,你和过去一样在”学习”,甚至学得更快、更全、更没有遗漏。
但这是一个没有锻造的学习。挣扎那段被抽走之后,”顿悟”不再是你大脑里神经回路重新连接的产物,而变成了一种被喂食的认同感——你认同了 AI 给出的因果链,但你没有自己构建过它。
这里有一个关键区分,值得反复咀嚼:理解一个答案,和拥有得出那个答案的能力,是两件完全不同的事。
理解答案,只需要你的语义加工能力——AI 说”这个 bug 是因为异步回调里使用了已释放的对象”,你听懂了,你能复述,你甚至能解释给别人听。但这不意味着下一次遇到类似的 bug,你能自己想到这个方向。因为”想到这个方向”依赖的,是你在过去无数次类似挣扎中积累的、对”什么情况下会出这种问题”的模式直觉。而这种直觉,AI 没法给你,因为它正是挣扎的产物。
更阴险的是,AI 给出的答案越清晰、越完整、越有说服力,这种”虚假的顿悟感”就越强。一个含糊的答案还会逼你再去想;一个完美的答案会让你彻底放弃自己去想。而今天的 AI,给出的答案正越来越完美。
四、最危险的部分:你感觉不到自己退化了
如果一个人在变懒,他至少会有愧疚感——”我今天又全靠 AI 了,这样不行”。愧疚是个警报,它意味着人意识到问题的存在。
但受挫回路被切断的人,感觉不到任何警报。因为他的每一次交互都很顺畅,每一次都”学到了东西”,每一次都觉得自己在进步。
顺畅,本身就是症状。
这是一个反直觉的判断,但值得记住:一个永远顺畅的学习过程,几乎不可能在塑造能力。因为能力的塑造,生理上依赖于”认知冲突 + 自行解决”这个循环对神经回路的反复重写。没有冲突,就没有重写;没有重写,就没有成长。顺畅只意味着——你在消费信息,不在生长能力。
这里可以给出一个相当可靠的自检判据,请你诚实地对照自己过去半年的状态:
当你解决了一个技术问题之后,你有多久没有产生过那种真正的、带着生理性释然的”啊,原来是这样”的顿悟时刻了?
不是”AI 解释完我觉得有道理”的那种点头,而是你自己琢磨了很久、绕了几次弯路、最后某个瞬间一切贯通的那种”通了”的感觉。那种感觉对应的,就是受挫回路完整运转后、神经回路被重写那一刻的生理反馈。
如果这个时刻越来越少,甚至想不起来上一次是什么时候,那不是因为你”已经什么都懂了”(没有人会),而是因为你的受挫回路已经被切断了。你以为你在持续学习,其实你只是在持续获取信息。两者外表相似,内核完全不同。
这就解释了一个行业里正在浮现、却很少被准确命名的人群画像:看似全能、实则空心的程序员。他们什么都能聊,什么框架都”用过”,什么问题都能迅速给出 AI 风格的回答,但你让他独立定位一个没有现成答案的复杂问题,他会立刻露出马脚——不是因为他笨,而是因为他从来没练过这个,他练的一直是”提问和整合答案”。
而行业最核心的、最难外包的能力,恰恰是”在没有答案的地方自己造出答案”。这恰恰是受挫回路唯一能长出来的东西。
五、回路的丧失,会塌陷出几道具体的能力裂缝
把上面的逻辑落到更可观察的层面,受挫回路的丧失会沿着几条清晰的路径,塌陷出具体的能力缺口。你可以拿这些裂缝去对照身边的同事,或者对照自己。
第一道裂缝:只会描述现象,不会定位根因。
完整的受挫回路,会训练出一种”从现象逆向追溯到根因”的因果直觉。一个经过足够多挣扎的程序员,看到一个报错,脑子里会自动冒出几个候选方向,然后有条理地排除。这是直觉,不是流程——它是无数次挣扎沉淀下来的模式匹配。
失去回路的人,面对同一个报错,能精确地复述现象(甚至比老手复述得更全,因为他会直接把 AI 的总结搬过来),但下一步是空的。他不知道该怀疑谁,不知道该从哪里切入,他能做的只有”再去问 AI”。而 AI 在没有完整上下文的时候,给出的往往是泛泛的方向,于是他再问、再得到泛泛的方向,循环往复。他卡住的地方,不是信息不足,而是没有自己产生假设的能力。
第二道裂缝:在证据不全时,不敢做判断。
成熟的程序员有一个标志:他能在信息不完整、时间紧迫、对错未明的情况下,做出一个”目前最合理”的判断,并准备好在证据反转时推翻自己。这个能力同样来自受挫回路——因为你挣扎过太多次”以为对了其实错了”,你才学会了对自己的判断既敢用、又敢改。
失去回路的人,会发展出一种判断瘫痪。他总要等到 AI 给出足够完整、足够有把握的信息才敢动手。一旦 AI 也含糊,他就停在那里不动。他不是谨慎,他是没有自己下注的经验。一个从来没在不确定中独自下过注的人,是不敢下注的。
第三道裂缝:默认接受,失去怀疑的本能。
挣扎会训练出一种对抗性的直觉:任何结论,不管来自谁,先在心里过一遍”真的吗”。这种怀疑不是态度,是习惯,是无数次”我以为对了结果错了”的挣扎刻出来的反射。
失去回路的人,会对 AI 的输出有一种近乎天然的信任。不是因为他傻,而是因为他没有形成对抗性反射的土壤。AI 说得越流畅,他越没有理由怀疑。而一旦他习惯性地不怀疑,他不仅会接受 AI 的错误,更可怕的是,他会逐渐丧失对自己直觉的信任。每当自己的判断和 AI 不一致,他默认自己是错的。一个不再信任自己直觉的程序员,已经失去了独立工程能力的心脏。
第四道裂缝:无法从失败中提取模式。
受挫回路的最后一个环节是内化。内化的本质,是从”这次怎么解决的”提炼出”这类问题长什么样”。这个提炼只能自己做,而且只能在挣扎之后做。因为只有自己走过一遍的路,才能看出哪一段是本质、哪一段是噪音。
AI 帮你解决了问题之后,你拿到的是一个已经收敛的结论,而不是一个可以反复回溯的过程。结论没法被提炼成模式,只有过程可以。于是失去回路的人,解决了一百个 bug,却积累不出一个模式。下一次遇到相似的,他还是得从头问 AI。他经历了很多,但他什么也没沉淀。
六、压力测试:这个判断是不是太悲观了?
讲到这儿,一个理性的读者应该会反驳。我也认为必须把这些反驳摆出来正面回应,否则这个立意就只是危言耸听。
反驳一:历史上每次工具进步,都被说成”让人退化”。计算器没有消灭数学能力,Google 没有消灭记忆力,AI 凭什么特殊?
这是一个很强的反驳,但它建立在一个错误的类比上。计算器替代的,是机械计算。一串人脑本就不擅长、也不该花算力去做的算术步骤。它替你做的是你本不需要挣扎的部分。Google 替代的是事实检索。记住某个 API 名、某个函数签名,这本来也不是认知发育的核心。
但 AI 替代的是什么?是挣扎本身。是那个从”不知道”到”知道”之间,必须由你自己走过的那段路。计算器和 Google 是在回路外部帮忙,AI 是在回路内部动手。前者是外骨骼,后者是替你咀嚼。这是一个本质区别,不是程度区别。
反驳二:强者会自己保留挣扎,弱者本来也学不会,所以影响只在中层,不必夸大。
这个反驳看似冷静,其实回避了真正的问题。受挫回路被切断的,恰恰不是最顶端的人(他们有大量存量挣扎打底),也不是最底端的人(他们本来就要从基础挣扎起),而是最庞大的中间层——那些正在从新手走向成熟、最需要回路运转的人。
而软件行业,恰恰是靠中间层运转的。顶端的人定方向,底端的人做执行,中间层负责把方向落地成可运行的系统、把模糊的需求变成清晰的实现。一个行业的工程能力,基本等于它中间层的能力中位数。如果中位数在塌陷,顶端再强也补不回来。因为落地的是中间层,出 bug 的也是中间层。
所以这不是”一部分人受影响”的问题,是行业能力中位数系统性下移的问题。
反驳三:AI 也能制造新的受挫回路,比如让程序员接触到更难的问题,反而提升了上限。
这个反驳对顶端 5% 的人成立。他们确实用 AI 跳过了低级挣扎,进入更高级的挣扎,回路还在运转,只是上移了。
但对剩下 95% 的人,这个机制不成立。因为 AI 切断回路的方式不是”让你去做更难的事”,而是”让你连当前的难都不用面对”。一个连当前难都还没练熟的人,不会被”提升到更难的层次”,他只会被”永久安置在当前难度的舒适区”。AI 给他的是答案的平移,不是难度的提升。这两件事外表相似,方向相反。
把三个反驳都接住之后,这个立意反而更稳了:它不是全面悲观,而是精确悲观。它不否认 AI 对顶端的增益,但它指出,AI 对中间层的回路切断是结构性的、不可逆的、且难以察觉的。而这恰恰是最被低估的风险。
七、那么怎么办:不是反 AI,而是重新设计受挫的配比
讲到这里,如果只停留在”AI 有害”的结论上,那这篇文章就白写了。因为你不可能、也不应该不用 AI。问题从来不是”用不用”,而是”怎么用,才不至于把回路切断”。
真正可行的方向,不是抵制 AI,而是有意识地把受挫重新设计回工作流程。下面是几条我自己实践和观察下来有效原则。
原则一:设置”无 AI 区间”,先挣扎,再求助。
每一个你遇到的问题,强制自己先独立挣扎一段固定时间——15 分钟、30 分钟,视问题难度而定。在这段时间里,不许问 AI,只能自己读代码、加日志、查文档、推演。
这不是为了”证明你能行”,而是为了让回路的前半段真正运转。哪怕最后还是去问了 AI,你带着自己挣扎过的痕迹去问,和直接问,得到答案后的内化深度完全不同。前者是把答案焊到你已经搭了一半的脚手架上,后者是把答案放在一张白纸上——前者能长出能力,后者只会被遗忘。
原则二:把”答案”降级为”提示”。
问 AI 的时候,改变提问的方式。不要问”这个 bug 怎么修”,而问”这个 bug 最可能的三个方向是什么”。不要问”这段代码怎么写”,而问”这种需求通常有哪几种实现思路,各自取舍是什么”。
你要的是方向、取舍、反例,而不是结论。结论 AI 给了你也用不上——因为你没有自己走过那条路,结论焊不上去。方向是可以焊上去的,因为它正好接在你挣扎的终点上,让你自己走完最后一段。让 AI 当向导,不要让它当搬运工。
原则三:追求”复现式学习”,每个 AI 给的答案,必须自己能从零推演一遍。
AI 给你一个修复,你不要直接用。先问自己:如果我不知道这个答案,我会怎么推导出来?然后真的去推一遍。推不出来,就回去问 AI “你是怎么想到这个方向的”,而不是”答案是什么”。
这一步是把”被喂食的认同”强行转回”自行构建的顿悟”。它很慢,很笨,但它能让回路重新闭合。一个你自己重新推演过的答案,会成为你的直觉;一个你直接拿过来用的答案,永远只是别人的直觉借住在你脑子里。
原则四:守住卡顿的痛苦,那是你在长能力的信号。
这一条最反直觉,也最重要。当你卡住、烦躁、想立刻问 AI 的时候,停一下,识别这个感觉——这个不适,正是你的回路在运转的生理表现。如果你每次都立刻消除它,你就在每次都掐断自己的成长。
这不是受虐,这是对”顺畅”的警惕。一个永远不卡顿的程序员,几乎可以肯定没有在成长。成长必然伴随卡顿,就像肌肉生长必然伴随酸痛。把卡顿当信号去珍惜,而不是当障碍去消除。这是 AI 时代程序员最该建立的新直觉。
原则五:团队层面,给新人留”该踩的坑”。
如果你带团队,尤其是带新人,克制住”用 AI 把所有路铺平”的冲动。有些坑,是必须让新人自己踩的;有些挣扎,是你不该替他省去的。
一个被 AI 全程护航的新人,会在三个月内看起来很能干,然后在遇到第一个 AI 解决不了的问题时彻底崩溃——因为他没有属于自己的任何回路可用。而一个被允许适度挣扎、被允许适度失败的新人,会慢一些,但他长出来的是自己的能力。
短期的效率,和长期的能力,在 AI 时代第一次出现了明显的冲突。而绝大多数团队,都在用前者透支后者。
八、结论:被偷走的,恰恰是最不能给的东西
回到开头那个问题:AI 让程序员变懒了吗?
没有。程序员没有变懒,他们甚至更忙了。他们失去的不是勤奋,是成熟所必需的一条回路。这条回路叫受挫回路,它由”卡住-挣扎-顿悟-内化”四个环节组成,任何一个环节被代劳,整条回路就断了。而 AI 恰好切在了最要命的位置,它保留了卡住和内化的假象,只抽走了中间的挣扎。
于是出现了一代程序员:他们每天都在”学习”,却很少在成长;他们什么都知道一点,却什么都不能独立打通;他们看起来比任何一代前辈都全能,却在遇到真正复杂的问题时,比任何一代前辈都更无助。
这不是他们的错。这是工具设计和使用方式共同造成的一个结构性陷阱,它让”变强”这件事变得太舒服了,而真正的变强,从来都不舒服。
受挫回路是程序员成熟的脐带。AI 可以帮你做很多事,但它不能替你走那条从不知道到知道的路。那一段路,只能你自己走,而且必须走得有点痛。剪断这条脐带,你得到的不会是一个更高效的程序员,而是一个永远不会真正成熟的程序员——一个看起来什么都会、实际上什么都不能独自打通的人。
所以,如果你是一个正在用 AI 的程序员,最重要的能力,可能不是学会怎么更好地用 AI,而是学会什么时候不用它。
给自己留一点卡顿。那是你还在长的证据。

发表回复