02 信息密度的四个层级

第一卷·认知地基 第二章


一、一个反常识的发现

去年有一次,我给一个新项目写产品介绍。写了将近一千字,从”为什么要做这个项目”到”我们的差异化优势”到”未来规划”,洋洋洒洒一大篇。

写完之后我自己读了一遍,发现读不下去。太长了,读者读到一半会弃文。我开始删——删了一段”市场背景”,删了一段”团队介绍”,删了一段”未来愿景”。

删完之后剩两百字。

我又读了一遍。

意思没变。

我心里咯噔一下——前面那一千字,八成是凑字。

这件事给我一个反常识的发现:“写不长”不是因为”内容少”,是因为”密度低”。

大部分人写不出”短而充实”的文字,是因为他们写不出”高密度”的文字。他们靠堆字数让”看起来多”,但实际上堆出来的都是”看起来像内容但不是内容”的东西——填充语、重复句、空洞的展望。

这一章要解决的就是这个问题:把”密度”这件事量化。

让你下次写完一段话,能直接判断”这段在充实什么、修辞什么、凑字什么”。让你下次改稿子,能直接砍掉”密度为 0”的句子。

我们从四个层级开始。


二、四个层级是什么

我把”一段话里每个句子”按”密度”分成四个层级。密度不是主观感受,是可以用删除实验量化的。

层级名字一句话定义删除实验
L1凑字完全没意义,删了不影响删了意思不变
L2重复换个说法再说一遍删了意思不变
L3信息传递新事实 / 观点删了损失一个事实
L4洞察让读者”哦原来是这样”删了损失一个思维模型

先举四个例子,让你直观感受一下区别。

L1 - 凑字的例子:

在这个快速变化的时代,技术的革新日新月异。

这句话在说什么?什么都没说。“快速变化的时代""日新月异”——全是套话。删了它,后面任何一段话开头都不会受影响。

L2 - 重复的例子:

重要的是要注意,我们应当充分认识到这一点。需要说明的是,这个问题不容忽视。

读两遍你会发现,第二句是”重要要注意”的同义重复。“应当充分认识到""不容忽视”——也是在说”重要”。三句话说的同一件事,删两句意思不变。

L3 - 信息的例子:

Go 1.18 引入了泛型,允许函数和类型声明类型参数。

这一句传递了一个具体事实——Go 1.18 引入了泛型。删了它,读者不知道 Go 什么时候有泛型。这是一个 L3 句子。

L4 - 洞察的例子:

写作和写代码一样:先建骨架,再填血肉。

这一句传递了一个思维模型——把”写作”类比成”写代码”。读完之后,读者脑子里多了一个”骨架-血肉”的框架,可以迁移到其他场景。删了它,读者损失的是这个框架。这是一个 L4 句子。

四个层级,一目了然。

但这一章不只是分类——分类的目的是让你能识别、能砍、能升。

下面我们讲怎么识别。


三、用”删除实验”识别这四个层级

判断一个句子属于哪个层级,最直接的方法是删除实验:把这句话删掉,看下一句能不能接上、意思有没有变。

第一步:把你要分析的段落抄到一个新文档,每个句子单独成行。

第二步:对每个句子问一个问题——“删了它,下一句能不能接上?意思有没有变?”

  • 删了意思不变 → L1 或 L2
  • 删了损失一个具体事实 → L3
  • 删了损失一个思维模型或独特视角 → L4

第三步:统计四个层级的数量。

举个完整的例子。

原段落:

在当今云计算时代,微服务架构已经成为主流。重要的是,开发者需要掌握服务拆分的技能。需要强调的是,良好的服务拆分能够提升系统的可维护性。具体来说,拆分时要遵循单一职责原则。高内聚、低耦合是服务拆分的核心思想。

按句子拆开:

  1. 在当今云计算时代,微服务架构已经成为主流。
  2. 重要的是,开发者需要掌握服务拆分的技能。
  3. 需要强调的是,良好的服务拆分能够提升系统的可维护性。
  4. 具体来说,拆分时要遵循单一职责原则。
  5. 高内聚、低耦合是服务拆分的核心思想。

做删除实验:

  1. 删了试试。下一句”重要的是,开发者需要…”能接上,意思没变。这是 L1(凑字)。
  2. 删了试试。下一句”需要强调的是,…”能接上,意思没变。但严格说,这一句本身有信息(“开发者需要掌握服务拆分”),所以更准确是 L2-L3 交界。我们这里算 L2(重复)。
  3. 删了试试。下一句”具体来说…”能接上,但损失了”提升可维护性”这个观点。这是 L3。
  4. 删了试试。下一句”高内聚、低耦合…”能接上,但损失了”单一职责原则”这个具体指导。这是 L3。
  5. 删了试试。这一句是总结性陈述。如果删了,读者不会立刻感觉到损失——因为它和前面有部分重复。但严格说它传递了一个具体概念(“高内聚、低耦合”)。我们这里算 L3 偏 L2。

统计:

L1L2L3L4
1 句 (20%)1 句 (20%)3 句 (60%)0 句 (0%)

这是个典型的”看起来有结构但密度分布很差”的段落。L1+L2 占 40%,L4 占 0%——读者读完知道”微服务要拆分”,但没带走任何思维模型。

如果让你重写这个段落,目标应该是:L3 占 60% + L4 占 30% + L2 占 10% + L1 占 0%。具体怎么重写,下一节讲。


四、四个层级的反例对照

为了让你更直观地感受四个层级,我再举一组对照例子。每组四个句子,分别代表 L1、L2、L3、L4,主题都是”如何学 Go”。

主题:如何学 Go

层级句子
L1在当今编程语言百花齐放的时代,Go 语言异军突起。
L2学习 Go 语言很重要。掌握 Go 语言非常关键。学好 Go 语言是必要的。
L3Go 的并发模型基于 goroutine 和 channel,goroutine 是用户态线程,channel 是 goroutine 之间的通信机制。
L4学 Go 最快的路径是先读 runtime 源码——读完之后你对 Go 的理解会和没读过的人完全不一样。

读一遍你会发现:

  • L1 读完你什么都不知道。“异军突起”换成”脱颖而出""飞速发展”意思一样。
  • L2 读完你还是什么都不知道。“很重要""非常关键""必要”是同义词反复。
  • L3 读完你多知道了一个事实:Go 的并发模型基于 goroutine 和 channel。这是一个具体的、可验证的事实。
  • L4 读完你多知道了一个判断:学 Go 最快的路径是先读 runtime 源码。这是一个观点,并且给出了理由(“读完之后理解会不一样”)。

L3 和 L4 的区别:

  • L3 是事实,读者可以验证(“Go 是不是基于 goroutine 和 channel?是的”)。
  • L4 是观点,读者不一定同意(“学 Go 最快的方式是先读源码?不一定,但值得一试”)。

一篇文档如果只有 L3,读者会觉得”信息量大但没启发”。一篇文档如果只有 L4,读者会觉得”有启发但不可靠”。好文档是 L3 主、L4 辅、L2 少、L1 零。

下面我们讲怎么把 L1、L2 升级成 L3、L4。


五、怎么把 L1、L2 升级成 L3、L4

升级的核心思路:把”抽象的话”换成”具体的话”。

L1 和 L2 的共同特征是”抽象”。它们用的词是”重要""关键""时代""精神”这种大词,每个词你认识,但读完什么都不知道。

升级方法有四个:

方法一:补具体场景。

把”在这个快速变化的时代”换成具体的场景。

❌ 在这个快速变化的时代,企业必须不断创新。

✅ 过去五年,云原生从概念变成了几乎所有新项目的默认架构。十年前没人用 Kubernetes,今天你不学 Kubernetes 就找不到 DevOps 工作。

第一句是 L1。第二句是 L3+L4——补了”过去五年""云原生""Kubernetes""找不到工作”这些具体场景,读者读完能感知到”快速变化”是什么。

方法二:补数据。

把”效果显著”换成具体数字。

❌ 通过这次重构,系统的性能得到了显著提升。

✅ 通过这次重构,订单查询的 P99 延迟从 800ms 降到了 120ms,单机 QPS 从 200 提升到 1500。

第一句是 L2(“显著”没说到底显著多少)。第二句是 L3(具体数字)。

方法三:补反例。

把抽象的话配上”如果不这样会怎样”。

❌ 良好的代码风格很重要。

✅ 良好的代码风格很重要——去年有个团队合并了一段 500 行的函数,没拆,没人 review。三个月后线上出了一个 P0 事故,根因追到这段函数,定位花了三小时。如果当时拆成五个小函数,定位时间不会超过十分钟。

第一句是 L2。第二句是 L3+L4——补了反例(“500 行函数""P0 事故""三小时定位”),读者读完能感知到”重要”是什么。

方法四:补洞察。

把”这样做是对的”换成”为什么这样做”。

❌ 我们应该重视单元测试。

✅ 我们应该重视单元测试——不是为了覆盖率数字,而是因为单元测试是给”未来的自己”留的笔记。今天写测试时花的 10 分钟,可能在三个月后救你一小时的调试时间。

第一句是 L2。第二句是 L3+L4——补了”为什么”(“给未来自己留的笔记”),还补了具体场景(“10 分钟换 1 小时”)。

四个方法能解决 80% 的 L1、L2 问题。剩下 20% 是”修辞性内容”——这些不是升级问题,是”砍掉”问题。第十章”留白的力量”会专门讲。


六、L3 和 L4 的合理比例

密度不是越高越好。密度过高反而读不动。

举一个反例。我见过一种”高密度”文章:

Go 1.1 引入了 race detector。Go 1.2 引入了 goroutine 调度器优化。Go 1.3 引入了 GC 优化。Go 1.4 引入了运行时从 C 迁移到 Go。Go 1.5 引入了 GC 重写。Go 1.6 引入了 HTTP/2 支持。Go 1.7 引入了 context 包。Go 1.8 引入了 plugins。Go 1.9 引入了 type alias。Go 1.10 引入了 build cache。Go 1.11 引入了 modules。Go 1.12 引入了 go vet 改进。Go 1.13 引入了 error wrapping。Go 1.14 引入了 goroutine preemption。Go 1.15 引入了链接器优化。Go 1.16 引入了 file embed。Go 1.17 引入了 module graph pruning。Go 1.18 引入了泛型。Go 1.19 引入了泛型类型参数 doc 改进。Go 1.20 引入了 PGO。

读完你什么感觉?信息密度极高——全是 L3。但读完之后呢?你知道”Go 1.1 到 Go 1.20 都做了什么”,但你没带走任何东西。

这种文章是”堆事实”。堆事实不堆洞察,是另一种”空洞”——它有 L3,但 L4 = 0。

真正好的写作是 L3 主、L4 辅。L3 给你事实,L4 给你洞察。两者缺一不可。

我给自己定的密度比例:

场景L1L2L3L4
设计文档0%5-10%70-80%10-20%
邮件0%5%80-85%10-15%
博客0%5-15%60-70%15-25%
RFC / 技术文档0%5%75-85%10-15%

比例不是死的,要看读者和场景:

  • 读者急(邮件、决策文档):L3 多、L4 少。读者要快速拿到事实。
  • 读者有时间(博客、长文):L4 多一些。读者想被启发。
  • 读者需要决策(RFC、设计文档):L3 和 L4 平衡。读者要事实 + 论证。

但无论什么场景,L1 都应该是 0%。L1 是纯粹的凑字,没有存在价值。


七、不同文体的密度差异

不同文体对密度的要求不同。举几个常见场景。

设计文档:高密度。

读者是同事,要做决策。每段都要传递事实或观点,没有空间留给”修饰性内容”。

一段设计文档的开头应该这样:

这个方案要解决的问题:订单服务与用户服务循环依赖,导致部署互相阻塞、故障互相传导。备选方案有三个:服务合并、服务拆分、API gateway。综合权衡选服务拆分。

而不是这样:

在当今微服务时代,服务拆分已经成为业界共识。为了解决现有问题,我们经过深入调研、慎重考虑,提出以下方案。希望大家认真阅读,积极反馈。

第二个版本读完之后,读者还是不知道”问题是什么""方案为什么是这个”。第一个版本读完,读者已经可以做初步判断。

邮件:中密度。

读者是你的同事或上级,他们时间紧、注意力稀缺。L3 要多、L2 可以有一点(用于礼貌过渡)、L4 不用太多。

一封工作邮件:

张总:方案一和方案二的对比表附后,结论是方案一更优。理由三点:性能提升 30%、实现复杂度低、风险可控。详细的对比和风险分析见附件第二节。如需进一步讨论,我明天下午有空。

不绕弯、不铺垫、不”展望”——L1 = 0。

博客:中密度偏 L4。

博客的读者有时间、有耐心。L4 比例可以高一些——读者想被启发,而不只是”学事实”。

但 L4 不是堆”金句”。L4 是有洞察的句子,是读完能让读者”哦”的句子。

RFC:极高密度。

读者是协议的制定者或实现者,要扣字眼。L1 = 0,L2 = 0,L3 = 80%,L4 = 20%。每一句话都要有信息,每一句话都要扣得住。

论文:极高密度 + 高 L4 比例。

论文读者是同行,他们既要看事实(你做了什么),也要看洞察(你的发现意味着什么)。L3 和 L4 各占一半是合理的。


八、几个常见误区

讲完密度本身,最后讲几个关于”密度”的常见误区。这些误区会让你走偏。

误区一:密度高 = 用专业术语。

不是的。术语只是表达工具,不是密度本身。“context propagation” 是术语,但它在 RFC 里是 L3;“业务上下文传递机制” 在产品文档里是 L3。两者信息密度相同,但第一个翻译成英文立刻成立,第二个需要更多解释。

密度来自”信息”,不来自”术语”。

误区二:密度高 = 用长句。

不是的。短句也可以高密度:

Go 不允许 main 函数返回错误。它假定 main 是同步入口,错误处理放在 init 或 worker goroutine 里。

两个短句,每句一个事实。密度比一个长句”Go 不允许 main 函数返回错误,因为 main 假定为同步入口,所以错误处理必须放在 init 或 worker goroutine 里”更高。

长句往往是 L2 的藏身处——把几件事塞进一句,读者读完记不住。

误区三:密度高 = 删减到极致。

不是的。删过头会丢失必要的连接、必要的例子、必要的过渡。密度高是”删掉冗余”,不是”删掉必要”。

L1 和 L2 该删就删。L3 和 L4 不该删。

判断标准:删掉之后读者有没有信息损失?有损失 → 别删;没损失 → 必删。

误区四:密度高 = 没有例子。

不是的。例子本身就是高密度信息——一个具体例子能顶三段抽象论述。

“Go 1.18 之前要用 compile-time 断言检查接口实现” 是 L3。 “Go 1.18 之前开发者用 var _ MyInterface = (*MyStruct)(nil)” 是 L3 + L4。

第二个例子比第一个密度更高——它补了具体代码,读者读完能立刻用。

所以:例子是高密度的朋友,不是高密度的敌人。


九、心法:密度是结果,不是目标

讲到这里你应该明白:密度不是目标,“充实”才是。密度是”充实”的副产品。

如果你为了”密度高”而堆 L3(事实),L3 太多反而读不动。前面那个”Go 1.1 到 Go 1.20 都做了什么”的反例就是堆 L3 的下场——密度高,但读者什么都没带走。

如果你为了”密度高”而强行加 L4(洞察),L4 太多反而显得假。每个句子都是”金句”的文章,读者读完只会觉得”这人太装了”。

理想状态:自然地写,写完之后做一遍删除实验,把 L1 砍光、L2 砍掉一半,剩下的基本就是你要的密度。

密度不是你写之前的目标,是你写完之后的结果。先求充实,再求密度。这个次序颠倒过来,会写成那种”看起来密度极高但读起来什么都没带走”的文章。

我自己的写作习惯:写完第一稿后,先通读一遍做”删除实验”,砍掉所有 L1、所有重复的 L2。然后回头补 L4——把 L3 的事实”翻译”成读者能带走的判断。

这一章的内容到此为止。下面是思考题和练习。


十、思考题

思考题 1:拿一段自己写的东西做删除实验

找一段你最近写的工作文档(200-500 字一段),按本章第三节的方法做删除实验。

具体步骤:

  1. 把段落抄到新文档,每句话单独一行。
  2. 对每句话做”删除实验”——删了它意思会不会变。
  3. 标出 L1 / L2 / L3 / L4。
  4. 统计四个层级的比例。

写完之后回答两个问题:

  • 你的段落里 L1 占多少?
  • 你的段落里 L4 占多少?

如果 L1 > 0% 或 L4 < 5%,说明你的段落需要重写。

思考题 2:拿一段”高密度”的文字分析密度比例

找一段你读过的”密度高且读起来舒服”的文字(RFC、学术论文、技术博客、新闻报道都可以)。

按四个层级做密度分析,写一份”密度报告”:

  • 这段文字里 L3 占多少?
  • L4 占多少?
  • L1 和 L2 占多少?
  • 这段文字的”密度策略”是什么?(比如”L3 密集铺陈 + 关键 L4 收尾”)

写一篇 300 字的分析。

思考题 3:把一段低密度文字改写为高密度

下面这段话密度很低。试着用第五节”四个升级方法”改写它。

原文:

在当今数字化转型的背景下,数据已经成为企业最重要的资产之一。如何有效地管理和利用数据,是每个企业都必须面对的重要课题。大数据技术的出现,为企业提供了前所未有的机遇。我们要积极拥抱新技术,提升数据能力,为企业的发展赋能。

提示:原文是 L1 + L2 主导,几乎没有 L3 和 L4。改写时先识别哪些是 L1(“在当今…背景下""数字化转型”),哪些是 L2(“重要的""前所未有的”),然后用具体场景、数据、反例、洞察替换。

参考答案

思考题 1 参考答案

大部分人做完这道题会发现:自己的段落里 L1 占 10-20%,L2 占 10-30%,L4 占 0-5%。

一个常见的模式:

  • 开头一两句 L1(凑字氛围)
  • 中间几句 L2(重复强调)
  • 偶尔几句 L3(事实陈述)
  • 几乎没有 L4(洞察)

做完这道题的标准动作:

  1. 删掉所有 L1。开头那两句凑字氛围直接砍掉,换成”这段文档要解决的核心问题是什么”一句话。
  2. 砍掉一半 L2。“重要的""关键的”这类词出现两次以上的,保留一个就够了。
  3. 补两到三句 L4。每讲完一个事实,问自己”读者能带走什么判断”。把这个判断写出来。

我自己的改稿习惯:写完之后先做删除实验,把 L1 砍光、L2 砍到 ≤ 5%。然后回头补 L4——每段最后加一句”读者读完应该带走什么”。这一步会让密度上升一个台阶。

思考题 2 参考答案

密度高的文字有三种典型策略:

策略一:L3 密集铺陈 + 关键 L4 收尾。

学术论文、技术 RFC 常用这种结构。每一段都是 L3(事实 + 数据),结尾用一两句 L4(“这意味着…”)。读者读 L3 时积累事实,读到 L4 时获得洞察。

策略二:L3 + L4 交错。

好的技术博客常用这种。事实和洞察交替出现,读者不会被”全是事实”压垮,也不会被”全是金句”欺骗。

策略三:L4 主导 + L3 支撑。

一些”洞察型”的博客文章会用这种。先抛一个判断,然后用事实支撑。读者读 L4 时被启发,回过头用 L3 验证。

你的分析应该说出这段文字属于哪种策略。如果你说不出,说明你读的时候没注意”密度分布”——再读一遍,专门看每句话在做什么。

思考题 3 参考答案

一个改写示范:

我从 2019 年开始接触数据相关的工作,做过 ETL、数仓、实时计算。三年来见过最常见的失败模式不是”数据不够”,是”团队没有数据决策的流程”。

一个反例:某互联网公司曾经把整个数仓迁到 Snowflake,迁移花了 800 万。迁移完之后,业务团队依然按”老板拍脑袋”做决策,没人用数仓里的数据。半年后数仓成了”摆设”,投入打了水水。

一个正面例子:另一家公司花了 200 万搭数仓,但配套建了一个”数据 review 机制”——每个决策必须引用具体数据,由数据团队复核。一年后决策准确率从 50% 提升到 85%。

数据能力的核心不是技术,是流程。流程不对,技术再先进也是摆设。

这段改写后,“密度”分布是:

  • L1 占 0%:没有”在当今…背景下”这类套话。
  • L2 占 5%:几乎没有重复。
  • L3 占 60%:给了具体时间(2019)、具体技术(ETL、数仓、实时计算)、具体公司、具体数字(800 万、200 万、50%→85%)。
  • L4 占 30%:最后一句”数据能力的核心不是技术,是流程”是一个判断;前面两个反例也是”读者能带走的判断”。

读者读完,能记住三件事:数据能力核心是流程、有反例、有正面例子。


十一、动手练习

练习 1:给一份工作文档做”密度体检”

找一份你最近写的工作文档(500 字以上),按以下步骤做密度体检:

  1. 把整份文档按句子拆分(可以借助工具)。
  2. 给每个句子标 L1 / L2 / L3 / L4。
  3. 统计四个层级的比例。
  4. 如果 L1 > 0% 或 L4 < 5%,重写这份文档。

练习 2:把一段低密度文字改写为高密度

拿”思考题 3”那段原文做改写练习。按第五节的四个方法(补具体、补数据、补反例、补洞察)改写。

具体要求:

  • 字数不限,但 L1 必须为 0%。
  • L3 占 50% 以上。
  • L4 占 15% 以上。
  • L2 ≤ 10%。

写完之后自己读一遍,问自己:如果一个新员工读,他能记住三个具体事实 + 一个判断吗?

自评标准

练习 1 自评标准:

  • L1 = 0%——硬性指标。
  • L3 ≥ 50%——硬性指标。
  • L4 ≥ 10%——硬性指标。
  • 文档能通过”读者能不能用自己的话复述核心论点”测试——硬性指标。

练习 2 自评标准:

  • 新员工读完能记住至少三个具体数字 / 时间 / 公司名——过关。
  • 新员工读完能记住一个判断(“这件事的核心是 X”)——过关。
  • 任意一项做不到,重写。

十二、小结

这一章把”充实”量化成了四个层级:

层级名字定义检测方法
L1凑字完全没意义删了意思不变
L2重复换个说法再说一遍删了意思不变
L3信息传递新事实 / 观点删了损失一个事实
L4洞察让读者”哦原来是这样”删了损失一个思维模型

密度策略:L3 主、L4 辅、L2 少、L1 零。

密度不是目标,“充实”才是。密度是”充实”的副产品。

检测方法是”删除实验”:删了它,看意思有没有变。

升级方法是”四个补”:补具体、补数据、补反例、补洞察。

下一章我们讲”结构清晰:读者是迷路的旅客”——回答”读者读的时候,能不能跟着你的思路走”。这一章讲的”密度”是”充实”的微观,下一章讲的”结构”是”充实”的宏观。


心法

写完一段之后,逐句做”删除实验”——删了意思不变,就是 L1 或 L2,该砍。

砍完之后回头补 L4——每段问自己”读者读完应该带走什么判断”。

密度不是目标,“充实”才是。先求充实,再求密度。