有人说,做自己喜欢的事情是一种奢侈品。在生存阶段、在竞争阶段,你哪有选择?我以前也持类似的看法。直到最近重读休谟,发现他在 300 年前已经把这个问题最严肃的那一层写下来了——而把它翻译成今天软件工程师熟悉的语言,整件事会变得格外清晰。

休谟说的那句话

休谟(David Hume,1711—1776)在《人性论》(A Treatise of Human Nature, 1739)第二卷里写过一句被反复引用、又被反复忽视的话:

Reason is, and ought only to be, the slave of the passions.

理性是、也应当是激情的奴隶。

David Hume by Allan Ramsay, 1754
大卫·休谟(David Hume, 1711—1776)——苏格兰启蒙运动代表人物,著有《人性论》《人类理智研究》《英国史》等。"理性是激情的奴隶"出自《人性论》第二卷第三部分第三节。图为 Allan Ramsay 1754 年所绘肖像。

这里的”激情”(passions)不是中文语感里的”激情澎湃”,更接近今天说的情感、欲望、动机——一切让你想要、想避开、想靠近、想离开的东西。他要表达的核心论点有三层:

  1. 理性本身不能驱动行为。 理性可以告诉你 A 推出 B、B 推出 C,但它不能告诉你你”应该”要 C。
  2. 真正的驱动力来自情感。 你之所以采取某个行动,是因为你想要某个东西,而”想要”本身不是理性产生的。
  3. 理性只是帮情感找到路径。 它的工作是——一旦目标给定,找到达成目标的手段。

为了把这一点推到极端,休谟在同一节给了一个让人不舒服但极其精确的例子:

‘Tis not contrary to reason to prefer the destruction of the whole world to the scratching of my finger.

宁愿世界毁灭也不愿弄伤自己的手指,这并不违反理性。

这句话乍看像在为冷漠辩护,其实只是在做一个非常干净的区分:选择本身不归理性管。 理性只能判断手段是否有效,判断不了一个目标是否”应该”。“想要什么”必须先有,理性才有事情可做。

A Treatise of Human Nature, 1739 first edition title page
《人性论》1739 年初版扉页(伦敦 John Noon 出版)。这本书在休谟生前几乎没有读者,他后来自嘲说它"从印刷机里就胎死腹中了"(fell dead-born from the press)。"理性是激情的奴隶"这一论断,是其中第二卷最具杀伤力的命题。

用计算机的语言重读

我是软件出身,每次重读这段都忍不住要把它翻译成更熟悉的语言。最贴合的类比是这样的:

  1. 情感是机器指令集,是 CPU 真正能执行的东西。 你饿了想吃、累了想睡、看见喜欢的人想靠近——这些不是”决定”出来的,而是底层硬件直接触发的。
  2. 理性是高级语言。 你用 C++、Python、TypeScript 写的代码,CPU 并不直接执行,必须先编译成机器指令才能跑。一段理性的推理也一样——它最终必须落到”你在乎什么”上才能跑得起来。

这里有一个特别重要的推论:任何理性论证,要让你真正去行动,都必须在某一步连接到你已有的情感。 连不上,再严密的逻辑也只是 PDF 里的字。

「你应该早睡,对身体好。」——一段完美的高级语言代码。CPU 不执行它。

「我明天有想见的人,第一次见就因为黑眼圈崩掉太丢脸了,我讨厌丢脸。」——一段带着情感锚点的代码。CPU 执行它。

差别不在语义,而在能不能编译到底层。

理性 / 编译 / 情感 的对应关系
从理性到行为,必须经过一次"编译"——把高层的推理翻译成底层情感能识别的指令。任何卡在中间的论证,都不会真的被执行。

好系统长什么样

这个类比真正有意思的地方在下面这一步。

一个好的软件系统是怎么实现的?大概可以拆成三步:

  1. 先用高级语言把整个系统搭出来。 C++、Python、TypeScript,怎么舒服怎么来,重点是结构清晰、易演化、可维护。这部分代码占了 95% 的代码量。
  2. 然后 profile。 跑一遍,看谁最慢,找出热点(hot path)。通常会发现一个反直觉的规律:5% 的代码消耗了 95% 的执行时间——某个内层循环、某条序列化路径、某次矩阵乘法。
  3. 那 5% 手工优化到贴着硬件跑。 必要时直接写 intrinsics、SIMD,甚至重排数据布局让它对 CPU 缓存友好。剩下 95% 不去碰——清晰最重要。

结果就是一种很不对称的形状:冷代码保证清晰和灵活,热代码保证效率。

反过来想想就明白为什么不能反过来:

  • 如果整套系统都用汇编写,你会得到一个又快又脆、改不动也跑不远的怪物。
  • 如果热路径还停留在 Python 的 for 循环里,理论上一切都”正确”,但每秒只能处理一百条数据,谁都受不了。

工程上没有什么哲学含义,但形状本身已经足够强:框架在高层、热点在底层;冷地方要灵活,热地方要贴硬件。

人生也是这样的系统

把同样的架构搬到生活上——

用理性构建大框架,用热爱驱动高频日常。

理性管的是低频、长期、结构性的决策:

  • 做哪个行业
  • 住在哪个城市
  • 和谁结婚、和谁共事
  • 把钱投到哪里
  • 五年之后想成为什么样的人

这些决策一辈子也就十几次,每一次都极重,需要冷静的、有时反直觉的推理。这是冷代码的部分——清晰、灵活、可解释。不需要你”喜欢”做这件事的过程,只需要在做选择的那一刻足够清醒。

热爱管的是高频、日常、嵌进每一个小时的事情:

  • 每天醒来后真正去做的工作
  • 吃什么、和谁吃
  • 锻炼、阅读、玩什么
  • 跟家人、朋友、伴侣的相处方式

这些事情每天都在跑。如果它们没有由你真正在意的东西驱动,就等于用 Python 跑 inner loop——技术上没错,但每一秒钟都在折旧你的能量。

冷代码与热代码 / 大框架与高频日常
程序的形状和人生的形状是同一种形状:用高层(理性)写大框架,用底层(热爱)跑热路径。冷的部分保留清晰和灵活,热的部分追求贴着硬件跑。

错配的代价

把这个模型反着用一遍,可以解释很多”看起来很奇怪”的现象。

错配方向一:用理性硬撑高频热路径。

很多人选择了一份”看起来很对”但自己并不喜欢的工作,然后每天靠”我应该”撑下去。从软件视角看,这等于热路径上跑的是没编译过的高级语言——理性可以下指令,但 CPU 执行起来极慢,每一天都在消耗大量”算力”,仅仅为了完成本该自然发生的动作。

10 年下来,2 万小时的工作时间,每一小时都是高摩擦的。最后压垮人的,往往不是工作本身的难度,而是”硬撑”这件事本身。

错配方向二:用情感驱动低频结构决策。

反过来也是一种错配。看见喜欢的人就立刻同居、跟着情绪冲动跳槽、被一次饭局上的兴奋说服把全部身家押进一个项目——这是把人生最重的决策交给了高度局部、波动剧烈的情感信号。

冷代码的特点就是它必须在”非热”的状态下被推理。结构性决策需要的是情绪平静时的我做出的判断,而不是情绪高昂时的我做出的判断。情感在这里要被认真听见,但不能直接执行。

一旦把激情接到了本该是理性的决策上,就像把一根没有缓冲的电源直接焊到了主板上——平时也许还好,一遇到电压波动就烧穿。

为什么”做你喜欢的事”是一种工程要求

所以”做自己喜欢的事”这句话,其实可以从浪漫主义里拆出来——它不是一句心灵鸡汤,而是一种对系统效率的工程要求

理由非常硬核:

  1. 高频路径必须贴硬件。 你每天要执行几万次的动作,必须在底层就被支持。底层在人这里就是情感。
  2. 用理性持续维持情感不支持的行为,能量损耗是巨大的。 长期下来,会发生意志枯竭、情绪麻木、慢性疲倦——本质上是 CPU 在不停地”软件模拟”硬件不支持的指令。
  3. 而热爱驱动的高频行为,会复利。 你越做越想做,越想做越做得好——这是一个正反馈循环,正是软件里”hot path 被反复优化”的那种结构。冷代码上的修改增量很小,热代码上的优化是非线性的。

把这三条放在一起,“做你喜欢的事”就不再是一种私人偏好,而是一种几乎不可避免的、关于系统怎么才能长期跑下去的物理事实。

结语

如果一定要给这套模型一句最短的总结:

让理性管你十年一次的选择,让热爱管你每天一次的行动。

休谟在 1739 年的英文,配上 21 世纪的编译器视角,居然指向同一个建议——做你喜欢的事不是奢侈品,不是浪漫主义,而是一个良好系统的必要条件。冷代码用脑子写,热代码贴着硬件跑。

你的人生是一段会运行 70 年的程序。它值得被认真优化。