先问你一个问题:你上一次因为“这库真顺手、文档真好、五分钟就能跑起来”而选了它,然后在半年后花三倍时间绕出它的坑,是什么时候?
如果这个问题让你心头一紧,那这场演讲就是为你准备的。《Simple Made Easy》,Clojure 之父 Rich Hickey 在 2011 年 Strange Loop 大会上的主题演讲,约 50 分钟。十几年过去,它依然是程序员圈子里被反复引用最多的演讲之一——Strange Loop 大会本身已于 2023 年停办,但这场演讲的热度不减反增。
它讲的事情听起来朴素得可疑:分清“简单”(simple)和“容易”(easy)这两个词。但你往下看就会发现,几乎所有让团队痛不欲生的代码库、让架构师彻夜难眠的老系统,病根都是把这两个词混为一谈了。
放在 2026 年看,它多了一层新意味:AI 生成代码让“生产代码”变得空前容易——一行提示就出一段能跑的实现。当 easy 的供给无限放大,simple 的纪律反而成了最稀缺的东西。这正是今天重读这场演讲的价值。
| 项目 | 内容 |
|---|---|
| 视频标题 | Simple Made Easy |
| 频道 | Strange Loop(大会官方频道) |
| 演讲者 | Rich Hickey(Clojure 语言之父) |
| 时长 | 约50分钟 |
| 播放量 | 百万级(具体以视频页面实时数据为准) |
| 发布年份 | 2011年(Strange Loop 大会) |
| 核心主题 | 区分 simple 与 easy,把“复杂度”当作工程的第一敌人 |
Hickey 的开场不是讲道理,而是抠词。easy 的词源是拉丁语 adjacens,意思是“躺在近旁”——顺手、熟悉、触手可及。所以 easy 本质上是一种主观感受:对这个程序员、此刻、这台机器来说容易。而 simple 的词源是 sim-plex,"一个褶"——只有一股、没有缠绕,是一种客观属性:一个东西本身结构如何,与你熟不熟它毫无关系。(以上为视频原话大意)
这两个词被混用的后果是灾难性的:我们用“用起来容易”这个主观坐标系,去评判“设计简单”这个客观坐标系,等于拿体温计量身高。
延伸分析:这个区分在今天有个很好的类比——交互成本和认知负荷是两回事。ATM 机人人会操作(easy),不代表它的内部电路简单(simple);反过来,一个设计得极简的命令行工具可能上手劝退新手,但结构上一目了然。选型时如果你只测了前者的手感,后者的账迟早要还。
整场演讲最核心的自造词是 complect(编织、缠绕):把本该独立的东西编在一起。Hickey 论断,软件复杂度的来源几乎都可以归结为这种缠绕——认证逻辑缠进业务逻辑、配置缠进代码、状态缠进流程、界面缠进数据。(视频原话大意)
缠绕最阴险的地方在于:编上去很容易,解开来极难。每一根线当初都有理由,所以每次重构都会有人问“当初为什么要拆开”。
延伸分析:十年后,斯坦福教授 John Ousterhout 在《A Philosophy of Software Design》里把复杂度定义为“依赖 + 晦涩”——依赖就是缠绕,晦涩就是缠绕看不见。相隔十年、语言立场完全不同的两个人,指向了同一个敌人,这基本可以视为工程界的共识收敛。另外值得一提:architecture(架构)的希腊语本义就是“先分再合”——先切分清楚,才谈得上组装。不切分直接组装的,不叫架构,叫打结。
演讲中段,Hickey 把矛头对准了面向对象编程最日常的构件:可变对象。他的诊断是,一个典型的可变对象把四样东西缠在了一起——值(它是什么)、身份(它是谁)、状态(它现在怎样)、时间(它何时变的)。(视频观点)
你调用一个 setter,改的到底是这个对象的身份,还是它的值?值是在哪一刻变的?时间被藏进了赋值语句里,没有人能回答“系统在 t1 时刻是什么样子”。并发 bug 的温床,正是在这里埋下的。
延伸分析:2011 年这套说法听上去近乎异端,如今已经是行业常识的组成部分——React/Redux 把“状态不可变”写进了规范,Java 补上了 record 类型,Rust 的所有权系统干脆把可变性交给编译器在编译期管死,数据库的 MVCC 多版本并发控制也是同一个思想的工业实现。回头看,Hickey 不是在为一个冷门语言布道,他是提前十年讲出了行业终局。这也是判断一场演讲成色的标准:看它的观点是被时间反驳,还是被时间追认。
全场最有争议的一段来了。Hickey 提出正确性可以靠 tests(测试)守护(大意):如果你的构件足够简单——不可变数据、纯函数——测试就能覆盖绝大多数路径,静态类型并不是免死金牌;而且类型系统本身也会 complect,泛型套泛型的签名谁读谁头疼。(视频观点,属其个人立场)
延伸分析:这是十余年来被争论最多的一部分,Haskell、Scala 社区多有反驳,而 TypeScript 和 Rust 在工业界的巨大成功也确实证明了类型可以是生产力而非负担。但我建议读者别急着站队:Hickey 反对的从来不是类型,而是用类型的复杂度去解决本可避免的复杂度——如果你已经用不可变性和纯函数把问题削薄了,类型就是锦上添花;如果你指望类型系统兜住一团乱麻,那是在给打结的线团再编一层辫子。正确的读法是光谱,不是二分。
面对"解耦"这个老话题,Hickey 给出的答案是 polymorphism a la carte——多态按需取用,像点菜一样。(视频原话大意)你需要一个抽象,就取用这一层抽象,而不是把整个继承树、整个框架连同它的世界观一起搬回家。继承树在他的框架里是典型的 complecting:把一串决策编进一条血缘里,祖类改一行,满门连坐。
延伸分析:这套哲学后来在多个生态里开花——Go 的隐式接口(不需要声明实现,行为对上就算数)、Clojure 的 protocol、前端从 class 组件转向 hooks 组合,本质上都是“组合优于继承、抽象按需取用”的落地。你甚至可以用它来审视现在的 AI 时代依赖症:引入一个 Agent 框架时,你是点了它菜单上的一道菜,还是把整个厨房连同燃气管道搬进了你家?
演讲的落点是一张好处清单:simple 的构件带来更易懂、易改、易测、易调试、易并行的系统——而且注意,对程序和团队同时成立。(视频原话大意)既然好处这么明白,为什么大家不照做?因为收益的时间曲线不同:easy 的好处当下兑现(今天就能跑通),simple 的好处延迟兑现(半年后改需求时才显现),人性天然选前者。
所以 Hickey 甩出了整场演讲最狠的一句话(大意):“程序员对一切的好处了如指掌,对一切代价一无所知。”(Programmers know the benefits of everything and the downsides of nothing.)选择 simple 意味着主动放弃那些躺在手边的工具——全局变量、深继承、共享可变状态——这是一种需要纪律的工程决策,不是一种顺手就能获得的感受。
flowchart TD
A["Simple vs Easy<br/>程序员的分水岭"] --> B["Easy<br/>手边 熟悉 好上手"]
A --> C["Simple<br/>单一 不缠绕 客观"]
B --> D["可变对象<br/>值 身份 状态 时间四合一"]
B --> E["继承体系<br/>决策被编成辫子"]
B --> F["共享可变状态<br/>改一行牵全身"]
C --> G["不可变数据<br/>值随时间新生"]
C --> H["纯函数<br/>同输入必同输出"]
C --> I["按需多态<br/>Protocol点菜"]
D --> J["半年后的维护噩梦"]
E --> J
F --> J
G --> K["易读 易测 易改 易并行"]
H --> K
I --> K
1. 代码评审三问。下次 review 时,把“这代码好不好看”换成三个更狠的问题:这段代码把哪几件事缠在一起了?这里的状态谁能改、什么时候改的、能不能不改?这个抽象是点菜式的,还是让我连厨房一起搬?三个问题里任何一个答不清楚,就值得停下来讨论——这比争论命名风格有效十倍。
2. 技术选型换一把尺。把“上手快”从中性偏加分项,降级为纯中性项,然后追问一句:它把哪些概念耦合死了?出坑的成本是多少?一个周末能跑通 demo、但把你的业务模型焊死进它世界观里的框架,和一个文档糟糕但边界清晰的选择,十年老手会选后者。
3. 默认不可变,状态圈禁。新代码从纯函数写起,把可变状态圈进尽可能小的范围,最后再谈性能优化。这个顺序反过来,就是绝大多数遗留系统的诞生史。
4. 给 AI 时代的自己提个醒。当生成代码的成本趋近于零,“能跑起来”不再构成质量证据。AI 特别擅长生产 easy 的代码——每一段都顺手、都合理、都来自训练语料里的常见写法——但把几十段 easy 缝在一起的工作,仍然属于人类。简单性的判断力,是接下来几年程序员最值钱的手艺之一。
5. 团队规范可以先立三条:继承层级超过一层需要说明理由;禁止在业务逻辑里内联基础设施调用(认证、重试、日志);新增全局可变状态需要评审。三条都不难守,守住了,你的代码库就已经跑赢了大多数。
好上手决定你今天跑多快,够简单决定你三年后还跑不跑得动——这场演讲用 50 分钟教你分清这两件事,而大多数人用整个职业生涯都没分清。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
