一个工程师读了三个月的源码,能对着同事流畅讲解整条链路。轮到他写一份设计说明时,写到第三节卡住了——他发现有个分支自己从来没想清楚,而口头讲解时正好跳过了它。写的过程暴露了这个洞,讲的过程掩盖了它。
这是"输出"最本质的作用:它不是学习的记录,而是检验。讲可以说得通顺,写必须连贯;通顺允许跳跃,连贯不允许。所以输出质量的差别,本质上是被检验的严格程度不同。
1. 输出的四档规格
| 档位 | 形式 | 检验强度 |
|---|---|---|
| 想清楚 | 自述、笔记 | 最低(自己审) |
| 说出来 | 讲解、讨论 | 低(听者会补全) |
| 写下来 | 文档、说明 | 中(逻辑必须自洽) |
| 做出来 | 代码、可运行示例 | 高(现实会反驳) |
第二档最容易被高估:听者的提问会帮你补上漏洞,于是你以为自己想清楚了。第三档开始没有这种补贴——读者不在场,跳跃的地方会变成读不懂的地方。
四档之间还有一条"成本递增":自述几乎免费,可运行示例代价最高。所以选择档位不是"越高越好",而是"按这件事的重要性选最低够用档"——重要判断要走到"写下来",可复用的机制才值得走到"做出来"。
第四档最高,因为现实不接受解释:代码跑不通就是跑不通。
2. 写不清楚的三个真实原因
| 原因 | 表现 |
|---|---|
| 概念没有边界 | 同一个词在两段里指不同东西 |
| 因果链有跳步 | "因此"前后不成立 |
| 缺少反例 | 只有正面陈述,读者无法判断适用范围 |
第二项(因果跳步)有一个很实用的自查方式:在每个"因此"处,试着把它展开成完整的三段论。多数跳步在展开时会发现中间少了一个前提,而那个前提往往正是"我没验证过的假设"。
// 把"因此"展开:跳步会立刻暴露
原句:队列积压了,因此要加消费者。
展开:队列积压 → 消费速度 < 生产速度 → 加消费者能提高消费速度
断点:若消费速度受限于下游数据库,加消费者不会提高速度
// 展开后发现的"假设":消费端不是瓶颈
第一项是最常见的写作困难:不是语言能力不行,是概念本身没有定义清楚。写到第三段不得不重新定义时,问题就暴露了。
第三项最容易被跳过:只说"应该这样做",读者就不知道什么时候不该这么做,而这正是经验的核心。
// 一段可检验的说明应包含四句
1. 是什么(定义,含边界)
2. 为什么(机制)
3. 什么时候不适用(反例/边界)
4. 怎么验证(可观测的判据)
// 缺第 3 句 → 会被误用到不成立的场景
// 缺第 4 句 → 无法判断是否已做到
3. 输出的三种用途
| 用途 | 要求 |
|---|---|
| 给别人看(协作) | 完整、无前置知识假设 |
| 给自己看(复盘) | 结论 + 当时依据 |
| 给未来看(决策) | 取舍与条件 |
三种用途对"详略"的要求恰好相反:给别人看要写到零前置知识,给自己看要写到能推翻自己,给未来看要写到能判断适用条件。用同一种写法应付三种用途,必然有一边失效。
第二项常被低估:给自己写的输出如果只记结论,三个月后等于没有。因为结论脱离了当时的信息条件,无法复用也无法推翻。
第三项对应决策记录:这类输出的价值集中在"为什么不选另一个",而这一句最容易被省略。
4. 写作即检验:三个可操作的动作
| 动作 | 检验什么 |
|---|---|
| 先写目录再写正文 | 结构是否有洞 |
| 每节写一句"读者可能的反对" | 论证是否完整 |
| 找一个人按文操作 | 是否真的可执行 |
第一项的收益出奇地高:目录写不出来,说明还没想清楚有几块;而目录写得出来但某一节写不下去,说明那一块是空的。
第二项(写"读者可能的反对")看起来多余,实际是最省时间的动作:在写之前就列出三条反对,往往有三成会改变结论。写完之后再想反对,你已经站在自己的论证里了。
// 写之前的"三条反对"模板
反对 1:这个结论在我的场景里成立吗?(场景边界)
反对 2:有没有更简单的做法能达到同样目的?(代价比较)
反对 3:如果前提不成立,结论会怎样?(失效方向)
// 三条里有一条答不上来 → 先补,别急着写
第三项是最终检验:让别人照着做,看他卡在哪一步。卡住的地方就是文中隐含了"读者应该已经知道"的东西。
// 文档自检的四问(写完先自己过一遍)
1. 有没有一个词在文中指两种东西?
2. 每个"因此"能否还原成"因为…所以…"?
3. 有没有一段在说"什么时候不适用"?
4. 读者照着做,能不能判断自己成功了?
5. 输出与输入的配比
| 阶段 | 建议配比(读 : 写) |
|---|---|
| 入门期 | 8 : 2 |
| 熟练期 | 5 : 5 |
| 深入期 | 3 : 7 |
| 教学期 | 2 : 8 |
这个配比不是纪律,而是收益递减的体现:读得越多,边际信息越少;写得越多,暴露的洞越多。所以在某一领域待久了却不输出,进步会明显放缓。
配比还要看"输出是否被外部检验":给自己写的笔记永远是低强度检验。真正推动进步的是被别人读、被现实跑、被同事反驳的那部分输出。
// 检验强度的三个来源(按强度排序)
1. 现实反驳:代码跑不通、方案上线失败
2. 他人反驳:评审被问住、读者看不懂
3. 自己反驳:写下反对意见后自行推翻
// 只有 3 而没有 1、2 → 容易陷入自我确认
从 5:5 到 3:7 的转折点通常是"能独立判断对错"之后——此时继续读的意义下降,因为大部分新内容你能预判。
6. 排错:五种"读了很多但说不清"
| 现象 | 成因 | 处理方向 |
|---|---|---|
| 能复述术语但讲不出机制 | 只读了结论 | 回去读实现或示例 |
| 讲得流畅但一写就卡 | 概念无边界 | 先定义再写 |
| 写的文档别人看不懂 | 隐含前置知识 | 找人按文操作 |
| 输出很多但没长进 | 只做低档输出(笔记) | 提到"写下来"档 |
| 反复读同一份材料 | 缺检验 | 换输出形式 |
与之相邻的一种是"只写给自己看":笔记越写越多,但从不被引用。判据很简单——半年内有没有人(包括自己)拿它解决过一个具体问题。
第四项是"勤奋型停滞"的典型:产出量很大,但检验强度一直在最低档。解法是把一部分笔记升级成"给别人看的说明"。
7. 边界:什么情况不必写
| 场景 | 为什么 | 做法 |
|---|---|---|
| 一次性操作(装个软件) | 不会复用 | 不写 |
| 已有权威文档覆盖 | 重复劳动 | 只记差异与坑 |
| 纯个人偏好 | 无他人价值 | 不写 |
| 正在快速变化的东西 | 写完就过期 | 记结论与判据 |
还有一条与"输出时机"有关的边界:不要等到"完全想清楚"再写。写作本身就是想清楚的手段,等想清楚再写,往往意味着永远不写。
// 输出节奏:三次写入,强度递增
初稿(30 分钟):只求覆盖结构,允许粗糙
修订(30 分钟):补边界与反例,删重复
检验(30 分钟):找人读或自己按文操作一遍
// 三轮合计 1.5 小时,产出一份可被引用的说明
判断口径一句话:这段理解会不会被我自己或别人再用一次。会,就写成可被引用的形式;不会,留在脑子里成本更低。
8. 自测
- 四档输出规格里,哪一档最容易被高估?为什么听者的存在会掩盖洞?
- "写不清楚"的三种原因里,哪一种不是语言问题?如何暴露它?
- 一段可检验的说明应当包含哪四句?缺第 3 句会造成什么后果?
- 为什么"找一个人按文操作"是最终检验?他卡住的地方说明什么?
- 读 : 写 的配比为什么会随阶段变化?从 5:5 到 3:7 的转折点是什么?
- 判断"是否值得写下来"的那个问题是什么?