你的大脑正在发生什么:AI 时代程序员的认知心理学

上周调一个线上 bug。一个 gRPC 服务在高负载下偶发 deadline exceeded,但 CPU 和内存都没打满。我盯着 Grafana 看了二十分钟,突然注意到 GC 停顿和 P99 延迟的相关性------然后脑子里自动跳出来一个画面:GC STW 刚好卡在 RPC 的关键路径上,上游 300ms 超时被吃掉了大半。

从"看到 GC 停顿曲线"到"形成因果假设",大约 3 秒。我没有"思考",是直觉。

当然,公平地说:我的直觉也经常是错的。上上周类似的场景,我"直觉"认为是 GC 问题,花了两小时后才发现是下游网络抖动。System 1 的模式匹配是一把双刃剑------快速命中和快速犯错往往来自同一个机制。但即便如此,这个过程仍然值得分析。

这个直觉是怎么来的?AI 能不能复制它?

要回答这两个问题,需要先搞清楚一个前置问题:程序员的大脑在做什么认知操作?认知心理学对此有一些有用的模型。搞清楚这些模型的解释力和局限,才能更诚实地分析 AI 在替代什么、不在替代什么。

真正要说的是,这篇文章的核心与其说是"人类有 System 2 所以能保住饭碗",不如说是:"程序员经验的本质是把低层操作压缩成高层概念(chunk),而 AI 正在以极快的速度吞噬底层 chunk 的模式匹配工作"。

一、两种认知系统(一个有用但不完美的模型)

Daniel Kahneman 的 System 1 / System 2 理论:

System 1(快,自动,无意识):模式匹配。你看到一段代码,0.3 秒内知道"这是一个观察者模式"或"这里有一个 off-by-one"。不需要思考,直觉级反应。

System 2(慢,费力,有意识):符号推理。你在推导一个并发算法的正确性证明,或者在白板上画一个复杂的状态机转换图。需要工作记忆,很累,一天做不了太多。

这个二分法是一个简化模型------Melnikoff & Bargh (2018) 论证过其逻辑不一致性,Kruglanski & Gigerenzer (2011) 认为认知更像连续光谱。实际编程中直觉和推理交替进行、互相校正。但作为区分"自动化认知"和"费力认知"的粗粒度框架,它仍然够用。下面的分析建立在这个框架上。

编程同时使用两个系统。而且随着经验增长,比例会变化。

二、专家和新手的认知差异

de Groot (1946) 的国际象棋实验是认知心理学的经典:给棋手看一个真实的棋局 5 秒,然后让他们复盘。大师能复盘 90%+ 的棋子位置,新手只能复盘 25%。

但如果棋子是随机摆放的(不是真实棋局),大师和新手的表现一样差。

结论:大师不是记忆力好------他们是把棋局"分块"(chunking) 了。一个棋型不是 20 个独立的棋子,而是 5-6 个有意义的"块":一个西西里防御开局、一个王翼攻击阵型、一个中心兵链。

后来的研究者把类似的实验搬到了编程领域。Adelson (1981) 发现同样的规律:专家程序员在看真实代码时能记住更多行,但看随机打乱的代码行时和新手一样。Soloway & Ehrlich (1984) 进一步证实:专家的优势来自识别"编程计划"(programming plans)------循环累加、哨兵检查、边界处理------这些固定搭配被压缩成了单个认知单元。

这些实验测量的是短期记忆复盘,不是完整工程能力------从"记住更多代码行"到"设计好系统"之间有巨大跳跃。但 chunking 作为认知机制仍然有解释力,它至少说明了一点:

编程专家的一种重要能力是 chunking:把代码模式压缩成高层概念,从而释放工作记忆用于更高层思考。

一个新手看到:

c 复制代码
for (int i = 0; i < n; i++)
  for (int j = i + 1; j < n; j++)
  if (arr[j] < arr[i]) swap(&arr[i], &arr[j]);

他看到两个嵌套循环、一个比较、一个交换。四个操作。

一个专家看到:选择排序。一个概念。

这个压缩不是偷懒------它释放了工作记忆。人的短期工作记忆容量极其有限(Miller 曾提出著名的 <math xmlns="http://www.w3.org/1998/Math/MathML"> 7 ± 2 7 \pm 2 </math>7±2,后续研究如 Cowan 则修正为大约 4 个组块)。新手的认知空间被循环和比较占满了,没有余力思考"这个排序在这里是否合适"。专家用一个 chunk 就搞定了模式识别,从而释放出认知资源去思考更高层的问题。

三、AI 在替代什么?

用 System 1/2 的框架来看,ChatGPT 和 Copilot 最擅长的,是 System 1 类型的任务------模式匹配和模板生成。

任务 主要依赖的认知 AI 当前表现 当前限制
识别设计模式 / 生成样板代码 System 1 (模式匹配) 极强,取代手动编写 只能输出见过的高频模式
解释单段代码 / 查 API System 1 (模式匹配) 强,极大超越传统搜索 缺乏跨代码库的隐性上下文
证明并发算法正确性 混合 (推理链) 正在突破 (如 AlphaProof) 极易在开放域工程问题中漏掉前置假设
设计系统架构 System 2 (权衡与约束) 能给出标准模板架构 无法根据业务非功能约束做妥协
调试偶发竞态条件 System 2 (跨层因果推导) 较弱,倾向胡乱猜测 无法跨越多模块组件建立因果网络
评估"这个优化值不值得" System 2 (工程常识) 极弱 缺乏商业逻辑和团队运维能力的上下文

但"AI 只有 System 1 没有 System 2"这个说法需要大幅修正。它在 2023 年初或许还勉强成立,但 AI 的推理能力正在快速提升:AlphaProof (2024) 在 IMO 数学竞赛级别的定理证明中达到了银牌水平------这是纯粹的多步符号推理;现代 LLM 的 chain-of-thought 推理链已经能处理相当复杂的逻辑;AI 辅助的形式化验证工具(如 Lean 4 + LLM)已经可以在一定程度上维护全局不变量。

更准确的说法可能是:AI 的推理能力是真实存在但脆弱的------它在结构化良好的问题上表现越来越强,但在开放性的、需要大量隐性上下文的工程判断上仍然薄弱。这个边界在快速移动,今天画的线明天可能就过时了。

四、Chunking 的层次

编程专家的 chunking 不是一层的。下面是一个粗略的启发式分层------不是严格的科学分类法,各层边界模糊,不同人可能画出不同数量的层:

php 复制代码
Level 0: 语法 (if, for, function)
Level 1: 惯用模式 (iterator, guard clause, RAII)
Level 2: 数据结构 (hash map, B-tree, ring buffer)
Level 3: 架构模式 (event loop, actor model, MVCC)
Level 4: 系统设计 (CAP 权衡, 一致性模型, 故障域)
Level 5: 工程判断 (这个系统应该做什么, 不应该做什么)

截至 2025 年初的观察(这会过时):AI 在 Level 0-2 非常强。Level 3 越来越可靠但仍需人类校验。Level 4-5 是 AI 最薄弱的环节------但"最薄弱"不等于"永远不行"。

这个分层的价值不在于精确,而在于提供一个思考框架:你的日常工作主要在哪个层级?

如果主要在 Level 0-2(写 CRUD、实现已知算法、搬运 API 调用),AI 对你的替代压力是真实的。

如果主要在 Level 3-5(设计系统、做工程权衡、调试复杂 bug),AI 目前更像是加速器。但不要把"目前"当成"永远"------AI 在每个层级上的能力都在上移,速度可能比你预期的快。

五、被忽视的三个认知陷阱

上面讲的是"AI 替代了什么"。下面讲三个更隐蔽的问题------AI 辅助编程对你大脑的副作用。

心流改变。 Csikszentmihalyi 的心流理论说:心流状态需要"挑战和技能的平衡"。AI 自动补全改变了编程的挑战/技能比------部分创造性工作变成了审查工作。但这不一定是"破坏":资深 code reviewer 同样可以进入高度专注的审查状态,审查本身也可以有心流。更准确的说法是:AI 改变了心流的触发条件和体验形态,你可能需要主动调整工作方式(比如在需要深度思考时关掉自动补全)来维持心流。

生成效应影响。 认知科学发现自己生成的信息比被动接收的记得更牢(Slamecka & Graf, 1978)。AI 写代码+你审查,和你自己写+debug 三次,记忆编码的深度大概率不同。这个效应对学习阶段的新手尤其重要------对已经掌握基本能力的资深工程师,影响可能没那么大。

自动化偏见。 Mosier & Skitka (1996) 在航空领域发现的规律:人对自动化系统的信任度,会在使用初期快速上升,即使系统有错。程序员版本:你用 Copilot 三个月后,会不自觉地降低对 AI 输出的审查力度。

应对方式: 解决这些问题的正确方向不是"倒退回纯手动编程",而是更好的人机协作设计:建立审查 AI 输出的 checklist 和流程,在学习阶段有意识地多自己写,在关键路径上提高审查标准。航空业解决自动化偏见靠的不是让飞行员关掉自动驾驶"练手感",而是 CRM(Crew Resource Management)训练和更好的人机交互设计。

六、刻意练习的方向变了

Ericsson 的刻意练习理论说:专家能力来自数千小时的有目的练习。程序员的传统刻意练习是什么?写代码、读代码、debug、code review。

AI 改变了练习的性价比:

活动 AI 前的价值 AI 后的价值
写 boilerplate 代码 中 (练手感) 低 (AI 秒生成)
实现已知算法
读源码理解系统设计 更高 (AI 加速但不能替代)
跑 benchmark 做对比 更高 (AI 不能替你跑实验)
调试并发 bug 更高 (AI 目前较弱但在进步)
设计 trade-off 分析 最高 最高

结论:练习的重心应该从"怎么写"转向"怎么判断"。 不是不需要写代码了------你仍然需要足够的基础能力来验证 AI 的输出。但差异化的价值在更高层。

回到开头那个 GC 停顿的例子。AI 能帮我在 3 秒内给出候选修复代码吗?能提供选项,但它未必能直接命中当前系统真实的非功能约束。AI 能在 3 秒内从一张 Grafana 图上形成"GC STW 卡了 RPC 关键路径"这个假设吗?目前不能------但多模态模型对时序图的理解能力在快速提升。这个例子说明的不是"人类不可替代",而是"人类目前在某些认知维度上仍有优势"。

诚实的结论是:我们不知道 AI 能力的天花板在哪里。 2022 年没有人预测到 2024 年 AI 就能做 IMO 银牌级别的数学推理。把"人类判断力不可替代"当作确定性结论,可能正是我们自己版本的自动化偏见------只不过偏见的方向相反:对人类能力的过度信任。

AI 正在加速你的手。你的判断力目前仍然重要------练它。但同时也要准备好:这个"目前"的窗口可能比你预期的短。

下一篇讲这个认知变化怎么影响程序员的职业定位。


参考资料:

  1. Kahneman, D. (2011). Thinking, Fast and Slow. Farrar, Straus and Giroux.
  2. de Groot, A.D. (1946/1978). Thought and Choice in Chess. Mouton.
  3. Adelson, B. (1981). Problem solving and the development of abstract categories in programming languages. Memory & Cognition.
  4. Soloway, E. & Ehrlich, K. (1984). Empirical studies of programming knowledge. IEEE TSE.
  5. Ericsson, K.A. et al. (2006). The Cambridge Handbook of Expertise and Expert Performance. Cambridge.
  6. Miller, G.A. (1956). The Magical Number Seven, Plus or Minus Two. Psychological Review.
  7. Csikszentmihalyi, M. (1990). Flow: The Psychology of Optimal Experience. Harper & Row.
  8. Slamecka, N.J. & Graf, P. (1978). The Generation Effect. Journal of Experimental Psychology.
  9. Mosier, K.L. & Skitka, L.J. (1996). Human Decision Makers and Automated Decision Aids. In Automation and Human Performance.
  10. Melnikoff, D.E. & Bargh, J.A. (2018). The Mythical Number Two. Trends in Cognitive Sciences.
  11. Kruglanski, A.W. & Gigerenzer, G. (2011). Intuitive and deliberate judgments are based on common principles. Psychological Review.

数据和引用截至 2026-02。AI 能力评估可能很快过时。

相关推荐
SimonKing2 小时前
每天白送4000万Token!这款“龙虾”AI神器,微信就能操控电脑
java·后端·程序员
KaneLogger13 小时前
从传统笔记到 LLM 驱动的结构化 Wiki
人工智能·程序员·架构
修己xj14 小时前
368天,每天头顶一件东西:这件“无聊”的小事,让我想通了一个道理
程序员
无限大616 小时前
数字生存05:在AI时代,如何保持学习能力,不断成长
程序员
无限大617 小时前
职场逻辑05:5步高效管理时间,让你的工作事半功倍
程序员
无限大617 小时前
AI实战05:设计岗专属工作流|用AI打造爆款设计
程序员
Mac的实验室17 小时前
(2026年最新)解决谷歌账号注册设备扫码短信发送失败无法验证难题(100%通过无需扫码验证)
android·google·程序员
程序员鱼皮19 小时前
AI 时代,满分的程序员简历是怎么样的?附简历模板
ai·程序员·编程·求职·简历
我就是马云飞20 小时前
大专毕业两年,我如何进入大厂,并逆袭八年的技术与认知成长
前端·程序员·全栈