我读了一千本书,却从来没有真正读懂过一本
我读了一千本书,却从来没有真正读懂过一本
——"赛博时代的认知进化论"系列 第三篇
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打造"不用维护"的知识库》
——你有没有遇到过这种情况:翻出一年前写的笔记,发现里面的观点已经是错的,但你不知道它什么时候开始错的?一个从不腐烂的知识库,是怎么做到的?