自去年 8 月以来,Roam Research 是我唯一使用的笔记软件,使用 Roam Research 之后自己摸索出一套较为舒适的知识管理与任务管理模式,并使用 Roam Research 产出了几篇文章,以及管理自己日常工作的内容。我发现使用这套方法之后,无论任务管理还是知识研究,它们都开始变得极其高效且逐渐有趣了起来。
可惜的是,我在网上搜了一圈发现社区内没有高质量的 Roam Research 的使用讲解文章,可能因为它在国内的使用门槛有些过高了(只有 Web 版 + 要求翻墙 + 高昂的订阅价格),导致其在国内并不热门。
那本文就介绍一下我自己使用 Roam Research 的场景和使用经验,希望能带给大家一些启发。需要在开篇明确是,工具只是工具而已,重要的是使用方法和行为模式,因此最后读者们无论是否使用 Roam Research 都不重要,关键的是如何将这套模式吸纳到自己的工具包中。也因此本文虽题为「Roam Research 最佳实践」,但内容上更多的是结合 Roam Research 来介绍知识管理与任务管理的方法,甚至在某些步骤中我也会顺便介绍一些可替代的工具。
让我们开始吧!
1. 知识管理#
1.1 新知识的形成:新旧知识的联结#
学习的本质是创造新的节点,或者更精确点说,是创造出新的联系。比如对于以下这句话:
Flutter 是一个高性能的跨端前端开发框架,因为它提供了自绘引擎来抹平多端差异,并提供了高性能的 Channel 来实现跨端通信。
如果你不是前端开发,对 Flutter 没有了解,不知道自绘引擎的原理,不明白跨端开发,不清楚 Channel 是什么,也不知道这句话中潜在对比的对象是什么技术方案,甚至不知道「高性能」的指标是什么,那么上面这句话对你而言就没有任何意义 —— 虽然你每个字都认识,但是它对你而言却不能构成新的知识。
因此,学习的核心是找到并建立起新节点与旧知识的联系,这也是费曼学习法的要点 —— 能用自己的知识体系去复述新知识,这才是对新知识的完全的理解,若固有知识体系无法完全解释新知识,就需要对知识框架做调整,这就是学习和成长的过程。
1.2 知识间的钩子:标签#
一种比较容易关联起新旧知识的方法是为两者都添加一个共同的 “第三元素”—— 标签,这是几乎所有笔记软件都有了一种基础能力,标签的介入一方面收纳了知识,另一方面使得标签内的所有知识有了间接的联系。
此外,标签打破了文件目录传统的树状结构,本身知识就应该是网状的,不应该是树形的非此即彼。
而 Roam Research 则高度抽象灵活,它只有两个概念:Page 和 Block——Page 可以作为其他 Page 的 block 的一部分,而某个 Block 的一部分也可以随时变成 Page。除此之外,它们之间可以交叉互相引用,是非常灵活的。
如上图所示,Page 是整个「斯宾诺莎」页面,而页面里面的所有内容(开头有个点)就是 Block。
灵活意味着使用起来没有压力,但也会令使用者产生困惑,比如刚才我们说到的标签,它没有。但其实任何一个 Page 和 Block 只要前面加上了「#」,那它就是标签。我们可以建一个题为「标签」的 Page,然后把我们所有的标签都收纳到这里。这也符合我们的认知 —— 因为标签本身也是一种知识。
上图就是我目前用到的标签,而点进「哲学」Page,可以看到里面又有很多收纳好的页面,已经按照某种结构进行了组织。其中 “经验论” 和 “唯理论” 又做了一层引用,因此可以看到这两者有特殊标记。(引用的作用与好处我们在后文的「知识产出」章节中再展开说,此处不详细说)
1.3 如何做阅读笔记?#
到目前为止,我们介绍的内容并没有展示出 Roam Research 的优势,包括本节即将介绍的「如何做阅读笔记」,其实和 Roam Research 也没有多大关系,因为阅读方法是通用的,工具大家可以自行选用(但 Roam Research 会有一些方便之处)。
话归正题,如何做阅读笔记这个话题经久不衰,但我想很多笔记都是按照书本的章节目录来做的 —— 第一章讲了啥,甚至这一段讲了啥,都如实原句记录下来。这样并不是不对,只是对于「学习」这个目的而言,它的效率会有些低 —— 因为这个笔记记录的是作者的思想,你了解的到也仅仅这是作者想给你看到的东西而已。而自己是否真的理解了?对于这些内容是否可以嵌入到自己知识体系里?都是需要打上问号的。如果是否定的答案,那学习的目的就没有达成。
首先,应该带着问题去阅读—— 我已经知道了什么?我还不知道什么?我还想知道什么?带着这些问题去阅读会更高效,因为问题驱动会让我们对阅读摄取的信息会更加敏感,它是一种主动学习的状态,其效率永远大于被动学习。而如果没有带着问题去阅读,就缺少了主体和背景的区分,则会很难记住事物。
比如《故事》被誉为编剧圣经,是一部比较厚的书,我会先通读一遍,如果想学习了解「人物弧光」,那会再带着这个目的深入阅读。
再比如《Effective Objective-C》介绍 OC 的编程技巧,我会结合目前正在做的项目,边阅读边反思其有没有编码上的不足之处。
其次,需要对获取的信息进行加工处理,最好不要一句不动地复制原文 —— 因为笔记应该是对知识的提炼和浓缩,只有加工之后的信息才能嵌入到自己的知识体系里,变成自己可以掌握的新知识。而反复加工提炼,这也是康纳尔笔记法所强调的内容。
** 最后,对于学完的知识我们需要使用它。** 学习完新知识之后,它就变成了旧知识,下次摄入新知识的时候再把它拿出来进行加工,如此可以不断不断地强化理解,不断不断地优化、重构、扩充自己的知识框架,使得知识储备充实起来。
比如想学习什么是「认识论」,就可以带着这个问题去阅读哲学书,然后将几个关键问题列出来,再自己进行解答。
在解答的过程中,我们会扩展学习「经验论」和「唯理论」,而「认识论」其中的某些问题的回答又会引用到「经验论」和「唯理论」的概念,这个时候就可以将解答直接嵌入进来,如此就形成了简单的知识网络。
同时,也可以发现上图中最底下会自动链接上「斯宾诺莎」的部分内容,这是 Roam Research 自动链接上的,对我们做研究和知识产出会有帮助, 我们讲解知识产出会详细介绍 Roam Research 的灵魂 —— 双向链接。
在那之前,我们先看看笔记中标记的使用。
1.4 标记使用#
Roam Research 天然支持 Markdown 语法,并且可以自定义 CSS 和自己写一些有意思的 JS 插件。
简单列一下几个 Markdown 标签我的使用场景:
- 大标题:文章标题,或者是知识卡片的标题
- 标题:单独成为一个 Block,需要是一个名词,名词性短语,方便引用。如果是一个粒度足够细的概念,也要单独成一个 block,以方便引用。
- 粗体:段落里重点内容会用绿色的粗体标注。
- 荧光笔:用的比较少,标注关键概念。
- 斜体:由于我个人不会用到斜体,所以我将斜体的样式改成了红色,用来标注问题。
- TODO:标记需要后续补充的内容
Roam Research 支持模板,这里我单独列出了标签 Block 和来源 Block,方便链接和溯源。以下是用模板创建的一个笔记框架,并记录了部分笔记,如下图所示:
此外,Roam Research 提供了 Daily 板块,可以将临碎的知识内容记录直接记录进来,后续整理。如下图所示,是某天的临时笔记,需要整理的内容已用 TODO 标出,方便后续进行任务管理(任务管理章节再细谈)。
1.5 知识产出#
我们所有的学习笔记其实目的都是为了产出,产出未必是形成完整的文章,阶段性灵感或内化成自己特有的收获也是可以的。那在这个阶段中 Roam Research 的自动块级双向链接就起到了至关重要的作用。
我们在 1.1 中说过,学习的本质是建立起新旧知识的联系。具体而言,是神经元的特性所致:
- 先后激活,就会建立连接:比如现有 A,再有 B,心里默念 A 再默念 B,如此 AB 之间就有了连接。
- 双向激活,可以强化连接:在刚才连接的基础上先默念 B 再默念 A,形成双向激活,认识到 AB 可以成对出现,如此便强化了连接。
- 第三者干扰,将会弱化原本的连接:但因为引入的新的节点,知识网络也便扩充了,认知视野也更广阔了。
只要在 Roam Research 中使用了引用,它就会自动建立双向链接,当这种链接丰富了之后,我们可以发现更多知识之间的隐藏关系。
如下图所示,是我笔记图谱中的局部网络,当我点击「设计」之后,与它关联的 Page 就会高亮显示,我们会发现其中的「Hook 模型」和「心理学」也有联系,那我们在深入研究「设计心理学」这个交叉学科领域时,那对这些隐藏链接的发掘就对我们非常重要。这也是在 Roam Research 中使用标签的额外收获 —— 通过增加钩子,来建立知识之间的隐藏联系。
那发掘关系之后,我们如何深入研究某个知识呢?举个例子,我想深入研究「康德」,那只要建立「康德」这个 Page,Roam Research 就会在这个 Page 下方显示上所有的有关「康德」的强链接和弱链接。即它帮我们确定了「康德」这个新知识,在我们知识框架中具体位置。
上图所示,我以前读过的书 —— 比如《存在主义》、《存在主义是一种人道主义》、《当下的启蒙》;我以前写过的文章《人生为何》;我在笔记中添加过的标记…… 等等这些,「康德」都将它们关联上了。其中,对于添加过的标记,就是强链接,我们可以点开后面的引用计数,来看其中引用的具体原文:
可以说我什么额外的工作都没有去做,Roam Research 就根据我已有的知识生成了「康德」这个新的知识。之后,我们需要对于生成的知识做整合和加工,将其记录在 Page 中,以此扩展我们的知识内容,加深对「康德」的理解和掌握。在未来不断地学习中,如果对于康德有新的认识和理解,我们也可以反复修改这个 Page,长久维护,增加知识的广度和深度。
2. 任务管理#
第二章中,我们来看看如何在 Roam Research 中做任务管理。其实 Roam Research 的主打能力还是知识管理,奈何其功能太过灵活,因此也是可以做任务管理的。
2.1 每日任务与复盘#
我们之前说过,Roam Research 提供了 Daily 视图,为自动创建每日笔记。同样的,我们可以对任意 TODO Block mark 上日期,那么在对应的日期上就能看到我们以往对当天的安排。
而每日的任务,我们可以从其他的项目中直接引用进来,这样我们就可以根据日程来管理项目,同时由不会肢解项目流程的完整性。
在任务下我们可以记录任务实现的方案和遇到的问题,如此一来,沉淀下来的每日的 Daily 内容我们就可以直接复盘。
2.2 筛选任务#
Roam Research 还提供了 Query 查询脚本,比如我们可以写一个 Query 脚本来过滤出该项目仓库中所有未解决的 issue。
对于项目中的任务,我们直接使用模板将任务和代码仓库中的 issue 进行管理。
2.3 长期计划管理#
对于长期计划,我们也可以新建一个 Page 进行管理,例如这个是我的「阅读」Page,记录了我阅读的书籍,点击对应的书籍中就可以看到对应的笔记。
2.4 替代方案#
任务管理的核心是「任务 —— 规划 —— 复盘」,这一套流程还是有蛮多替代方案的,这里安利一下 NotePlan 3,它也是每日笔记,也可以建立项目页面,从而实现在每一天的日程中具体管理项目。
当然 OmniFocus、iOS 的提醒事项、甚至纸笔,只要方法对了,也都是可以做到高效的任务管理。
对于知识管理部分,如果没有条件使用 Roam Research,那么 Obsidian、Notion 、Craft 也是不错的免费替代方案。最后,工具仅仅只是工具而已,希望本文提到的阅读法和知识关联法能够对大家的知识管理有些帮助。