返回博客

费曼学习法为什么对技术人特别有效

费曼学习法的核心不是"教别人",而是"发现自己不懂"。

费曼学习法可能是被引用最多、也被误解最多的学习方法论。

大多数人对它的理解停留在"把学到的知识教给别人"——找个假想的学生,用大白话解释一遍,如果卡住了就回去复习。听起来很合理,对吧?但问题是,很多技术人试过之后发现没什么用,然后就放弃了。

问题出在哪?他们把费曼学习法当成了输出法,但它本质上是一个检测法。

费曼学习法的真正内核

理查德·费曼本人说过一句著名的话:"我不能把它简化到大学新生的水平,说明我还没有真正理解它。"这句话被广泛传播,但大家往往只记住了"简化",忽略了更关键的信息——费曼在说"我不能"的时候,是在进行自我诊断

费曼学习法的核心动作不是"教",而是"检测"。当你试图向一个外行解释某个概念时,你做的不是知识输出——你在做知识漏洞扫描。那些你讲着讲着就含糊其辞的地方,那些你发现自己回避跳过的细节,那些你下意识想说"这个不重要我们先跳过"的部分——每一个都是你知识体系中的裂缝。

技术人最容易犯的错误,就是把费曼法当成"我要把 Redis 讲给产品经理听"。如果你的目标是让产品经理听懂 Redis,你会做的是找类比、简化术语、省略细节。但费曼法的目标不是让别人听懂,而是让你自己发现哪里不懂

两个技术场景,两种用法

场景一:理解设计模式

几年前我想系统性地理解设计模式。我读过《Design Patterns》,看过无数博客,但每次用的时候还是要去查——"观察者模式到底是哪个来着?"

后来我换了一种做法:我选了一个模式,比如策略模式,然后不查任何资料,在白板上用纯文字画出来。不是画 UML 图,而是模拟一个具体的代码场景,用口语化的方式写出"这个接口在做什么"、"这个上下文在做什么"、"这个具体策略在做什么"。

写到一半我就发现,我对"策略模式 vs 状态模式"的区别其实是模糊的。脑子里觉得清楚,但一旦落到纸面上,两者的边界就模糊了。这就是费曼法在起作用——不是我在教别人,是纸面在检测我

然后我回到书本,专门去看这两个模式的区别。再看一遍,再写一遍。这次能写清楚了。而且从那以后,我再也没搞混过这两个模式。

场景二:搞懂分布式协议

Raft 共识协议,相信很多后端工程师都"学过"——看了论文,看了动画,看了博客,觉得自己理解了。但如果你被问到:"Raft 的 leader 选举中,如果两个 candidate 同时发起投票且都收到了刚好半数的票,会发生什么?"

你能不查资料直接回答吗?

我当初不能。我意识到,我对 Raft 的理解停留在"知道存在这么一个东西"的层面,但离"理解"还差得远。于是我做了一个练习:用一张纸,纯文字,写出 Raft 从集群启动到选出 leader 的完整流程,包括所有可能的分支情况

这个练习花了我整整一个下午。过程中我反复卡住、反复回去查论文、反复修改我的描述。但当我最终完成那张纸的时候,我对 Raft 的理解深度和之前完全不在一个量级上。因为那张纸逼我面对了所有我之前回避的细节——那些"反正不重要"的 corner case,恰恰是理解一个协议的关键。

技术人的费曼法实操步骤

如果你也想试试,这是我总结的四步流程:

第一步:选一个你不能"秒答"的概念

不要选你已经很熟的东西,那是在表演,不是在检测。选一个你说"我大概知道"但没法自信地完整解释的概念。对技术人来说,候选列表包括:HTTPS 握手过程、数据库索引原理、微服务中的分布式事务、浏览器渲染流程、Kubernetes 调度机制。

第二步:用纸和笔,不要用电脑

这是关键。打字太快了,快到你可以用模糊的语言蒙混过关。手写强迫你慢下来,强迫你思考每一个用词。当你不得不用手写出"这个函数做了什么"的时候,你会发现那些你原本想用"就是做了一些处理"混过去的地方,现在必须具体化。

第三步:刻意制造"极端情况"

不要只解释正常流程。主动问自己:"如果这一步失败了会怎样?""如果同时有两个请求进来呢?""如果数据量扩大一千倍呢?"这些问题会帮你发现那些你之前根本没想过要去理解的边界。

第四步:记录你的"卡住点",而不是你的答案

费曼练习中最重要的产出不是那张写得密密麻麻的纸,而是你在哪些地方卡住了。把这些卡住点记录下来,它们就是你接下来要深入学习的方向。一个卡住点就是一个学习路标,十个卡住点就是一份精确到个人的学习计划。

费曼学习法不是让你"假装在教别人",而是让你"诚实面对自己"。技术人最不缺的就是输入——文档、论文、教程、源码。最缺的是一面镜子,让你看到自己知识体系中的裂缝。而费曼法,就是那面镜子。

下次你觉得自己"懂了"的时候,找一张白纸,关掉所有参考资料,用最朴素的语言写出来。你可能会尴尬地发现,你真正懂的,比你想象的要少得多。但这也意味着——你接下来要学的东西,比你想象的清楚得多。