English →
博客精读 · 09 · jvns.ca

Julia Evans · jvns.ca
「不懂」不是你的资质问题,是一个可以拆开的问题

2013 年至今 · 596 篇 · 仍在更新(最新一篇 2026 年 7 月 21 日)· 2018 年注册公司、2019 年 8 月辞职靠卖 zine 为生,博客自此从「我在工作里学到了什么」转向「我来把我已经懂的东西讲清楚」· 本页通读 22 篇,跨度 2013 年 9 月至 2026 年 7 月

2026 年 7 月,Julia Evans 在一张 4000 行的表上跑了一个查询。花了 5 秒。

她的反应是:

That seemed wrong to me: computers are fast! 我觉得这不对:计算机是很快的! 《Learning a few things about running SQLite》,2026 年 7 月 17 日

「计算机是很快的」是她 2014 年一篇文章的标题。那篇文章里,她找来一集美剧《新闻编辑室》(1GB),写了个 C 程序把文件里每个字节加起来,就为了亲手量一量自己的机器到底有多快。答案:读盘 2 秒,加法 0.6 秒;换成 CPU 的向量指令,0.25 秒;再故意制造缓存未命中,20 秒——「我们学到了,缓存未命中可以让你的代码慢 40 倍」。

十二年过去,她已经写了 596 篇博客、十几本编程 zine(自印小册子),靠讲解计算机为生。而她面对一个慢查询时的第一反应,跟 2014 年一字不差。这不是没长进,这是她整个工作的方法:她把「这不对劲」这个反应,当成一种需要终身维护的器材。

还有一件更怪的事。这个人有数学和计算机科学的两个学位,毕业的时候不知道什么是系统调用(system call,程序请求操作系统干活的那道接口)。有人说这是 CS 教育的失败。她的回应是把自己修过的课全列了出来——13 门荣誉数学、量子信息论、编译器设计、组合优化——然后说:

But more importantly – it's ok to not know things. 但更重要的是——不知道一些东西,是没关系的。 《How I got a CS degree without learning what a system call is》,2016 年 9 月 12 日

她十四年没放下的那个问题

把她 596 篇文章摊开,主题跨度大得吓人:TCP、gzip 的哈夫曼编码、Linux 容器、DNS、git 的数据模型、CSS 的 flexbox、股票期权怎么算、怎么给同事写绩效评语、怎么用 crochet 钩仙人掌。看上去像一个什么都好奇的人的流水账。

但底下只有一个问题,而且是个社会学问题不是技术问题:为什么「会用」和「懂」之间的那道缝,会让人觉得羞耻?

她全部的活儿,是把这道缝从「你不行」重新描述成「这里有一件具体的事你还不知道,它有名字,可以查」。她给出的答案有三个,每一个都反直觉。

答案一:懂一个东西要花十六年,而这是正常速度

她学会 DNS(域名系统,把网址翻译成 IP 地址的那套东西)花了十六年。从她第一次买域名、配 DNS 记录,到她真觉得自己懂了这套系统怎么运作,中间隔了十六年。

关键在于她怎么解释这十六年。不是「我笨」,也不是「我一直在刻苦钻研」,而是:

My favorite way of learning things is to do nothing, most of the time. That's why it takes 10 years. 我最喜欢的学习方式是:绝大部分时间什么都不做。这就是为什么要花十年。 《Learning DNS in 10 years》讲座实录,2023 年 5 月 8 日

「六个月什么都不干,然后疯狂学 30 分钟、或者三小时、或者一个下午,然后宣布胜利,再回去几个月什么都不干。」她管这叫微型深潜(tiny deep dives)。

这为什么有效?因为每次深潜都是被一个真实的 bug 逼出来的,所以它一定精确地落在你缺的那一块上。她讲过一个案例:她给新项目配好 DNS 记录,刷新页面,不通。她的心智模型说缓存最多 5 分钟,可等了 5 分钟还是不通——模型破了,这是最难受的时刻,也是最值钱的时刻。她带着「我到底要等多久」这一个问题,去翻了 1987 年写的 RFC 2308 第 3 节的一句极其无聊的话,算出答案是 10800 秒,也就是 3 小时。她等了 3 小时,通了。

而这件事的重点是:

So sometimes learning one small thing really can solve all your problems. 所以有时候,学会一件很小的事,真的可以解决你全部的问题。 同上

她缺的那一块只是「不存在的域名也会被缓存」这一条。不是「我不懂 DNS」,是「我少了一条」。这个换算——把弥漫的无能感换成一条可查的事实——就是她全部工作的核心动作。

答案二:「我不懂」不是一种情绪,是一句可以翻译的话

她管这叫最重要的学习技能,而它只是一个翻译动作:

This is the skill of translating "I'm confused, I don't get it" to "I have a specific question about X". 这是把「我很懵,我搞不懂」翻译成「我对 X 有一个具体的问题」的技能。 《How to teach yourself hard things》,2018 年 9 月 1 日

她自己的例子够难堪:她对 Rust 的引用和借用(borrowing)困惑了三年。三年里她一直"知道自己不懂",但那没有用。直到她坐下来,把这团雾拆成三个能回答的事实问题——& 到底是什么意思?怎么判断一个变量在栈上还是堆上?怎么避免给结构体加生命周期标注?——查完之后,那团雾就永久地散了。

而这个技能有个必须配套的反面:知道自己确实知道什么。她说她不懂网络的很多东西,但她 100% 知道 TCP 端口只有 65535 个,因为端口字段是 16 位,216=65536,塞不下更多。所以日志里打出「端口 1823832」时,她不会怀疑自己,她直接判定那是个 bug。

there is a big difference between "I'm 97% sure this is true" and "I am 100% sure about this and I never need to question it again" 「我 97% 确定这是真的」和「我 100% 确定这件事、我再也不需要怀疑它」,这两者差别巨大。 同上

两个技能合起来,画出的是一条边界:这边是硬地,那边是雾。人能干活的地方,是站在硬地上往雾里伸一只手。而她所有的写作,都是在替读者往硬地上多铺一块砖。

答案三:难懂的解释不是「写得不好」,是十三种有形状的错误

2021 年她做了一件很少有人做的事:她问自己,为什么我读到的技术解释几乎全是难懂的?她的写作流程一直是「学一个东西 → 读一堆让我很懵的解释 → 终于懂了 → 写一个我自己看得懂的版本」。那么,前面那一堆到底出了什么毛病?

她逆向工程出十三种模式。比如「对读者知识的过时假设」:某本 Git 教材解释分支时,拿它跟别的版本控制系统对比——这在 2009 年成立,因为那时候学 Git 的人是从 Subversion 转过来的;到 2021 年,学 Git 的人根本没用过别的东西,这段对比就是纯粹的噪音。

最漂亮的是她为什么用负面框架来写这个清单:

the problem with positive patterns (like "avoid introducing unnecessary jargon") is that they seem so obvious that I trick myself into thinking I'm following them, even when I'm not! 正面的准则(比如「别引入不必要的行话」)的问题在于,它们显得太理所当然,以至于我会骗自己说我在遵守它,哪怕我根本没有。 《Patterns in confusing explanations》,2021 年 8 月 19 日

而这份清单对读者的用处,比对写作者的用处更大——它把「我看不懂」这件事的归因整个搬了家:

"oh, I'm not confused by this explanation because I'm stupid, I'm confused because it's introduced 6 new-to-me concepts and it hasn't explained what any of them is yet!" 「哦,我读不懂这段解释不是因为我笨,是因为它一口气引入了 6 个我没见过的概念,而且一个都还没解释。」 同上

那些可爱的小画,是一个赤裸的功利选择

2016 年,有人在技术新闻网站上评论她的漫画:「我不明白这些坦率地说很幼稚的画——内容你读读维基百科就能学到——凭什么这么受欢迎。」

她的回答不是辩护自己的艺术:

I don't do it because I'm a visual thinker or because I'm a good artist or because I think comics are always the best way to learn. I just do it because it works, and it's fun. 我画画不是因为我是视觉型思考者,不是因为我画得好,也不是因为我觉得漫画永远是最好的学习方式。我画它,只是因为它有效,而且好玩。 《Why cute drawings?》,2016 年 11 月 14 日

她给的证据是数字:一篇 1200 字的技术博客,读者说要 15 分钟才读懂;配一张漫画,30 秒就抓住了主旨。一张画 /proc 目录的图,她花了大概 15 分钟,发到推特上 18 万次展示。她的原话是「我可以骗人去读那些他们本来觉得太难、没用或者不好玩的概念」。

2018 年她开始卖 zine,一本 10 美元。她公开算过账:免费下载最多的那本 5000 次点击,卖得最好的那本 3000 份销量。她的判断是——

3,000 sales is WAY BETTER than 5,000 clicks 3000 份销量比 5000 次点击好得多。 《Why sell zines?》,2018 年 9 月 23 日

理由是买了的人读它的概率大概是点开 PDF 的人的 4 倍(她自己注明这个 4 倍是「完全不科学的随便一个数」)。定价在这里不是收入手段,是注意力的过滤器。这笔账让她 2019 年 8 月辞了职。

所以读完她,你带走什么

不是 TCP 或 DNS 的知识——那些都在她的原文里,而且她本人也不在乎你学不学 DNS(讲座里她原话是「我不在乎你学不学 DNS 怎么工作」)。

你带走的是一套对待「不懂」的操作规程:不懂是一种可以定位、可以拆分、可以排期的工程状态,不是关于你是谁的判决。它有具体的动作——去监听真实流量(strace、tcpdump、Wireshark),带着一个问题去读无聊的规范,做便宜的实验,写一个很烂的自己的版本。而它最重要的一条是社会性的,来自她 2013 年待过的 Recurse Center 手册:不要假装惊讶——别人说不知道某件事时,你不要摆出惊讶的样子,哪怕你是真的惊讶。因为无论真假,效果一样:那让说话的人下次不敢承认自己不知道。

2026 年,她在做 Git 的手册页(man page)。用了 SQLite 建第四个网站,然后写道:「我并不很懂怎么运维数据库。」十四年了,那个反应还在:这不对劲,计算机是很快的,让我去看看。