# 吉姆·凯勒：摩尔定律、微处理器、抽象与第一性原理

> 芯片架构师凯勒谈摩尔定律的演变、微处理器设计、抽象层次的取舍，以及用第一性原理思考工程问题。

- 原标题：Jim Keller: Moore’s Law, Microprocessors, Abstractions, and First Principles
- 期数：特别节目
- 发布日期：2020-02-05
- 嘉宾 / 主题：吉姆·凯勒：芯片与第一性原理
- 网页版：https://lexfridman-cn.pages.dev/ep/jim-keller/
- 官方页面：https://lexfridman.com/jim-keller/
- 精读字数：约 9148 字（阅读约 20 分钟）

> 本文为 lex.qiaomu.ai 基于原始访谈的 AI 改写中文精读，非官方翻译；引用请注明出处并链接网页版。

吉姆·凯勒（Jim Keller）在芯片行业干了四十年。这几十年里，他听到最多的一句话是：摩尔定律快撑不住了。

三十年前就有人放话，说它还有十到十五年的寿命。十年后，这个数字变成还有十到十五年。再往后，有人说只剩五年了，过一阵又涨回十年。等他加入英特尔，同事告诉他摩尔定律已死。他的第一反应是有点遗憾，毕竟这是一家靠摩尔定律立身的公司。第二反应是：它从诞生那天起，就一直"快要死了"。

凯勒做过 AMD 的 K7、K8、Zen 架构，做过苹果的 A4、A5 处理器，是 x86-64 指令集和 HyperTransport 互联规范的共同作者。他在特斯拉负责过 Autopilot 的硬件，现在在英特尔。这期访谈表面上聊的是芯片，绕来绕去讲的其实是同一件事：怎么把一个复杂问题拆到不能再拆，再一层层搭回去。

## 大脑和电脑，现在还比不了

按凯勒的说法，计算机里只有两样东西：内存和计算。到今天为止，几乎所有计算机架构都是全局内存式的。程序把数据从内存里拉出来，做一组相对简单的运算，再写回去。取数和运算分开，互相解耦。

人脑不是这样。它一团乱，存储和计算揉在一起，没有清晰的功能分区。人观察到的是一层层神经元，有局部连接也有全局连接，信息以某种分布式的方式存着。人们照着这个思路在计算机里搭神经网络，也有数学在背后支撑，但凯勒不觉得这套理解已经很深。没有谁能指着一个神经元说，它完成了这样一个具体的计算。两边都还没搞明白，所以现在谈对比，纯属隔靴搔痒。

## 从原子到数据中心

计算机工程最迷人的地方，是它有一套相当清晰的抽象层级。

最底下是原子。原子拼成硅、金属这类材料，材料做出晶体管。晶体管往上搭出逻辑门。逻辑门再组合成功能单元，比如加法器、减法器、指令解析单元。功能单元放进处理器核心里，十几个核再拼成一台现代计算机，然后才是程序、汇编、C、C++、Java、JavaScript，一路到数据中心。

凯勒说，从原子到数据中心，每一层都能被单独拿出来讨论，这就是计算机行业能容纳上千人协作的原因。每一种层级背后都需要不同训练背景的人，有人懂物理和材料，有人懂电路，有人懂操作系统。

问他自己最喜欢哪一层，他的回答很干脆：我不在乎。这大概就是他的风格。他不站队，哪一层都能聊，也都愿意去搞明白。

指令集这一层的稳定性让他印象深刻。ARM 的指令集几十年了，掰开来数就是加载、存储、乘法、加法、减法、条件跳转这些基本操作，真正有意思的指令没有几条。一个程序跑起来，90% 的执行时间只落在 25 条指令上。这些东西定义于几十年前，至今依然有效。

> "指令集相对稳定，是因为最基础的部分很早就被定义清楚了。真正天天在变的，是它下面的实现。"（吉姆·凯勒）

## 计算机在猜你下一步往哪走

老式计算机取一条指令、执行一条，按顺序来。现代计算机完全不是这样。它一次性取进几百条指令，找出它们之间的依赖关系，画成一张图，再把这张图拆成小块丢给不同单元并行执行。

想要并行，前提是能看清依赖。可程序里到处是分支，平均每六条指令就有一个判断。要一次取五百条指令、画出完整的依赖图，就意味着得把其中大概 100 个分支里 99 个都猜对，否则你算出来的图本来就是错的，白忙一场。

于是现代 CPU 里有了一台小型的专用"超算"，唯一的工作就是预测分支往哪走。

猜分支这件事的演化很能说明问题。二十年前的做法简单粗暴：记住上一次这个分支走了哪边，这次照猜。准确率大概 85%。接下来有人想，不如加个计数器，走一次加一，走反了减一，用有符号数的高位来判断方向。准确率涨到 92%。再往后人们发现，同一个分支走哪边，跟你怎么走到这里的有关。如果前文在讲鲍勃和简，判断是一种走法；如果前文换成鲍勃和吉尔，判断又不一样。于是把历史路径也吃进来，准确率继续往上走。

现代分支预测器的做法已经很像一个小型神经网络，同时跑几套不同的预测算法，再用一个选择器挑出最靠谱的那个结果。

代价是什么？凯勒给了一个对照组：从零基础做到 85% 准确率，只需要一千个比特。要做到 99%，需要几十兆比特。从窗口只有 50 条指令到窗口有 500 条指令，算力投入差了三四个数量级。这个赌注下得很重，但没有它，现代处理器的性能根本无法兑现。

猜错的代价也没那么惨。执行单元会走错一条路，做了一堆无用功，但有些计算结果依然有效。凯勒打了个比方：读一本书，你误解了某一段，你对下一段的理解有时候不受影响，有时候全盘皆错。处理器也是这样，它一边往前冲，一边记录数据到底变了没有。等回头来做修正时，它会判断哪些活儿得重做，哪些可以直接采用。

## 自己找到的并行，和被人告诉的并行

凯勒把并行分成两种。

一种是"自己找出来的并行"。程序本身是一段顺着走的故事，我读了第一句才读第二句，前后有因果。但仔细拆，某些句子调换顺序并不改变意思。"他又高又聪明"，高和聪明谁先谁后无所谓。换成"那个高个子男人穿着红衬衫，衬衫是什么颜色"，顺序一乱，指代就乱了，依赖关系立刻浮现。现代处理器的核心工作，就是在这种叙事里挖出隐藏的并行。

另一种是"被告诉的并行"。屏幕上有一百万个像素，每个像素的处理公式一模一样，先处理哪一个都行。这种情况不需要挖，因为它天生就是并行的，是程序主动告诉你的。今天说的 GPU，处理的就是这类活儿。

## 程序跑一百次，每次路径都不同，答案却每次都一样

有个细节听起来很神奇。同一段程序跑一百次，执行流每一次都不一样。哪条指令先执行、哪条后执行、什么时候猜错、什么时候绕路，全都是随机的。但最终结果保证一致。

原因很清楚。确定性是编程语言的形式定义。语言规范里就写死了，同样的输入必须给出同样的输出。如果做不到，写程序的人会疯掉。你得到一个错误答案，然后开始排查，到底是逻辑错了，还是浮点误差，还是调度顺序。所有人都会想要一个开关，按下去就强制走确定路径。

凯勒觉得这件事有点好笑的地方在于：输入进现代计算的数据本身噪声极大，摄像头的画面、传感器的读数、语音信号，全是模糊的。可人们偏偏要求最后那个答案绝对干净。AI 领域有人反其道而行，故意让计算带上噪声，因为网络的收敛过程本来就是从宽到窄，最后那点精确度无关紧要，干脆提前切到下一轮。这个思路在科研里能提速，在产品里就让人抓狂。

## 把组织当成一块芯片来设计

凯勒有个观察，最好的计算机架构师往往对人没兴趣，最好的管理者往往不懂怎么设计计算机。这两件事本是同一件事的两个侧面。

干了多年芯片之后他意识到，人可以当成功能单元来看。组织设计可以当成一次计算机架构设计。人就像计算单元一样各不相同，有人擅长跳跃性地想出答案，有人擅长把已有方案评估得无比清楚。好团队的关键是有足够多样的人，让两种能力都能发挥作用。

他说了一句话很扎心：计算机科学里 99% 是汗水，1% 是灵感。但那个 1% 极其重要。你必须先有 99% 的铺垫，同时那 1% 不能缺。有人一辈子只愿意做那 1%，也有人一辈子只肯做那 99%，两种人凑在一起才能把事做成。

问题也在这里。人毕竟跟芯片不同，你说一句话，对方可以给出一百万种反应，还互相纠缠。什么时候该介入，什么时候该放手，这件事在计算上无解。

## 菜谱与理解

凯勒用一个面包的例子区分了两种东西。

菜谱说：拿面粉，加水，加酵母，揉一揉，发酵，放进烤盘，进烤箱。这是菜谱。

理解面包的意思是：你懂生物学，懂供应链，懂磨面机怎么工作，懂酵母，懂物理和热力学。同一个面包背后可以有无穷多层理解。

很多人做设计，实际上是在执行一堆菜谱。菜谱的效率极高，前提是它正好对应你想做的事。一旦情况变了，执行菜谱的人就傻眼了。一本极好的面包菜谱，不会教你做煎蛋卷。但如果你真懂烹饪，面包、煎蛋卷、三明治，全都能变出来。

成为某个领域的专家，意思是你希望往更深的层面走，而不是攒一堆菜谱去执行。团队也一样。有些团队菜谱执行得飞快，有些团队擅长判断眼前这个问题的性质，知道什么时候该抄菜谱，什么时候该老老实实回到第一性原理。

> "如果你时时刻刻都在拆解一切、追到更深的层次，那你什么也做不成。反过来，在该拆的时候不拆，你就会做错事。"（吉姆·凯勒）

## 五年就该推倒重来一次

一个成熟产品走到后期会有这样的现象：有人说要提速 10%，工程师就把某个缓冲区做大一点，多加一个加法单元，把一条指令拆成两条。每个零件都变得稍微复杂一点。加到最后，无论怎么加功能，性能都不动了。这时有人说，这是物理极限，到头了。旁边另一个工程师过来说，其实是你们把问题切分的方式、让不同特性互相纠缠的方式，卡住了自己，得推倒重来。

经历过的团队都知道，重写一遍不光更快，复杂度和代码量还能砍掉一半。

凯勒给出的节奏是：三到五年会有一次重写，每五年就该完全从头做一次。这在整个行业里算激进，大多数人的节奏是十年。

他不讳言这种选择很吓人。所有人都怕。公司看的是季度业绩，工程师怕短期指标崩掉。但把时间拉长看，短期灾难和长期灾难是两种东西。乔布斯说过，老产品有它自己的上升曲线和边际递减，新产品一开始会比老产品的高点低，但它能爬到更高的地方。真正做成长期生意的公司，每次看出必须重做的时候都做了。

尴尬的地方在于，一条新曲线上的第一个点，某些场景下会比老曲线慢。销售跑过来要你保证新产品在每一项上都更快，架构师只能说平均更快，分布里有一些异常点反而更慢。而总有那么一个客户，恰恰只在乎那个异常点。

## 一条由无数条下降曲线拼出来的上升曲线

回到摩尔定律。最原始的定义是戈登·摩尔提的，晶体管数量每两年翻一倍。凯勒自己在实操层面的定义是：计算机性能每两到三年翻一倍。这个节奏在历史上抖动得很厉害，性能怎么交付也在变。

他有个说法很有意思。摩尔定律看着是一条指数曲线，实际上它是由几千条各自的边际递减曲线拼出来的。每一条曲线都有它自己的寿命，涨到顶就平了。一个专家守着自己那条曲线，看到它平了，就会到处宣称摩尔定律已死。与此同时另一批人正在别的曲线上推进。

这就是"摩尔定律将死"这句话被喊了五十年、却一直没兑现的原因。喊的人看到的是自己的那条曲线，喊得没错，但别人没停。

他从物理角度算了一笔账。一个现代晶体管大概一千乘一千乘一千个原子那么大。量子效应要在大约两到十个原子的尺度才明显出现。也就是说，晶体管的尺寸理论上还能小一百万倍。现在最先进的鳍式晶体管，鳍宽大约一百二十个原子，还能更薄。栅极包在四周，中间还有各种间距，整个几何结构还有收缩空间。半导体厂商已经在推进纳米线晶体管，把鳍做成一根细线，控制更好，尺寸更小。往下的收缩路径是清楚的。

真正难的地方在别处：能不能便宜、稳定、可重复地量产。这背后是设备、光学、化学、物理、材料科学、冶金，几千项技术的接力。

凯勒做过一个演讲，问团队要一张未来 100 倍的路线图。两周后团队回来说，只能给出 50 到 100 倍里的一半。他说，那就再花两周。

50 倍是什么概念？搞芯片设计的人会明白，这意味着未来十年二十年的设计思路必须完全不同。他打了个比方：如果砖头每两年缩小一半，你还用同样的方式砌墙，每人每天的砌砖数量不变，那盖一栋楼的时间会指数级增长。真正聪明的做法是提前预判，现在就去设计搬砖更快的机器，让更小的砖产生更多价值，比如墙更结实、材料更省。有了一张清晰的技术路线图，你会围绕它设计一整套配套工具，既利用它，也扛住它。要是没人相信摩尔定律，晶体管照样按路线图出现，没有准备的团队全都会被淹死。

## 数学在往上爬，硬件还在原地

越来越多的晶体管涌进来，最难的地方在哪？

凯勒说的是两个常量。第一，人并没有变得更聪明。营养和健康确实带来了一些提升，但这个提升很小，而且不清楚是否还在持续。第二，团队规模没法无限扩张。人这种生物，十个人一队很舒服，一百个人一队还能彼此认识，再往上就必须画组织边界。这两条是硬约束。

于是面对越来越大的设计，唯一的出路是分治。抽象层的价值就体现在这里。早年计算机是用晶体管搭的，现在有团队专门做晶体管到逻辑单元，有团队把逻辑单元做成功能单元，有团队再把功能单元组装成整机。每一层的接口都相对稳定，各自演化。

还有一个细节容易被忽略：我们用更快的计算机去设计更快的计算机，但很多算法的复杂度是 N 平方。计算机晶体管翻倍，这类算法的耗时会翻四倍。所以不能指望"计算机快了，设计自然就快了"，软件必须跟着重新设计。

硬件层面其实没怎么变。往芯片里一看，还是加法器、减法器、乘法器、存储器。数据类型的演化倒是催生了一整套优化空间，比如张量运算天然要对一批数据做乘加。但落到底层，那些基本单元跟几十年前没本质区别。

凯勒顺着这个思路梳理了数学的层级：从标量运算，到向量运算，到矩阵方程，再往上到今天的卷积神经网络。数据集大到一定程度，人们开始把数据当成拓扑问题，把它想象成某种巨大的形状，计算就是从这个形状里取数据、做运算。每上一个台阶，需要的算力会跳好几个数量级。

> "你的朋友理查德·萨顿说过，计算量每提升一个数量级，计算在做的事情本身就会发生根本改变。量的差异就是质的差异。"（吉姆·凯勒）

凯勒补了一句：量变引起质变这件事，在数学史上反复出现过，他判断还会继续。

他对"AI 是不是搜索"这个问题的态度有点意思。有人说神经网络的训练本质上就是一种搜索，凯勒不认同。在他看来，训练更像一连串的投影。你去看中间层，某一层可能正好描述了尖耳朵，另一层描述圆润度，另一层描述毛茸茸的质感。把这些层拿掉，网络就不工作了，但训练过程本身不是在一个离散空间里找答案。它在一个十万维的空间里做优化，跟国际象棋数据库那种搜索是两码事。

他还提到一个现实问题：过早优化。一个大型软件栈，你刚写下第一行代码就开始优化，后来会发现你猜的性能瓶颈根本不是瓶颈。等你把整件事跑通，回过头针对真正的瓶颈优化，也许能让它快一倍。可要是在最开始就换一套设计，也许本来能快十倍。这两种选择之间存在持续的拉扯。

而拉扯的标尺，又回到摩尔定律。如果未来十年硬件还会变快，AI 研究就应该把这一点算进去，做出稍微不同的选择。如果认定硬件到顶了，那就只剩下算法重写这一条路。凯勒的判断是，过去三十年里，赌硬件到顶、专心改算法的策略一直是失败的。

## 特斯拉的车里塞了什么

自动驾驶芯片这类活，凯勒认为有两条战线。

一条是软件和机器学习团队。算法变得很快，你在设计加速器的时候，心里一直在打鼓：万一算法变得太多，这块加速器就白做了。

另一条是硬件通用性。一个通用计算机的性能记作 1，GPU 因为面对的是"被告诉的并行"，同样的硅面积能跑到 5。再往上，专门为 AI 设计的加速器又能在 GPU 基础上再翻二到五倍，因为它知道运算永远是一组整数做特定方式的乘加累加，是数学可能性的一个子集。风险在于，算法变化太快，你把加速器做得太专用，下一个算法直接在 GPU 上跑得更好，你前面几年的投入就全废了。

凯勒提到特斯拉的成本约束。其他公司的自动驾驶样机，后备箱里塞着服务器，成本预算给到一两万美元，因为目标是替代司机。马斯克的约束完全不同：无论车主买不买自动驾驶，这块计算机都要装进每一辆车。成本预算必须压到极低。要挤出这个成本，只能从系统设计上动脑筋。这件事很折腾，也很有意思。

## 开车这件事到底有多难

凯勒和弗里德曼在这个问题上有点分歧，而且分歧很有意思。

凯勒认为开车不算超难的问题。车是弹道物体，轨迹可预测。道路是固定的，今天在这里明天还在。世界可以被非常详尽地测绘，每个物体可以被非常精确地定位，轨迹可以被非常准确地计算。人不需要特别聪明就能开车，安全驾驶的核心是注意力，而注意力恰恰是计算机最擅长的东西。

弗里德曼反击说，你把人的视觉系统想得太简单了。它除了识别物体，还要理解整个场景，还得在信息缺失时合理补全。前面有一辆被遮挡的车，你得推断它的存在。眼睛看到的东西是二维的投影，大脑却给出了带深度、带物理规律的三维世界。

凯勒承认这部分确实是数据问题，但他强调数据问题的规模在快速膨胀，算力在上涨，算法理解在加深，历史上语音识别就是这样从频率分析一路走到深度学习的。他甚至打了个"被告诉的并行"之外的比方：车在路上被别人加塞，人脑会自动编一套解释，对方是个坏人，对方走神了，对方是个笨蛋。如果这套心理模型对驾驶真的必要，那现在的自动驾驶系统确实做不到，因为车没有理论，它对加塞这件事没有任何解释。但凯勒怀疑这套模型并没这么必要。车可以在被加塞的时候做一个非常简单的计算，往前挪一点，让一下，或者压住位置。这跟开车本身是两回事。

他相信这件事会在十年内被解决，然后被所有人当成理所当然，就像今天的 GPS。你不再关心卫星在哪、怎么定位，你只知道手机知道你在哪。

关于监管，凯勒的态度罕见地正面。他和美国和欧洲的监管者都聊过。他一开始担心规则会被技术细节绑死，比如刹车规范里充满了液压系统的痕迹，你要是照着字面执行，那就只能用液压刹车。结果发现监管者关心的是场景，迎面碰撞、偏置碰撞、不撞行人、不冲红灯，他们手里有全部的事故数据，知道哪些场景造成的伤亡最多。凯勒说，这些讨论基本都是在问"下一步怎么做才是对的"。

他还表达了另一层意思：自动驾驶的门槛比人类司机高，这件事在哲学上是合理的。既然目标是比人更安全，那就该受到比人更严格的审视。他接受这一点。

## 手艺人

凯勒用一个说法形容大多数工程工作：复杂技能行为。

学一样新东西是好玩的，因为你在学。做一件已经熟练掌握的简单事，反而没什么满足感。但如果一件事的步骤足够复杂，而你又擅长它，这种熟练本身就会带来愉悦。这就是手艺人的快乐。

他提到大学时挖过沟，还说自己在流水线上待过。他见过装配线上的工人，一群大块头，某天因为设备故障停线，几个人闷闷不乐，因为他们当天本来要破一个产量纪录。装车这件事比大多数人想的难得多。给一辆移动中的车装亮条饰件，一分钟半里要在二十五个位置扣上，这个难度不亚于开车。

特斯拉的自动驾驶硬件设计在他看来就是这么一类活儿。你已经定了架构，接下来是无数个细节的取舍：十个 CAN 口还是八个，这一代车怎么做，下一代车怎么做，安全模块怎么放。他打了个比方，这就像做小提琴。斯特拉迪瓦里做琴厉害，但本质是他挑木料、打磨、切削、粘合，还要等合适的天气上漆，免得做傻事。你可能是个天才工匠，因为你掌握最好的手艺，甚至发明了新工艺，但大多数工程本质上就是工匠活儿。人天生喜欢干这个。

## 第一性原理是件很累的事

谈到和马斯克共事的经历，凯勒说他很喜欢那种思维方式。

你自认为已经理解某件事的第一性原理，然后跟他聊，你会发现你连皮毛都没碰到。那种剥离所有假设、追问最底层约束的能力，凯勒形容为"超级狂野"。

他讲了个小故事。一个朋友发明了更好的电机，性能比在用的那款好很多，朋友拿给他看，他反应平平。朋友有点失望，说这可是很厉害的东西。凯勒回他一句：如果有超级智能的外星人来了，他们会满宇宙找那个造电机的人吗？大概率不会。

凯勒说这话，重点放在别的地方。要做到既创新、又是手艺活儿，那种状态最让人满足。造火箭、造车，用同一套第一性原理去拆解，很好玩。当年 SpaceX 第一次回收火箭，特斯拉大房间里架起投影仪，五百号人跑过来看直播，落地那一刻全场欢呼，有人哭了。

但代价是什么？凯勒说得很实在：让你剥离全部假设，这个过程不可能不痛苦。他估了个比例，你日常思考里大概 99% 的精力都花在保护自己已有的观念上，而这 99% 里又有 98% 是错的。真正有用的那部分观念，可能只占百分之几。意识到这一点，并且愿意推倒它，才有机会换一种做法。

凯勒说自己脑子里有这个意识，但他也会连着好几天忘记。因为日子要过，事儿要做，人还有情绪要照顾，有娱乐要享受。过一阵子才想起来：哦对，我可以按第一性原理重新想一遍。然后再精神抖擞地干一段时间，又累了，又忘。这东西没法一劳永逸，是一个需要反复回到的观察点。

他提到自己读书的习惯。有人觉得他读了很多书，他说自己五十五年来每周读两本。写书的人往往是把二十年里最热情投入的一件事浓缩成两百页，你花几个小时就能读完，还能上网查到谁写得最好，这买卖太划算了。他去一家公司做管理，先读了二十本管理书，然后发现自己比周围所有副总多读了十九本，一大半方法第一次用就奏效。

## 关于超级智能

聊到 AI 的奇点和超级智能，凯勒并不焦虑。

他的思路是：人类社会本来就是高度分层的。你看整个动物界，能力、兴趣、生态位各不相同。聪明人有聪明人的位置，普通人有普通人的位置，手艺人也有手艺人的位置。真出现一个比人聪明十倍的东西，它为什么要专门追杀我们？就因为我们喜欢在星巴克喝咖啡？这想法本身就说不通。

至于"活在一个比自己聪明得多的存在旁边，自尊心怎么受得了"，他提醒，只有 1% 的人会有这个困扰。剩下 99% 从出生起就活在比自己聪明的人边上，早就习惯了。人可以活得有意义的区间非常大。

他也不认为超级智能会继承人性里那些阴暗面。人类跟善恶两种力量处在一种创造性张力里，哲学家讨论了几千年，他也不明白为什么超级智能那里就会不一样。竞争的世界里，某人的善就是另一个人的恶，这种事会一直存在。少数时候它会极端残酷，但大多数时候它是自我限制的。

有人问他，如果能重活人生中的某个时刻、某段时光，会选哪一段。他的回答是：我不想重活任何一段。他喜欢那种带着一点乐观、又带着未知焦灼的状态。未知让人心跳加速。

问他人生的意义是什么。他说，看起来就是它本来的样子。宇宙不知为何造出了原子，原子组成了我们，我们做点事，搞明白点东西，探索点东西。就这样。

弗里德曼最后用戈登·摩尔的一句话收尾：如果你尝试的每件事都成功了，说明你试得还不够狠。

整场对话里凯勒反复回到同一个判断。一个系统运行到某个阶段，继续在原有框架里加码，收益会越来越薄。真正的突破，往往来自把整套假设摊开重新审视，哪怕这个过程既痛苦又昂贵。芯片是这样，组织是这样，人的观念也是这样。

## 可以马上做起来的几件事

- 给手头正在优化的项目设一个硬性时间窗口。三年之内可以小修小补，超过三年就必须认真考虑推倒重做，别让团队陷在一条已经压平的曲线上。
- 把团队里最大的那块工作拆成能独立演进的层级，定义清楚每一层之间的接口。接口稳定，上面下面才能各自迭代，不互相拖累。
- 遇到瓶颈时先问一句：是真撞到了物理极限，还是我们切分问题的方式把自己卡住了？第二个情况远比第一个常见。
- 每周留出一段时间专门做"菜谱与理解"的区分练习。列出你正在做的事里，哪些是从别人那里抄来的步骤，哪些是你真的想明白了。只有后者能迁移到新问题上。
- 别指望第一性原理思考能一直在线。把它当成一个周期性动作，状态好的时候做一轮深度拆解，其余时间正常推进，接受自己会忘。
- 如果打算进入一个新领域，先花一两个月把行业内公认最好的几本书读完。读完你很可能比周围大多数人更懂这件事的底层逻辑，成本却低得多。
- 评估一个长期项目时，把短期灾难和长期灾难分开看。前者让你这季度难看，后者让你三年后无路可走，两种恐惧不该被同等对待。
