Learning notes · Reflection
我最近开始重新理解“学习”这件事
关于上下文、主动输出、问题管理、实验与时间结构的一次学习方法复盘。
· 约 8 分钟阅读
在最近的学习过程中,我逐渐发现,真正拖慢我的往往不是某一个知识点有多难,而是学习过程本身存在一些问题。
比如任务中断之后忘记自己做到哪里,输入很多却很少主动输出,问题越问越多,一个小问题耗掉半天,或者花大量时间理解理论,却迟迟没有真正动手。
针对这些问题,我尝试让 AI 结合我的实际情况帮我寻找解决办法。最后整理下来,我发现很多问题其实都有非常具体的应对方式。
1. 中断之后,上下文丢失
这其实可以分成两种情况。
第一种是忘记当前任务进行到了哪里。
比如隔了一天重新打开项目时,我已经不记得昨天改了什么、接下来应该做什么,于是只能重新阅读代码、聊天记录和文档,无形中做了很多重复劳动。
解决方法很简单:每次停手之前,留下三行记录:
- 我刚才在做什么?
- 下一步要做什么?
- 目前卡在哪里?
这样下一次回来时,不需要重新构建整个上下文,只需要沿着这三行继续往下走。
第二种则是记得做了什么,却忘记了为什么要这么做。
比如我可能记得 Node.js 需要监听一个端口,却已经说不清为什么一定要监听端口。
这种情况就不是任务管理的问题,而是说明这个知识点其实还没有真正掌握。
前一种需要靠记录解决,后一种则需要重新理解。
这两件事看起来很像,但本质完全不同。
2. 输入太多,输出太少
以前学习时,我经常会产生一种错觉:
只要我把答案看懂了,我就已经会了。
但“看懂”其实只是识别,而不是掌握。
真正检验自己是否理解的方法,是在看完解释之后,把答案关掉,然后尝试自己重新构造整个过程。
如果能够脱离原答案,用自己的语言解释出来,甚至能够自己重新做一遍,才说明这个知识开始真正变成自己的东西。
如果做不到,也没关系。
恰恰是在重新构造失败的时候,我才能知道自己究竟卡在哪里,然后针对性地补漏。
所以现在我更希望自己的学习过程变成:
输入 → 关闭答案 → 自己重构 → 暴露漏洞 → 补漏。
而不是不断:
输入 → 输入 → 输入 → 输入。
3. 问题太多
我还有一个很明显的问题:
看到一个不理解的地方,就很想立刻把它彻底弄清楚。
但一个问题经常会引出另外三个问题,三个问题又继续引出更多问题。最后主线还没有推进多少,时间已经全部消耗在旁枝末节上。
后来我意识到,并不是所有问题都必须当场解决。
如果一个问题不会影响当前任务继续向前推进,完全可以先只记录一行:
这个地方为什么是这样?
然后继续沿着主线往下走。
等到主线完成之后,再统一回来处理这些问题。
因为学习过程中产生疑问是非常自然的,真正需要控制的并不是“不要产生问题”,而是:
不要让每一个问题都拥有打断主线的权力。
忍不住追问是人性,先记下来再继续走,才是方法。
4. 一个问题耗掉半天
我以前很容易掉进另外一个陷阱:
觉得只要再想一会儿,也许马上就能想通。
于是一个问题可能从十分钟变成半个小时,又从半个小时变成两个小时。
最后整个下午都耗在一个局部问题上。
现在我给自己定了一个简单的规则:
如果十五分钟没有任何实质性进展,就强制换路。
所谓换路,可以是:
- 换一种问法;
- 做一个更小的实验;
- 暂时绕过这个问题;
- 去查文档;
- 或者直接找一个更懂的人。
这并不是放弃思考,而是在避免把“坚持”误认为“用同一种方式重复尝试”。
真正重要的是推进问题,而不是证明自己可以靠一种方法死磕到底。
5. 理论理解得太多,实验做得太少
这是我最近感受最深的一点。
以前我很容易把学习过程想象成:
理解 → 理解 → 理解 → 理解透彻 → 开始实践。
但实际做项目之后,我发现真正有效的学习循环更像是:
理解 → 实验 → 发现直觉错误 → 修正理解 → 再实验。
很多东西,如果不真正动手,只在脑子里想象它应该如何运行,看起来往往都非常合理。
因为在想象里,我们会自动忽略大量细节。
只有真正开始操作以后,现实才会不断暴露那些被我们遗漏的部分。
于是你会遇到:
“为什么实际情况和我想的不一样?”
而我现在反而觉得,这可能正是学习中最有价值的时刻。
因为学习很重要的一部分,就是不断校准自己的直觉。
我们的大脑会根据已有经验建立一个关于世界如何运转的模型。当现实结果与这个模型一致时,我们几乎不会意识到模型本身的存在。
真正能够改变模型的,恰恰是那些:
“我原本以为会这样,但实际上却不是这样。”
的瞬间。
这时候,比起因为自己之前理解错了而感到挫败,更值得做的是继续追问:
究竟是哪一个前提错了?
是什么导致我的直觉和真实情况产生偏差?
为什么现实一定要以这种方式运行?
然后修改自己脑子里的模型,再重新实验。
如此往复。
我现在越来越觉得,所谓“真正理解一个东西”,可能并不是第一次就建立一个完全正确的模型,而是不断让自己的模型经过现实检验,然后一点一点逼近真实世界。
除了学习方法本身,我还意识到一件很现实的事情:
学习需要时间结构。
如果要开始一个新的实验或者项目,我现在更倾向于给它留出一块相对完整的时间。
因为很多技术任务都存在一个“进入上下文”的成本。
你需要重新记起文件在哪里、代码运行到了哪里、现在的问题是什么、之前为什么这么设计。
如果每二十分钟就被中断一次,就意味着你需要反复支付这笔成本。
所以条件允许的时候,我更希望一次留下几个小时,把一个阶段完整地推进下去,而不是不断进入、退出、再重新进入。
当然,中断不可能完全避免。
所以前面提到的“三行记录”,本质上就是在降低重新进入上下文的成本。
最后还有一个我最近越来越相信的原则:
不要因为刚上手时很困难,就过早判断自己不适合这件事。
很多事情第一次接触时都会显得异常复杂。
陌生的术语、工具、文件、错误信息和操作方式同时出现,大脑里又没有完整的结构,于是每一步都像是在黑暗中摸索。
但这种感觉并不一定意味着这件事情真的有那么难。
很多时候,它只是意味着:
你的脑子里还没有形成足够多的连接。
真正花几个小时做下去之后,原本彼此孤立的东西会开始连接起来。
你突然知道这个命令为什么存在,那个文件为什么放在那里,这段代码究竟在解决什么问题,之前看起来毫无关系的几个概念也开始形成一条完整的链路。
那些一开始像谜一样的东西,会一个一个被解开。
所以我现在更愿意提醒自己:
不要在最陌生的时候,对一件事的难度下结论。
先真正做一段时间。
再评价它。