上周调一个线上 bug。一个 gRPC 服务在高负载下偶发 deadline exceeded,但 CPU 和内存都没打满。我盯着 Grafana 看了二十分钟,突然注意到 GC 停顿和 P99 延迟的相关性——然后脑子里自动跳出来一个画面:GC STW 刚好卡在 RPC 的关键路径上,上游 300ms 超时被吃掉了大半。
从”看到 GC 停顿曲线”到”形成因果假设”,大约 3 秒。我没有”思考”,是直觉。
这个直觉是怎么来的?AI 能不能复制它?
要回答这两个问题,需要先搞清楚一个前置问题:程序员的大脑在做什么认知操作?这不是哲学问题。认知心理学对此有精确的模型,有可复现的实验数据。搞清楚这个,才能判断 AI 在替代什么、不在替代什么。
一、两种认知系统
Daniel Kahneman 的 System 1 / System 2 理论:
System 1(快,自动,无意识):模式匹配。你看到一段代码,0.3 秒内知道”这是一个观察者模式”或”这里有一个 off-by-one”。不需要思考,直觉级反应。
System 2(慢,费力,有意识):符号推理。你在推导一个并发算法的正确性证明,或者在白板上画一个复杂的状态机转换图。需要工作记忆,很累,一天做不了太多。
编程同时使用两个系统。而且随着经验增长,比例会变化。
二、专家和新手的认知差异
de Groot (1946) 的国际象棋实验是认知心理学的经典:给棋手看一个真实的棋局 5 秒,然后让他们复盘。大师能复盘 90%+ 的棋子位置,新手只能复盘 25%。
但如果棋子是随机摆放的(不是真实棋局),大师和新手的表现一样差。
结论:大师不是记忆力好——他们是把棋局”分块”(chunking) 了。一个棋型不是 20 个独立的棋子,而是 5-6 个有意义的”块”:一个西西里防御开局、一个王翼攻击阵型、一个中心兵链。
后来的研究者把类似的实验搬到了编程领域。Adelson (1981) 发现同样的规律:专家程序员在看真实代码时能记住更多行,但看随机打乱的代码行时和新手一样。Soloway & Ehrlich (1984) 进一步证实:专家的优势来自识别”编程计划”(programming plans)——循环累加、哨兵检查、边界处理——这些固定搭配被压缩成了单个认知单元。
编程专家的核心能力是 chunking:把代码模式压缩成高层概念。
一个新手看到:
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]);他看到两个嵌套循环、一个比较、一个交换。四个操作。
一个专家看到:选择排序。一个概念。
这个压缩不是偷懒——它释放了工作记忆。人的工作记忆容量大约是 4-7 个 chunk (Miller, 1956)。新手的 4 个 chunk 被循环和比较占满了,没有空间思考”这个排序在这里是否合适”。专家用一个 chunk 就搞定了排序,剩下 3-6 个 chunk 去思考更高层的问题。
三、AI 在替代 System 1
ChatGPT 和 Copilot 做的事情,本质上是 System 1 的外包。
| 能力 | System 1 (模式匹配) | System 2 (符号推理) |
|---|---|---|
| 识别设计模式 | AI 擅长 | N/A |
| 生成 boilerplate 代码 | AI 擅长 | N/A |
| 解释一段代码的功能 | AI 擅长 | N/A |
| 查找 API 用法 | AI 擅长 | N/A |
| 证明并发算法正确性 | AI 不行 | 人类慢但能做 |
| 设计系统架构 | AI 给出常见方案 | 需要人类判断约束 |
| 调试竞态条件 | AI 几乎无能 | 需要系统化推理 |
| 判断”这个优化值不值得” | AI 不行 | 需要工程判断 |
AI 的训练过程本质上就是在建造一个超大规模的 System 1——它见过海量的代码模式,能在 0.1 秒内匹配并生成。但它没有 System 2。它不能做多步推理、不能维护全局不变量、不能在矛盾的约束之间做权衡。
四、Chunking 的层次
编程专家的 chunking 不是一层的:
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: 工程判断 (这个系统应该做什么, 不应该做什么)
AI 在 Level 0-2 非常强。Level 3 有时对有时错。Level 4-5 基本不行。
这意味着什么?如果你的日常工作主要在 Level 0-2(写 CRUD、实现已知算法、搬运 API 调用),AI 确实在替代你的核心价值。
如果你的工作在 Level 3-5(设计系统、做工程权衡、调试复杂 bug),AI 是你的加速器而不是替代者。它帮你更快地完成 Level 0-2 的实现,让你有更多时间花在 Level 3-5 上。
五、被忽视的三个认知陷阱
上面讲的是”AI 替代了什么”。下面讲三个更隐蔽的问题——AI 辅助编程对你大脑的副作用。
心流破坏。 Csikszentmihalyi 的心流理论说:心流状态需要”挑战和技能的平衡”。编程是少数能让人进入深度心流的职业——但 AI 自动补全每 15 秒打断你一次。你从”我在创造”变成了”我在审批”。审批不产生心流。长期下来,你可能更高效了,但更不享受了。
生成效应衰退。 认知科学的铁律:自己生成的信息比被动接收的记得更牢(Slamecka & Graf, 1978)。你自己写的代码,debug 三次才跑通的代码,会刻进长期记忆。AI 写+你审,看起来一样的知识转移,但记忆编码的深度完全不同。就像运动员不让机器替自己训练——你的大脑需要”自己犯错”来成长。
自动化偏见。 Mosier & Skitka (1996) 在航空领域发现的规律:人对自动化系统的信任度,会在使用初期快速上升,即使系统有错。程序员版本:你用 Copilot 三个月后,会不自觉地降低对 AI 输出的审查力度——我们审计 50 段 AI 系统代码时发现的很多 bug,恰恰是”看起来对”所以没人细看的那种。
反直觉结论:越高效使用 AI 的人,越需要定期”无 AI 编程时间”。 不是因为 AI 不好——是因为你的大脑需要主动练习来维持 chunking 能力和审查直觉。
六、刻意练习的方向变了
Ericsson 的刻意练习理论说:专家能力来自数千小时的有目的练习。程序员的传统刻意练习是什么?写代码、读代码、debug、code review。
AI 改变了练习的性价比:
| 活动 | AI 前的价值 | AI 后的价值 |
|---|---|---|
| 写 boilerplate 代码 | 中 (练手感) | 低 (AI 秒生成) |
| 实现已知算法 | 中 | 低 |
| 读源码理解系统设计 | 高 | 更高 (AI 加速但不能替代) |
| 跑 benchmark 做对比 | 高 | 更高 (AI 不能替你跑实验) |
| 调试并发 bug | 高 | 更高 (AI 完全不行) |
| 设计 trade-off 分析 | 最高 | 最高 |
结论:练习的重心应该从”怎么写”转向”怎么判断”。 不是不需要写代码了——你仍然需要足够的 Level 0-2 能力来验证 AI 的输出。但差异化的价值在 Level 3-5。
回到开头那个 GC 停顿的例子。AI 能帮我在 3 秒内写出修复代码吗?能。AI 能在 3 秒内从一张 Grafana 图上形成”GC STW 卡了 RPC 关键路径”这个假设吗?不能。前者是 Level 1 的模式匹配,后者是 Level 4 的系统直觉——来自几百次类似故障的 chunking 积累。
AI 加速了你的手。但你的判断力,只能自己练。
下一篇讲这个认知变化怎么影响程序员的职业定位。
延伸阅读:
- 让 LLM 帮你写系统代码:哪些能信,哪些会死 – AI 在各个 level 的具体表现
- 技术博客在 AI 时代还有意义吗 – 写作是 Level 4-5 练习的最佳方式之一
参考资料:
- Kahneman, D. (2011). Thinking, Fast and Slow. Farrar, Straus and Giroux.
- de Groot, A.D. (1946/1978). Thought and Choice in Chess. Mouton.
- Adelson, B. (1981). Problem solving and the development of abstract categories in programming languages. Memory & Cognition.
- Soloway, E. & Ehrlich, K. (1984). Empirical studies of programming knowledge. IEEE TSE.
- Ericsson, K.A. et al. (2006). The Cambridge Handbook of Expertise and Expert Performance. Cambridge.
- Miller, G.A. (1956). The Magical Number Seven, Plus or Minus Two. Psychological Review.
- Csikszentmihalyi, M. (1990). Flow: The Psychology of Optimal Experience. Harper & Row.
- Slamecka, N.J. & Graf, P. (1978). The Generation Effect. Journal of Experimental Psychology.
- Mosier, K.L. & Skitka, L.J. (1996). Human Decision Makers and Automated Decision Aids. In Automation and Human Performance.
数据和引用截至 2025-02。