一只阿木木

我读了一千本书,却从来没有真正读懂过一本

我读了一千本书,却从来没有真正读懂过一本

——"赛博时代的认知进化论"系列 第三篇


2022年的秋天,我参加了一次技术团队内部的架构评审。

评审的主题是:我们的系统要不要引入事件驱动架构(Event-Driven Architecture)。我是这个提案的发起人。我为这次评审准备了将近两周,读了大量相关的文章和书籍,做了一份我认为相当扎实的PPT。

评审开始,我讲完了所有的优势:解耦、异步、扩展性强。

然后我们团队的老宋抬起头,问了我一个问题:

“你说事件驱动能解耦。但我们现在最大的问题是什么?是耦合,还是一致性?”

我愣了三秒。

老宋继续说:“事件驱动确实能解耦,但它同时会让你的数据一致性问题变得极其复杂。如果我们现在最大的问题是一致性——引入事件驱动,是在解决问题,还是在制造更大的问题?”

那次评审,我的提案没通过。

回到工位,我重新翻开了我读过的那些资料。那些资料里,其实有好几处提到了事件驱动架构的一致性挑战。我读过,我也做了笔记。

但我只读了"它能做什么",我没有读"它不能做什么",以及"它和我当前的问题之间,究竟是什么关系"。

我读了很多东西,但我只是在收集观点,而不是在回答一个问题。


这件事让我开始重新审视一个我以为自己早就掌握的技能:阅读。

然后我重新翻开了一本我五年前读过、但其实从来没有真正读懂的书:

《如何阅读一本书》(How to Read a Book),作者,莫提默·艾德勒(Mortimer J. Adler)。


一、一个1940年的洞察,让我意识到我从未真正读过书

这本书第一版出版于1940年。在互联网出现之前将近半个世纪。

但艾德勒在书里描述的那个问题,和今天我们面对的问题,几乎一模一样:

信息太多,理解太少。

他把阅读分成了四个层次:

第一层:基础阅读(Elementary Reading) 认识字,能读通句子。大多数成年人都在这一层以上,但你可能没想到,很多人在读专业书籍时,其实还停留在这一层——他们认识每一个字,但不理解这个字在这个语境里的真正含义。

第二层:检视阅读(Inspectional Reading) 在有限时间内,快速判断一本书说的是什么,值不值得精读。艾德勒给了一个具体的方法:先读书名、副标题、目录、序言,然后随机翻几页,读最后两三页。用十五分钟到一小时,对这本书建立一个框架性的认知。

第三层:分析阅读(Analytical Reading) 把一本书读透。不只是理解作者说了什么,还要理解他为什么这么说,他的论证是否成立,他的前提是什么,他的结论你是否同意。这是大多数人认为的"认真读书",但艾德勒说,这还不是最高层次。

第四层:主题阅读(Syntopical Reading) 带着一个具体的问题,同时阅读多本书。让来自不同时代、不同领域、甚至观点相互对立的作者,围绕同一个问题展开讨论。

艾德勒说,主题阅读是最主动、最费力,也是唯一真正能让你形成独立观点的阅读方式。

然后他说了一句让我读到之后久久无法释怀的话——

大多数人一辈子都没有做过一次真正的主题阅读。


我第一次读到这句话,感觉有点刺。

因为我以为我读了很多书,我以为我在认真学习。但仔细想想,我的阅读方式,几乎全是第三层——我把一本书读透,然后换下一本书,再把那本读透。

每一本书,我都是单独和它对话。

但我从来没有让这些书相互对话。

我在架构评审上犯的错误,根源正在这里。我读了很多关于事件驱动的内容,但我从来没有带着"什么情况下事件驱动是错误的选择"这个问题,去把这些内容和其他内容放在一起审视。

我有一堆答案,但我缺少一个问题。

没有问题驱动的阅读,是知识的收藏,不是知识的构建。


二、主题阅读为什么这么难,以至于几乎没有人真正做过

艾德勒在书里描述了主题阅读的操作步骤,但他也坦率地承认:这件事非常困难,因为它需要解决三个几乎不可能同时解决的问题。

第一个问题:你不知道该读哪些书。

主题阅读的前提,是找到所有与你的问题相关的材料。但在你真正开始深入阅读之前,你其实不知道哪些材料是真正相关的。这是一个先有鸡还是先有蛋的困境。

第二个问题:不同的作者用不同的语言说同一件事。

一个经济学家谈"信息不对称",一个程序员谈"接口隐藏",一个心理学家谈"认知闭合需要",他们可能在说非常相似的东西,但如果你不能把这些不同的语言翻译成同一套词汇,你就无法让他们真正对话。

第三个问题:你很难不被某一本书的观点所主导。

当你在做主题阅读时,你往往先读了某一本书,这本书的框架就会开始影响你理解后续所有书籍的方式。你以为你在进行多方对话,但实际上你只是在用第一本书的视角解读所有其他书。

这三个问题,让主题阅读在实践中极其费力,费时,而且极容易失败。

我自己尝试过两次。

第一次,我想搞清楚"分布式系统中的一致性问题"。我列了一个书单,有七本书。读到第三本,我发现我已经完全忘了第一本说了什么。

第二次,我想搞清楚"为什么好的系统设计那么难"。我只找到了两本觉得直接相关的书,然后就陷入了"还有什么书是相关的"的焦虑里,迟迟无法真正开始。

两次尝试,都以失败告终。

然后AI出现了。


三、一次真实的主题阅读实验

在告诉你我如何用Obsidian和AI实践主题阅读之前,我想先带你看一次完整的、真实的过程。

不是最完美的那次。是最能说明问题的那次。


那次评审失败之后,我给自己提了一个问题:

“什么时候应该引入新的架构复杂度,什么时候不应该?”

我把这个问题写在了Obsidian的一个新笔记里,标题就是这个问题本身。然后我做了第一步:

我打开AI,输入了这个Prompt:

text

1
2
3
4
5
6
7
8
9
我是一个后端程序员,正在研究一个问题:
"什么时候应该引入新的架构复杂度,什么时候不应该?"

请帮我做两件事:
1. 这个问题可能在哪些不同的领域里有相关的讨论?
   (不只是技术领域,包括管理学、认知科学、哲学等)
2. 每个领域里,有没有特别值得参考的具体书籍或概念?

给我清单就好,不需要展开。

AI给我列了一张清单。

技术侧:《架构整洁之道》《人月神话》《Designing Data-Intensive Applications》。

管理学侧:《精益创业》里的"过早优化"概念,《奈飞文化手册》里的"复杂度税"。

认知科学侧:卡尼曼的"系统2"认知负荷理论。

哲学侧:奥卡姆剃刀原则,以及一个我完全没想到的方向——尼采关于"生命意志与复杂性"的讨论。

我盯着这张清单看了一会儿。

管理学和认知科学我能理解。但尼采?我的直觉告诉我这个连接有点牵强。但我没有立刻否定它,我在旁边打了一个问号,继续往下走。


然后我做了艾德勒说的检视阅读——但用AI来加速它。

对于清单上每一本我还没读过的书,我让AI帮我做一个两分钟版的检视阅读:

text

1
2
3
4
5
6
7
请用检视阅读的方式,帮我了解《人月神话》。
我不需要内容总结,我需要:
1. 这本书要回答的核心问题是什么?
2. 它提出的最重要的一个反常识论断是什么?
3. 它的结论对我的问题("什么时候应该引入架构复杂度")有没有直接相关的部分?

三点就够,每点两句话。

这个过程,我对清单上的八本书/概念,做了八次这样的检视。

用了大约四十分钟,我对每一本书在我的问题上的立场,有了一个粗略但真实的判断。我把每本书的核心立场,都写成了一条原子笔记,放进了Obsidian,然后把它们全部双链连接到"什么时候应该引入新的架构复杂度"这个主节点笔记上。


现在,最关键的一步来了。

我打开AI,把这八条笔记的核心立场全部粘贴进去,然后输入了这个Prompt:

text

1
2
3
4
5
6
7
8
9
10
以下是我整理的,来自不同领域的八个观点,
它们都在尝试回答同一个问题:
"什么时候应该引入复杂度,什么时候不应该?"

[粘贴八条笔记的核心立场]

请帮我做一件事:
让这八个观点相互对话。
找出它们之间最尖锐的矛盾点是什么。
不需要调和这些矛盾,只需要把矛盾挑明。

AI给了我三个矛盾点:

矛盾一: 《架构整洁之道》认为复杂度应该被提前设计和控制,但《精益创业》认为过早引入架构复杂度是创业公司死亡的主要原因之一。——到底是"提前规划"还是"延迟决策"?

矛盾二: 卡尼曼的认知负荷理论说,复杂度会消耗人的认知资源,降低决策质量。但《DDIA》里某些章节暗示,系统的复杂度有时候是无法被消除的,只能被转移——消除了一个地方的复杂度,另一个地方就会变得更复杂。——复杂度是可以被消灭的,还是只能被搬家?

矛盾三: 奥卡姆剃刀说,在能解释问题的所有方案中,选最简单的那个。但《人月神话》里有一个著名的论断:没有银弹——软件的本质复杂度无法被消除,任何简化方案都只是在简化偶然复杂度,不是本质复杂度。——简单,到底是一种美德,还是一种幻觉?

我盯着这三个矛盾看了很长时间。

然后我意识到一件事:

这三个矛盾,其实是同一个更深层的矛盾的三种表现形式。

真正的问题不是"什么时候引入复杂度",而是:

“我们能不能区分本质复杂度和偶然复杂度?如果不能,我们所有的’简化’,都只是在自欺欺人。”

这个洞察,不在任何一本书里。

它是这些书相互碰撞之后产生的一个新东西。


我回头想起了那次评审。

老宋的那个问题——“我们现在的问题是耦合还是一致性”——本质上是在问:事件驱动架构能帮我们消除的,是本质复杂度,还是偶然复杂度?

如果我在那次评审之前做过这次主题阅读,我不会无法回答这个问题。


四、可以复用的主题阅读工作流

让我把这套过程整理成一个可以直接复用的SOP。

但在给你步骤之前,我要说一件重要的事:

主题阅读的起点,必须是一个真实的问题,而不是一个主题。

"我想了解微服务"不是一个问题,这是一个主题。 “我们的系统现在有多个服务共享同一个数据库,这会带来什么问题,怎么解决”,这是一个问题。

没有真实问题驱动的主题阅读,你只是在换一种方式囤积知识。


Step 1:在Obsidian里建立"问题节点"

当你遇到一个真实的、让你困惑的问题,在Obsidian里为它建一条笔记。

格式如下:

Markdown

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# [你的问题——用完整的问句写,不要用关键词]

## 问题的来源
这个问题是怎么产生的?是什么具体的事情让你开始困惑?
(越具体越好,最好有场景)

## 我目前的直觉答案
在读任何东西之前,你现在直觉上的答案是什么?
(先把直觉写下来,后面可以用来对比你读完之后的变化)

## 相关材料(待填充)

## 各方观点(待填充)

## 矛盾点(待填充)

## 我目前的结论(待填充)

## 还没解决的问题(待填充)

最后一栏"还没解决的问题",是整个笔记最重要的部分。

好的主题阅读不会消灭你的困惑,它会把一个模糊的困惑,变成几个清晰的、更深层的困惑。


Step 2:用AI扩展你的材料范围

把你的问题发给AI,用这个Prompt:

text

1
2
3
4
5
6
7
8
9
10
11
12
我正在研究一个问题:[你的问题]

请帮我做两件事:

第一,告诉我这个问题在哪些意想不到的领域里可能有相关讨论。
(重点是"意想不到",技术领域的我自己会找,
  我需要的是心理学、哲学、历史、生物学等跨领域的视角)

第二,每个领域给我一个最值得参考的具体概念或书籍,
     并用一句话说明它和我的问题的关联。

不需要超过5个领域。

把AI给你的清单,填入"相关材料"栏。

然后,加上你自己已有的材料。不要只依赖AI的推荐,你自己的阅读经历里可能有比AI推荐更相关的东西。


Step 3:用AI加速检视阅读

对于你不熟悉的材料,用这个Prompt做快速检视:

text

1
2
3
4
5
6
7
8
9
10
请帮我用检视阅读的方式了解[书名/概念]。

我的问题是:[你的问题]

我需要:
1. 这本书/这个概念的核心论断是什么?(一句话)
2. 它对我的问题,持什么立场?(支持、反对、还是提供了一个新的维度?)
3. 它最有价值的一个具体论证或案例是什么?

三点,每点不超过三句话。

把每本书的回答,整理成独立的原子笔记,双链连接到你的问题节点。


Step 4:让AI当"辩论主持人"

当你收集了至少三到四个不同的观点之后,用这个Prompt:

text

1
2
3
4
5
6
7
8
9
10
11
以下是我收集的,来自不同领域的观点,
它们都在试图回答同一个问题:[你的问题]

[粘贴各方观点]

请扮演一个辩论赛主持人:
1. 找出这些观点之间最尖锐的矛盾(不超过3个)
2. 对于每个矛盾,给出最能代表两方立场的一句话
3. 不要调和这些矛盾,不要给出你的答案

我需要的是清晰的矛盾,不是和稀泥的综合。

把AI找出的矛盾,填入"矛盾点"栏。

然后,这些矛盾是你自己思考的起点,不是终点。


Step 5:写下你自己的结论——包括你还不知道的部分

这是最难的一步,也是最重要的一步。

艾德勒在书里说,主题阅读的最终目标,不是找到一个所有人都同意的答案,而是让你形成一个你自己的、有根据的立场。

用这个格式写你的结论:

Markdown

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
## 我目前的结论

基于以上材料,我目前的立场是:
[用自己的话写,不要引用任何人]

这个立场和我最初的直觉相比:
- 被确认的部分:
- 被推翻的部分:
- 被复杂化的部分:

## 还没解决的问题

做完这次主题阅读,我还是不知道:
1.
2.
3.

“被复杂化的部分”,是整个主题阅读里最有价值的产出。

一个问题在你开始之前是简单的,做完主题阅读之后变得更复杂了——这不是失败,这是进步。真实的问题从来都不简单,你之前的"简单"只是因为你看得不够深。


写在最后

艾德勒写《如何阅读一本书》的时候,这个世界的信息总量,大概是今天的千分之一都不到。

他已经在担心人们读太多、理解太少了。

如果他活到今天,看见我们的信息流、我们的收藏夹、我们的Obsidian库,他会说什么?

我猜他会说同一句话,只是语气会更重:

你们读了太多,但你们提出的问题太少了。

主题阅读的本质,不是一种阅读技巧,它是一种认识论的立场:

你不是知识的接收者,你是知识的审问者。

那些书,不是来告诉你答案的。你把它们召集过来,是为了审问它们,让它们在你面前相互质疑,直到真正重要的矛盾浮现出来,然后你自己做出判断。


但我在用这套方法做了将近一年的主题阅读之后,开始有一个隐隐的不安:

艾德勒说,主题阅读要求你主动地、有意识地抵制任何一本书对你的控制,保持独立判断。

但当我越来越依赖AI来帮我找矛盾、总结立场的时候,我是在增强我的独立判断,还是在悄悄地把判断外包给了AI?

AI找出的那三个矛盾,是真实存在于那些书里的矛盾。

但那些AI没有找出来的矛盾,是因为它们不存在,还是因为AI不擅长找它们?

如果是后者,我所做的所有"主题阅读",都在AI的视野边界之内。

我一直以为我在审问那些书。

但也许,我只是在AI允许我审问的范围内,进行了一场精心安排的庭审。


下一篇预告:

《思维的熵减:用KCS方法论与AI打造"不用维护"的知识库》

——你有没有遇到过这种情况:翻出一年前写的笔记,发现里面的观点已经是错的,但你不知道它什么时候开始错的?一个从不腐烂的知识库,是怎么做到的?