奥卡姆剃刀与汉隆剃刀:两个最锋利的思维简化器
世界已经够复杂了——不要用不必要的假设和恶意归因让它更复杂。这两个"剃刀"帮你砍掉那些不必要的、让你误入歧途的解释。
**预计时间:**20 分钟读完 + 25 分钟做练习 = 45 分钟。
一、奥卡姆剃刀:如无必要,勿增实体
1.1 核心是什么
奥卡姆剃刀(Ockham’s Razor)是 14 世纪逻辑学家奥卡姆的威廉提出的方法论原则:“Entities should not be multiplied without necessity.”(如无必要,勿增实体。)
放在今天的工作情境中就是:如果你有两个都能解释同样现象的理论,选择假设更少的那个。
1.2 常见误解
| 误解 | 真相 |
|---|---|
| ”最简单的解释总是正确的” | 奥卡姆剃刀没说”总是正确”——它说”如果不是必要,不要增加额外的假设”。简单的解释可能错,但复杂的解释需要更多的假设来支持 |
| ”奥卡姆剃刀反对复杂性” | 不是反对复杂性——是反对不必要的复杂性。当证据需要时,复杂的解释完全合理 |
| ”奥卡姆剃刀在科学和工程中不适用” | 恰恰相反——它是科学研究的基本原则(在足够多的证据前,先假设最简单的模型) |
1.3 工作中的奥卡姆剃刀
- 架构设计:能不引入新框架就别引入。“这个功能用现有的工具就能实现” vs “我们再引入一个消息队列”——优先选择假设更少的方案
- Bug 排查:排查 Bug 时,先排除最简单的可能(配置错误、缓存未清理、网络问题),再往复杂的推测(框架 Bug、编译器问题、硬件故障)
- 需求分析:用户说”需要一个导出功能”——最简单的解释是”用户想导出数据”;复杂的解释是”用户的数据管理工作流程出了问题,导出只是他想到的解决方案之一”
二、汉隆剃刀:能用愚蠢解释的,不要归咎于恶意
2.1 核心是什么
汉隆剃刀(Hanlon’s Razor)的常见表述是:“Never attribute to malice that which is adequately explained by stupidity.”(能用愚蠢解释的,不要归咎于恶意。)
更温和的表述是:如果一个人做了对你不利的事,先不要假设他是恶意的——更可能的是他疏忽了、没考虑到、或者信息不全面。
2.2 更新版:汉隆剃刀 2.0
现代版本把”stupidity”替换为”ignorance / error / oversight”: 大多数时候,别人不是故意伤害你——他们只是没注意到、没想到、或者犯了个常见的错误。
2.3 工作中的汉隆剃刀
- 同事 delay 了给 your 的接口 → 先假设他太忙了(不是故意卡你)
- 需求文档有歧义 → 先假设 PM 没写清楚(不是故意坑你)
- 业务方临时改需求 → 先假设他们自己也刚意识到问题(不是故意折腾你)
- 用户用错了功能 → 先假设 UI 不够直观(不是用户蠢)
三、两个剃刀的协同使用
| 场景 | 奥卡姆剃刀 | 汉隆剃刀 |
|---|---|---|
| 同事没回邮件 | 最简单的解释:他太忙/漏看了 | 不是故意忽略你 |
| 线上出了 Bug | 先查配置错误/缓存问题(最简单的可能性),再查更复杂的代码逻辑 | 先假设是疏忽,不是有人故意破坏 |
| 竞品推出了相似功能 | 最简单的解释:用户需求相同,他们做了同样的事 | 先假设是正常竞争,不是专门针对你 |
| 业务方提出不合理需求 | 最简单的解释:他们没理解技术成本 | 先假设是认知差距,不是存心刁难 |
四、实战案例
4.1 案例 1:奥卡姆剃刀在系统设计中的应用
团队在设计一个文件处理服务。初步方案是”用消息队列解耦 + 分布式文件存储 + 微服务架构”。用奥卡姆剃刀审视:
- 核心功能只是”接收文件 → 处理 → 存储结果”
- 真的需要消息队列吗?如果目前每小时只有 100 个请求——不需要。一个简单的同步处理+异步回调就够了
- 真的需要分布式文件存储吗?单个 MySQL 存储 + 本地文件就够了(未来不够再迁移)
- 结果:减少了一个消息队列和分布式存储系统的维护负担——用最简单的架构上线,等需要时再进化
4.2 案例 2:汉隆剃刀解决团队冲突
A 团队上线了一个功能,破坏了 B 团队的接口。B 团队很生气:“A 团队就是不顾别人死活!”
用汉隆剃刀:先假设 A 团队不是故意的——他们可能:
- 不知道这个接口被 B 团队使用(信息差)
- 上线流程中没有通知相关方的步骤(流程遗漏)
- 测试环境没有覆盖到这个场景(测试覆盖不足)
解法:建立跨团队接口变更通知机制 + 上线前影响范围检查。问题不在于”恶意”,而在于”流程遗漏”。
4.3 案例 3:奥卡姆 + 汉隆 联合使用
用户反馈:上传 Excel 文件后一直显示”正在处理”——没有结果也没有错误提示。
- 奥卡姆:最简单的可能原因是什么?文件太大处理超时了。上服务器看看日志——果然是 30 秒超时,文件处理需要 45 秒
- 汉隆:不是前端开发故意不做错误提示——最可能是”他们没想到文件会处理这么久”——即超时场景没有在产品/设计阶段被考虑到
修复:(1) 增加超时时间;(2) 增加前端进度提示(让用户知道系统还在处理);(3) 在流程中增加”长耗时操作”的 UX 规范(后续预防)。
五、测验(12 题)
奥卡姆剃刀的核心主张是?
汉隆剃刀的核心主张是?
排 Bug 时,为什么奥卡姆剃刀有用?
汉隆剃刀的现代版本把"stupidity"替换为?
同事突然改了一个接口签名,没有通知你——汉隆剃刀下的正确反应是?
"用户反馈说 App 无法登录"——奥卡姆剃刀下第一步查什么?
汉隆剃刀的正确使用边界是?
奥卡姆剃刀在架构设计中的正确使用方式是?
"竞品上线了这个功能 → 他们是故意抄我们的!"——奥卡姆+汉隆下分析?
两个剃刀的共同本质是?
场景题
R1. 场景:你发现生产环境某个接口的响应时间突然从 100ms 变成了 5s。奥卡姆剃刀下你的排查顺序是?
R2. 场景:跨部门合作项目中,对方部门一直拖延交付。你的团队有些人认为"他们就是不想做这个项目"。汉隆剃刀下你怎么分析?
六、答题提示
展开提示
- Q1-3 两个剃刀都是”假设管理”工具——不是绝对真理。
- Q4-5 汉隆剃刀的核心是”排除无心之失”——这是沟通中的巨大时间节省器。
- Q6-7 排错和排查从最简单的可能性开始(也是一种奥卡姆)。
- Q8-10 架构设计中的奥卡姆 = “你当前真的需要这个复杂度吗?”
- R1-R2 两个场景都展示了”先排除简单原因,再考虑复杂/恶意原因”的价值。
七、本课行动清单
- 今天起,每次遇到”别人为什么这么做”的问题,先用汉隆剃刀过滤——“有没有可能是他疏忽了/没考虑到?”
- 做技术方案时,写完第一版后过一个”奥卡姆审查”:每个组件和抽象是不是都是必要的?有没有能删掉的?
- 排 Bug 时,强制自己先列 3 个”最简单的可能原因”并排除它们——再深入复杂的排查。
- 在团队里推广这两个剃刀:减少”阴谋论”和”过度设计”。
八、参考来源
- ② 经典:Occam’s Razor(奥卡姆的威廉,14 世纪)——中世纪哲学原则,至今仍是科学方法论基石
- ③ 严肃著作:Robert Heinlein,《The Moon is a Harsh Mistress》——汉隆剃刀的常见出处之一
- ③ 严肃著作:John Z. Sadler,《On Hanlon’s Razor》——关于汉隆剃刀的现代哲学分析
- ④ 实用读物:Carl Sagan,《The Demon-Haunted World》——科学思维中的”剃刀”原则
**下一步:**看 Lesson 0011 · 康威定律(进入 Part 3)。