Learning notes · Reflection
I've Recently Begun to Rethink What ‘Learning’ Means
A reflection on context, active recall, question management, experiments, and structuring time.
· 8 min read
In my recent learning, I have gradually realized that what slows me down is often not the difficulty of a particular concept, but problems in the learning process itself.
After an interruption, I forget where I stopped. I consume a great deal but rarely produce anything myself. Questions multiply, one small issue consumes half a day, or I spend hours understanding theory without ever beginning the work.
I asked AI to help me find solutions grounded in my actual situation. Once I organized the results, I found that many of these problems have very concrete responses.
1. Losing context after an interruption
There are really two different situations here.
The first is forgetting where the current task stopped.
When I reopen a project a day later, I may no longer remember what I changed or what should come next. I have to reread code, conversations, and documents, repeating a great deal of work without noticing it.
The solution is simple: before stopping, leave three lines behind:
- What was I just doing?
- What should I do next?
- Where am I currently stuck?
When I return, I no longer need to rebuild the entire context. I can continue from those three lines.
The second situation is remembering what I did, but forgetting why I did it.
I might remember that Node.js needs to listen on a port, yet be unable to explain why a port must be involved.
This is not a task-management problem. It means I have not truly understood the idea.
The first problem needs a record; the second needs renewed understanding. They look similar, but they are fundamentally different.
2. Too much input, too little output
I used to have an illusion while learning:
If I can follow the answer, then I already know it.
But following an explanation is recognition, not mastery.
The real test is to close the answer after reading it and try to reconstruct the whole process on my own.
If I can explain it in my own words—or even reproduce it from scratch—then the knowledge is beginning to become mine.
If I cannot, that is fine too. The failure to reconstruct it reveals exactly where I am stuck, so I can repair the gap deliberately.
Now I want my learning process to look like this:
Input → close the answer → reconstruct it myself → expose the gaps → repair them.
Not an endless cycle of:
Input → input → input → input.
3. Too many questions
I have another obvious tendency: whenever I encounter something I do not understand, I want to resolve it completely, immediately.
But one question often produces three more, and those three lead to others. Before the main task has moved very far, all the time has been consumed by side paths.
I eventually realized that not every question must be answered on the spot.
If a question does not prevent the current task from moving forward, I can record a single line:
Why does this work this way?
Then I keep following the main thread and return to those questions after it is complete.
Questions are a natural part of learning. What needs control is not whether questions appear, but whether every question is allowed to interrupt the main task.
Not every question should have the power to break the thread.
The urge to pursue it is human. Writing it down and continuing is a method.
4. Letting one problem consume half a day
I used to fall easily into another trap: if I thought for just a little longer, perhaps the answer would arrive.
Ten minutes became half an hour, then two hours. An entire afternoon disappeared into one local problem.
Now I use a simple rule:
If fifteen minutes pass without meaningful progress, I must change paths.
Changing paths might mean:
- asking the question differently;
- running a smaller experiment;
- working around the problem for now;
- reading the documentation;
- or asking someone who understands it better.
This is not giving up on thinking. It prevents me from confusing persistence with repeating the same attempt in the same way.
The goal is to move the problem forward, not to prove that I can force my way through it with one method.
5. Too much theory, too few experiments
This is the lesson I have felt most strongly lately.
I once imagined learning as:
Understand → understand → understand → understand completely → begin practicing.
After building real projects, I found that an effective cycle looks more like:
Understand → experiment → discover that my intuition is wrong → revise my understanding → experiment again.
When I only imagine how something should work, everything can seem perfectly reasonable because imagination quietly removes countless details.
Only when I begin operating in reality do the missing pieces reveal themselves.
Then comes the question: “Why is the real result different from what I expected?”
I now think this may be one of the most valuable moments in learning. A major part of learning is continually calibrating intuition.
Our minds build models of how the world works from prior experience. When reality agrees with the model, we barely notice that the model exists.
What changes a model are precisely those moments when:
“I thought it would work this way, but it does not.”
Instead of feeling defeated because my earlier understanding was wrong, I can ask: Which premise was wrong? What made my intuition diverge from reality? Why must reality work this way?
Then I revise the model in my head and run the experiment again.
Over and over.
I increasingly believe that truly understanding something does not mean building a perfect model on the first try. It means testing that model against reality and moving it, little by little, closer to the world as it is.
Beyond learning methods themselves, I have also recognized something practical:
Learning needs a structure of time.
When I begin a new experiment or project, I now prefer to reserve a reasonably complete block of time for it.
Technical work has a cost of entering context. I need to remember where the files are, where the code stopped, what the current problem is, and why earlier decisions were made.
If I am interrupted every twenty minutes, I pay that cost again and again.
When circumstances allow, I would rather leave several hours to move one phase forward completely than repeatedly enter, leave, and re-enter it.
Interruptions cannot be eliminated, of course. The three-line note is ultimately a way to reduce the cost of returning to context.
Finally, there is one principle I believe more strongly each day:
Do not decide too early that something is not for you simply because beginning it is difficult.
Many things look extraordinarily complex on first contact. Unfamiliar terms, tools, files, errors, and procedures appear at once, while the mind has no complete structure for them. Every step feels like searching in the dark.
That feeling does not necessarily mean the thing itself is truly so difficult. Often it means only that your mind has not yet formed enough connections.
After a few hours of real work, isolated pieces begin to connect. You suddenly understand why a command exists, why a file belongs where it does, what a piece of code is solving, and how several unrelated concepts form one chain.
The things that first looked like riddles are solved one by one.
So I now prefer to remind myself:
Do not judge the difficulty of something at the moment when it is most unfamiliar.
Do it for a while first.
Then evaluate it.
在最近的学习过程中,我逐渐发现,真正拖慢我的往往不是某一个知识点有多难,而是学习过程本身存在一些问题。
比如任务中断之后忘记自己做到哪里,输入很多却很少主动输出,问题越问越多,一个小问题耗掉半天,或者花大量时间理解理论,却迟迟没有真正动手。
针对这些问题,我尝试让 AI 结合我的实际情况帮我寻找解决办法。最后整理下来,我发现很多问题其实都有非常具体的应对方式。
1. 中断之后,上下文丢失
这其实可以分成两种情况。
第一种是忘记当前任务进行到了哪里。
比如隔了一天重新打开项目时,我已经不记得昨天改了什么、接下来应该做什么,于是只能重新阅读代码、聊天记录和文档,无形中做了很多重复劳动。
解决方法很简单:每次停手之前,留下三行记录:
- 我刚才在做什么?
- 下一步要做什么?
- 目前卡在哪里?
这样下一次回来时,不需要重新构建整个上下文,只需要沿着这三行继续往下走。
第二种则是记得做了什么,却忘记了为什么要这么做。
比如我可能记得 Node.js 需要监听一个端口,却已经说不清为什么一定要监听端口。
这种情况就不是任务管理的问题,而是说明这个知识点其实还没有真正掌握。
前一种需要靠记录解决,后一种则需要重新理解。
这两件事看起来很像,但本质完全不同。
2. 输入太多,输出太少
以前学习时,我经常会产生一种错觉:
只要我把答案看懂了,我就已经会了。
但“看懂”其实只是识别,而不是掌握。
真正检验自己是否理解的方法,是在看完解释之后,把答案关掉,然后尝试自己重新构造整个过程。
如果能够脱离原答案,用自己的语言解释出来,甚至能够自己重新做一遍,才说明这个知识开始真正变成自己的东西。
如果做不到,也没关系。
恰恰是在重新构造失败的时候,我才能知道自己究竟卡在哪里,然后针对性地补漏。
所以现在我更希望自己的学习过程变成:
输入 → 关闭答案 → 自己重构 → 暴露漏洞 → 补漏。
而不是不断:
输入 → 输入 → 输入 → 输入。
3. 问题太多
我还有一个很明显的问题:
看到一个不理解的地方,就很想立刻把它彻底弄清楚。
但一个问题经常会引出另外三个问题,三个问题又继续引出更多问题。最后主线还没有推进多少,时间已经全部消耗在旁枝末节上。
后来我意识到,并不是所有问题都必须当场解决。
如果一个问题不会影响当前任务继续向前推进,完全可以先只记录一行:
这个地方为什么是这样?
然后继续沿着主线往下走。
等到主线完成之后,再统一回来处理这些问题。
因为学习过程中产生疑问是非常自然的,真正需要控制的并不是“不要产生问题”,而是:
不要让每一个问题都拥有打断主线的权力。
忍不住追问是人性,先记下来再继续走,才是方法。
4. 一个问题耗掉半天
我以前很容易掉进另外一个陷阱:
觉得只要再想一会儿,也许马上就能想通。
于是一个问题可能从十分钟变成半个小时,又从半个小时变成两个小时。
最后整个下午都耗在一个局部问题上。
现在我给自己定了一个简单的规则:
如果十五分钟没有任何实质性进展,就强制换路。
所谓换路,可以是:
- 换一种问法;
- 做一个更小的实验;
- 暂时绕过这个问题;
- 去查文档;
- 或者直接找一个更懂的人。
这并不是放弃思考,而是在避免把“坚持”误认为“用同一种方式重复尝试”。
真正重要的是推进问题,而不是证明自己可以靠一种方法死磕到底。
5. 理论理解得太多,实验做得太少
这是我最近感受最深的一点。
以前我很容易把学习过程想象成:
理解 → 理解 → 理解 → 理解透彻 → 开始实践。
但实际做项目之后,我发现真正有效的学习循环更像是:
理解 → 实验 → 发现直觉错误 → 修正理解 → 再实验。
很多东西,如果不真正动手,只在脑子里想象它应该如何运行,看起来往往都非常合理。
因为在想象里,我们会自动忽略大量细节。
只有真正开始操作以后,现实才会不断暴露那些被我们遗漏的部分。
于是你会遇到:
“为什么实际情况和我想的不一样?”
而我现在反而觉得,这可能正是学习中最有价值的时刻。
因为学习很重要的一部分,就是不断校准自己的直觉。
我们的大脑会根据已有经验建立一个关于世界如何运转的模型。当现实结果与这个模型一致时,我们几乎不会意识到模型本身的存在。
真正能够改变模型的,恰恰是那些:
“我原本以为会这样,但实际上却不是这样。”
的瞬间。
这时候,比起因为自己之前理解错了而感到挫败,更值得做的是继续追问:
究竟是哪一个前提错了?
是什么导致我的直觉和真实情况产生偏差?
为什么现实一定要以这种方式运行?
然后修改自己脑子里的模型,再重新实验。
如此往复。
我现在越来越觉得,所谓“真正理解一个东西”,可能并不是第一次就建立一个完全正确的模型,而是不断让自己的模型经过现实检验,然后一点一点逼近真实世界。
除了学习方法本身,我还意识到一件很现实的事情:
学习需要时间结构。
如果要开始一个新的实验或者项目,我现在更倾向于给它留出一块相对完整的时间。
因为很多技术任务都存在一个“进入上下文”的成本。
你需要重新记起文件在哪里、代码运行到了哪里、现在的问题是什么、之前为什么这么设计。
如果每二十分钟就被中断一次,就意味着你需要反复支付这笔成本。
所以条件允许的时候,我更希望一次留下几个小时,把一个阶段完整地推进下去,而不是不断进入、退出、再重新进入。
当然,中断不可能完全避免。
所以前面提到的“三行记录”,本质上就是在降低重新进入上下文的成本。
最后还有一个我最近越来越相信的原则:
不要因为刚上手时很困难,就过早判断自己不适合这件事。
很多事情第一次接触时都会显得异常复杂。
陌生的术语、工具、文件、错误信息和操作方式同时出现,大脑里又没有完整的结构,于是每一步都像是在黑暗中摸索。
但这种感觉并不一定意味着这件事情真的有那么难。
很多时候,它只是意味着:
你的脑子里还没有形成足够多的连接。
真正花几个小时做下去之后,原本彼此孤立的东西会开始连接起来。
你突然知道这个命令为什么存在,那个文件为什么放在那里,这段代码究竟在解决什么问题,之前看起来毫无关系的几个概念也开始形成一条完整的链路。
那些一开始像谜一样的东西,会一个一个被解开。
所以我现在更愿意提醒自己:
不要在最陌生的时候,对一件事的难度下结论。
先真正做一段时间。
再评价它。