写完一篇三千字,回头看,删掉一半段落信息量没变。这不是写得不好,是写的时候没有区分"我经历了什么"和"读者需要知道什么"。经历是线性增长的,信息不是——一次排查走了六个岔路,最终只有那个分岔判断值得写。
密度的判据只有一条:这一段删掉,读者会少知道一件事吗。不会,它就是填充。按这条判据去读自己的稿子,多数人会发现可删的部分比自己估计的多,而且删掉之后读起来更清楚——因为读者不用再为"这段是不是重要"付出判断成本。
这篇不讨论文风,只讨论操作:哪些段落该删、按什么顺序删、删到什么程度停。
1. 四种低密度写法,各有明确的替换方式
| 写法 | 典型形态 | 为什么零信息 | 替换方式 |
|---|---|---|---|
| 背景铺垫 | "随着业务发展,系统越来越多……" | 读者已知,或与判断无关 | 直接给约束:"当前 QPS 上限受单库写入限制" |
| 同义重复 | 相邻两段说同一件事,换了说法 | 第二次出现不增加信息 | 合并成一段,只保留更精确的那句 |
| 过程叙述 | "先试了 A,不通;又试了 B……" | 排除的路径只在有判据价值时才值得写 | 只写"为什么 A 不成立",一句 |
| 自我评价 | "这套方案比较优雅""实现较为简单" | 无口径、不可验证 | 换成可核对的量:"改动涉及 3 个模块、无新增依赖" |
四种里最常见的是背景铺垫,因为它写起来最顺。判据很硬:背景段里的每一句,要么是一个约束,要么删掉。约束是可以被违反的条件(版本、配额、时限、合规要求),不是形容词。
同义重复可以机械检出:同一结论在文中出现第二次起,一律改为引用("见第 3 节的代价表"),而不是换个说法重说一遍。
四种写法还能共用一条机械检查:把每句的谓语圈出来,谓语是"进行了""实现了""开展了"这类空壳动词的句子,通常整句可删——真正干活的那个动词往往藏在后面的从句里。
"本文将介绍……"这类开场属于同类问题:它描述文档自身,不描述世界。读者的第一屏应该出现判断,而不是目录。
2. 首句必须承载判断,结论不超过三个
一段话的信息量集中在首句。首句给判断,后文是支撑;首句给铺垫,整段都在等结论。同一个意思的两种写法,密度差在扫描效率上:
// 低密度:首句是过程,结论在第三句以后
这次改造我们先后尝试了几种不同的方案,经过与相关同学的讨论和评估,
在考虑了实现成本与迁移风险之后,最终决定采用异步补偿的方式,
因为它可以避免同步路径上的排队。
// 高密度:首句是判断,后文只补代价与边界
采用异步补偿,接受秒级状态延迟。理由是同步路径在峰值写入下会排队,
而业务允许状态晚几秒可见;代价是新增一张补偿表与一个定时任务。
若业务改为要求实时一致,此结论作废。
差别不在字数,在读者读到第几个字能拿到判断。技术文档的读者是扫描而不是阅读:他先扫小标题,再扫每段首句,只有命中才往下读。所以首句不承载判断,等于这段在扫描阶段就被跳过了。
结论前置,且不超过三个
结论前置不是为了显得干脆,是因为扫描式阅读只在前 20% 停留。但前置有个副作用:结论一多,前置就失效。
| 结论数量 | 读者实际记住的 | 效果 |
|---|---|---|
| 1 | 1 | 可被引用、可被传达 |
| 2–3 | 1–2 | 需要读者自己排序 |
| 4 以上 | 0–1,通常是最后一条 | 等于没有结论 |
超过三个结论时,正确做法不是压缩表达,而是分层:把最重要的一个提到最前,其余降为支撑该结论的依据。三个以上并列的"要点",通常说明作者还没决定哪个最重要。
"给领导看的一页"不是三千字压缩成三百字,是另一篇文章。压缩版会保留原文的结构与顺序,于是把最该删的论证过程也带了过去:
// 一页纸只回答四个问题,机制解释一律不进这一页
决定什么:选 B(异步补偿),放弃 A 的强一致
为什么现在决定:峰值写入已到同步路径的排队区间 // 按最近一次压测口径核对
代价与谁承担:状态延迟到秒级,客服侧需要话术更新
不要什么:不要新的中间件,不引入跨机房依赖
3. 结构化载体与举例,各有假密度风险
| 载体 | 密度收益 | 风险 | 适用内容 |
|---|---|---|---|
| 表格 | 高,同维度可并列比较 | 单元格太短,判断被削成标签 | 选项对比、参数矩阵、责任划分 |
| 列表 | 中高,条数可数 | 无序列表暗示各项等价 | 并列条件、检查项 |
| 代码块 | 高,可复制执行 | 版本漂移后失真 | 命令、配置、契约片段 |
| 段落 | 低,但能承载因果 | 容易滑成铺垫 | 机制解释、代价推理 |
表格最容易产生一种假密度:看起来信息很多,实际上把判断压成了两个字。"性能:好/中/差"这样的单元格,读者拿不到任何可用的东西。表格里每一格应当回答一个具体问题,而不是给出评价。代码块的风险在另一头:密度高、可直接执行,但版本一换就失真,而没有人会去核对一段被信任的代码。
举例的成本:多数例子只证明了定义
例子占篇幅,收益却不均等。判断标准是:删掉例子,读者会不会误解。不会,就是装饰。
// 例子的三种用途,只有第一种值得占篇幅
1. 反例:证明"不做 X 会怎样"——有判断价值,保留
2. 边界例:证明"条件变化后结论失效"——有判断价值,保留
3. 释义例:把定义换个说法再说一遍——无判断价值,删掉
一个具体的量:一篇三千字的稿子里,释义例通常占三到五段。删掉它们不会让读者少知道任何事,只会让剩下的例子更显眼。
4. 删减有顺序,度量有口径
删减顺序影响结果:先删形容,再删过程,最后删背景。反过来做,会先砍掉唯一有信息量的那句。
// 删减四轮,每轮只做一件事,做完回读一遍
第 1 轮:删形容词与程度副词("非常""较为""一定程度")——不改变信息
第 2 轮:删过程叙述,只保留"为什么某个选项不成立"——保留判据,删掉路径
第 3 轮:删背景铺垫,把其中真正的约束改写成一句条件——约束留下,情境删掉
第 4 轮:删重复出现的同一结论——同一件事全文只说一次,其余改为引用
// 停手条件:再删一句,读者就需要额外信息才能执行或判断
| 指标 | 口径 | 异常信号 |
|---|---|---|
| 密度自检 | 逐段问"删掉会少知道什么",答不出的段数占比 | 超过三成 |
| 删减后保留率 | 定稿字数 / 初稿字数 | 接近 1.0,说明没删过 |
| 读者提问类型 | 问"结论是什么"还是问"依据是什么" | 前者多,说明结论没前置 |
| 阅读完成率 | 滚动到底或翻到末页的比例 | 前 20% 后陡降,说明铺垫过长 |
| 首句命中率 | 停留段落中首句含判断的比例 | 停留集中在无判断的段落 |
复检可以半自动化:找出长度超阈值又没有任何数字、条件词的段落,它们几乎必然是铺垫:
// 密度粗筛:长段落 + 无数字 + 无约束词 → 高概率是铺垫
awk 'BEGIN{RS=""} length($0)>300 && $0 !~ /[0-9]/ && \
$0 !~ /(必须|不得|上限|下限|超过|低于|仅在)/ {print NR": "substr($0,1,60)}' DRAFT.md
// 命中不代表该删,但值得逐条回读;用 // 注释保留判断痕迹
准确与可读的冲突,通常不是二选一,而是把限定条件从句子中间挪到句尾或独立成句:主干给判断,限定跟在后面。读者先拿到能用的结论,需要精度时再往下读。
引用与链接是唯一"增密度"的手段:一句"按某个官方文档的字段语义核对",把一大段解释换成一个可核对的指针,既省篇幅又提高可信度。前提是指针要具体到版本或章节,否则等于把不确定性转嫁给读者。引用还有一个附带收益:它把"我确认过"变成"你可以自己去确认",而这正是技术文档最难自证的部分。
5. 排错:五种"写了很多但没人读完"的现场
| 现象 | 真实原因 | 处理方向 |
|---|---|---|
| 读者只读开头就提问 | 结论埋在文中 | 首句改判断,依据后置 |
| 全文读完仍说不出要点 | 结论超过三个且并列 | 收敛到一个,其余降为依据 |
| 评审说"太长了" | 铺垫与过程占比过高 | 按四轮删减顺序处理 |
| 表格很多但没人引用 | 单元格是评价不是事实 | 换成可核对的量或条件 |
| 半年后自己看不懂 | 删减时把约束一起删了 | 约束必须留,情境可以删 |
6. 边界:什么时候高密度不是目标
| 情形 | 密度应让位于 | 理由 |
|---|---|---|
| 教程与操作手册 | 可执行性与验证点 | 步骤缺失会让读者卡住 |
| 事故复盘 | 时间线与因果链 | 密度压缩会抹掉发现顺序 |
| 面向新人的入门文 | 必要铺垫与名词解释 | 缺前置等于不可读 |
| 决策记录 | 当时的约束与备选 | 后人要靠它重建语境 |
| 对外说明与公告 | 可读性与情绪边界 | 读者不是同行 |
一句话收口:密度不是"写得短",是"每一段都在承担一个读者需要的东西"。删到再删一句读者就无法执行或判断时,就是该停的地方。
自测
- 密度的判据为什么是"删掉会不会少知道一件事",而不是字数或信息条数?
- 四种低密度写法里,哪一种最难自查,为什么?
- 首句承载判断,对扫描式阅读的具体作用是什么?
- 表格在什么情况下会产生"假密度"?
- 结论超过三个时,正确做法为什么是分层而不是压缩?
- "给领导看的一页"与"原文的压缩版"差在哪一步?