注意力不是一条直线
一份关于阅读、记录和重新理解的学习笔记,仍然会继续修订。
很多学习方法都默认注意力是一条向前的线。读完一本书,提炼出几个结论,把它们放进自己的知识结构里,然后继续走向下一个主题。实际情况往往更像一组回路。一个问题会在不同的材料里反复出现,每一次出现都带来一点新的角度,也会暴露上一次理解中的空缺。
我现在把学习记录分成三层。第一层是当下看见的句子和例子,第二层是几天之后能够复述的判断,第三层是经过一段时间仍然愿意使用的模型。它们的保存方式不同,混在一起就会让笔记看起来完整,却很难真的拿来思考。
先记录还没有结论的部分
阅读时最容易被留下的是结论,因为结论看上去像成果。真正值得回看的,常常是当时没有解决的疑问。它们记录了理解发生的方向,也能帮助我判断某个观点到底改变了什么。
我会给一条笔记保留几个简单的信息。它从哪里来,我为什么在这里停下,它和已有的经验冲突在哪里,以及下一次应该从什么地方继续。这样做并不会让笔记变得更聪明,却能避免它在几个月后变成一段失去语境的摘抄。
一个用来检查记录价值的公式
这个公式不是测量真理的工具,只是写笔记时用来提醒自己的比例。回看收益越高,维护成本越低,一条记录才越值得长期保留。
这里的收益不只是以后能不能搜到。它也包括重新看到旧问题时,能否快速恢复当时的上下文。维护成本同样不止是整理时间,还包括为了让系统看起来完整而不断补标签、改标题和搬运内容的心理消耗。
用小工具处理重复动作
当规则已经足够稳定时,重复劳动可以交给一个很小的函数。重点不是自动化本身,而是把判断留给人,把格式化交给工具。下面这段 TypeScript 只是一个示例,它把一组阅读记录按主题收拢,同时保留原始顺序,方便之后继续回看。
type Note = {
title: string
topic: string
updatedAt: string
}
export function groupNotes(notes: Note[]) {
return notes.reduce<Record<string, Note[]>>((groups, note) => {
const bucket = groups[note.topic] ?? []
bucket.push(note)
groups[note.topic] = bucket
return groups
}, {})
}
代码解决的是分组,不负责判断哪些内容值得留下。这个边界很重要。任何自动整理只要开始替我决定意义,就很容易把偶然的东西变成固定的事实,也会让之后的修改变得麻烦。
让笔记保持可逆
我希望每条记录都能被重新命名、拆开或合并。今天它属于一个主题,过段时间可能会发现它应该和另一个问题放在一起。可逆意味着结构不是一次性承诺,旧记录不会因为当初选错了分类而失去价值。
这也解释了为什么我不急着做复杂的知识图谱。连接当然有用,但连接应该来自反复阅读之后的确认,而不是保存瞬间的冲动。先让内容活下来,再决定它们之间是否真的存在关系。
学习不是把未知压缩成几句标准答案。更像是在问题周围来回走动,逐渐知道哪些入口值得再次打开。笔记只需要把这些入口照亮一点,剩下的路仍然要自己走。