你有没有过这样的感觉:学了一个东西好几个月,每天都在学,但感觉自己一点进步都没有?
我经历过。有一段时间我学函数式编程,花了很多时间看 Haskell 教程、读《Learn You a Haskell》、做练习。前面几周感觉进步很快——从完全不懂,到能看懂简单的函数签名,再到能写一些简单的递归函数。但到了某个点之后,我突然觉得自己再也没有进步了。每次打开代码,看到的还是那些看起来差不多的模式,写出来的代码还是那个水平。
我当时很焦虑,觉得自己是不是"到了天花板"。
后来我才明白:学习曲线不是曲线,是台阶。而那时的我,正好站在台阶的平面上。
学习的真实形状
我们从小被教育:学习是一个持续进步的过程,今天学一点,明天学一点,积累起来就是一条平滑向上的曲线。但这是错的。真实的学习曲线看起来更像是一组楼梯——一段陡峭的上升期,接着一段平坦的平台期,再接着一段陡峭的上升期,如此反复。
上升期是你"突飞猛进"的阶段:你学会了一个新概念,理解了一个新框架,掌握了一个新技能,你能明显感觉到自己的变化。这种感觉很爽,会给你多巴胺奖励。
平台期呢?你感觉什么都没发生。你每天都在学,但好像学的东西都没"见效"。你开始怀疑自己:是不是方法不对?是不是这个领域不适合我?是不是我已经到顶了?
但如果你回到台阶的比喻上,你会发现:平台期不是停滞,是积累。你站在台阶的平面上,看起来没有上升,但你在做的是——巩固已有的知识、重组你脑子里的信息结构、等待下一个突破点的到来。没有平台期的积累,就不可能进入下一个陡峭的上升期。
为什么平台期是必要的
我后来用了一个更具体的比喻来理解这件事:学习就像搭积木。你的知识体系是一堆积木,上升期是你把积木搭起来——你看到了高度,觉得很有成就感。但到了某个高度,你发现"地基不稳了"——新学的概念和旧的知识之间产生了矛盾,你不知道怎么把它们整合起来。
这时候你进入了平台期。你看起来没在搭积木,但你在做更重要的事:
- 巩固——把已有的积木压紧压实,让它们更稳固
- 重组——把一些积木拆下来,换个位置放,发现更好的结构
- 等待——在等某一块关键的积木出现,它可能是另一个领域的知识,也可能是一个你之前没想通的盲点
一旦你完成了这些看不见的工作,下一个上升期就会自然到来。而且你会发现,上一个平台期越长,下一个上升期越陡、越持久。
我学函数式编程的经历就是如此。那个平台期持续了大概三周。我每天做练习、读代码,但感觉毫无进展。直到有一天,我突然理解了 Monad 的概念——不是"我知道 Monad 的定义",而是"我真的理解了它为什么存在"。
从那天开始,后续的学习速度快了不只一倍。之前那些读不懂的代码突然能看懂了,之前想不通的设计模式突然有了感觉。回头看,那三周的平台期不是在浪费时间——它是在为我搭建理解 Monad 所需要的基础设施。
如何判断:是"真停滞"还是"台阶前"
这就引出了一个问题:你怎么知道自己是在台阶上还是真的到了天花板?
我的判断标准只有一条:你还在学吗?
如果你还在学习(哪怕没有明显的进步感),那大概率是"台阶前"。你输入的信息正在被你大脑的后台进程处理,虽然你看不到进度条,但处理确实在进行。
如果你已经停止了学习——不再看书、不再练习、不再思考——那才是真正的停滞。但这不是"天花板",这是"你没在爬了"。
换句话说:平台期并不可怕,可怕的是你在平台期放弃了。大多数人的"天花板",其实是过早放弃的借口。
我的心态调整方法
明白了这个道理之后,我建立了一套应对平台期的心态策略:
量化"输入",而不是"进步"
在平台期,你感觉不到进步,但如果只盯着"输入"——我今天读了多少页、写了多少代码、做了多少道题——你就会发现,进步感虽然消失了,但学习行为没有停止。而只要学习行为没有停止,进步迟早会发生。
换一个视角看同一个东西
如果你在一个方向上卡住了,不要死磕。换一个学习资源,换一个作者,换一个角度。同一个概念,A 作者用代数的方式讲,B 作者用视觉的方式讲,C 作者用代码实例讲。总有一个角度能让你"豁然开朗"。
记录平台期的"小胜利"
即使你觉得没有进步,也一定有一些小的里程碑。比如:"今天我可以看懂别人写的代码里的 Monad 用法了"——虽然我自己还不会写,但"能看懂"本身就是一个进步。把所有这种小胜利记下来,一个月后回头看,你会发现自己其实走了很远。
学习不是一条平滑的曲线,而是一段段台阶。你在平台上感觉自己在原地踏步,但从更高的视角看,你正在为下一次跳跃积蓄力量。下次当你觉得"学不动了"的时候,告诉自己:这不是尽头,这只是一个台阶的平面。继续走,台阶就在前面。
想想你最近在学的东西——是不是正处于一个平台期?如果是,恭喜你,下个突破期快到了。