逃离象牙塔的人：Node.js之父Ryan Dahl和他的两次出走

我有个朋友学了七年医，实习第一年就辞职了。所有人都说他疯了，他妈妈在电话里哭。但他跟我说："我不想等到40岁才发现，我这辈子做的事情跟我想要的生活没有任何关系。"三年后他开了家小书店，日子过得紧巴巴的，但每次见面他脸上都有种说不出的轻松。这让我想起了Ryan Dahl——那个从数学博士项目里逃跑的年轻人，最后在德国的咖啡馆里，意外地改变了整个互联网世界。

第一次逃离：从美丽的虚无中醒来

1981年出生的Ryan Dahl，从小就被认为是个聪明孩子。6岁那年，母亲给他买了台电脑，就像所有美国中产家庭做的那样——虽然不知道有什么用，但总觉得应该给孩子准备点"未来"。

Ryan顺理成章地考上了加州大学圣地牙哥分校，学数学。然后读研究生，研究代数拓扑。这是个什么东西呢？Ryan自己的形容很诚实："非常抽象、非常美，但跟现实生活没什么关系。"

想象一下那个场景：一个二十几岁的年轻人，每天在罗切斯特大学的研究室里，证明着只有极少数人能看懂的定理。窗外是纽约北部的漫长冬天，屋里是永远写不完的公式。这条路的尽头清晰可见——拿到博士学位，发几篇论文，申请教职，成为某个大学数学系的副教授，然后教授，然后退休。

一条笔直、体面、安全的路。

但Ryan有一天突然想明白了：他不想用余生去攀登一座美丽但通往虚无的山峰。😔

"我想做一些与人类正在发生的事情相关的东西"

这句话听起来很简单，但说出来需要多大的勇气？你已经在这条路上走了那么多年，投入了那么多时间和精力，周围所有人都在说"再坚持一下就好了"——但他选择了停下来。

他退学了。

没有备选方案，没有详细计划。他只是决定：我不要这种生活了。

在路上：一个没有方向的自由人

退学后的Ryan去了南美洲。他开始接一些网站开发的活儿，用Ruby写代码，做那种最普通的外包项目——给滑雪公司维护网站，帮小企业搭建在线商店。

这段时间的Ryan，就像所有逃离了既定轨道的年轻人一样：自由，但也迷茫；轻松，但也焦虑。他不知道自己要去哪里，只知道自己不想回到那个数学研究室。

后来他去了德国，跟女朋友一起住在科隆。他继续做自由职业，接一些零散的项目。生活平淡，没有什么波澜。

如果故事就这样继续下去，Ryan Dahl可能就是千千万万个"曾经很优秀但最后泯然众人"的普通人之一。那些读博士读到一半退学的人，那些放弃大公司工作去创业的人，那些说要"找到自己真正想做的事"的人——大多数最后都消失在了时间里，再也没有掀起任何波澜。

但有时候，命运会给那些真正在寻找的人一个机会。

科隆的六个月：一个人的革命

2008年，Ryan 29岁，在科隆做着自由程序员的工作。某天，他接到一个任务，客户要求用异步操作来处理服务器请求。他开始琢磨这件事，觉得现有的服务器技术都有问题——它们处理并发请求的方式太笨了，就像一个厨师必须做完一道菜才能开始做下一道。

恰好这时候，谷歌发布了Chrome浏览器和V8引擎。

这个瞬间改变了一切。

Ryan突然意识到，他可以用这个新的引擎，结合异步操作的理念，创造一个全新的东西。不是为了发论文，不是为了拿学位，就是因为——他觉得这个想法太酷了，他必须把它做出来。

他从一家公司拿到了6万美元的赞助。这笔钱不多，但足够让他暂时不用接外包项目。

于是，2009年初，Ryan开始了一段奇特的生活：每天去科隆Rudolfplatz拐角的一家星巴克，在那里写8小时代码，持续了6个月。☕

那家星巴克没有WiFi。

这个细节很重要。在2009年，没有WiFi意味着没有Google搜索，没有StackOverflow，没有在线文档。Ryan只有他带去的资料、他的电脑、还有V8引擎的说明书。

想象那个画面：咖啡馆里人来人往，有人在聊天，有人在约会，有人在看报纸。而在角落里，一个美国年轻人盯着笔记本电脑的屏幕，写着只有他自己能看懂的代码。周围的人不知道，这个看起来有点宅、有点孤僻的家伙，正在创造一个将会改变数百万人生活的东西。

那六个月，Ryan是完全孤独的。没有团队，没有导师，没有同事。只有他和他的想法。每天早上起床，去咖啡馆，打开电脑，写代码，调试，报错，修复，再调试。晚上回家，睡觉，第二天继续。

这是一种纯粹的、近乎修行般的专注。他不需要向任何人汇报进度，不需要参加任何会议，不需要解释他在做什么。他只是在做一件他认为应该做的事。

2009年11月，他终于做完了第一个版本。他给它起名叫Node.js。

聚光灯下的不适：我只想安静地写代码

Ryan在JSConf EU上展示了Node.js。他很紧张——这是他第一次站在这么多人面前讲话。但演示很成功，现场观众可以立即连接到他搭建的聊天服务器，发送消息，看到实时响应。

人群中爆发出惊呼和掌声。

Ryan后来回忆说，那一刻他意识到：也许我真的做出了一个不错的东西。

但他没想到的是，成功会以这样快的速度到来，而且会带来这么多他不想要的东西。

Node.js开始爆炸式传播。Joyent公司找到他，给了他一份全职工作，条件是把Node.js的版权和商标都转给公司。Ryan同意了——他拿到了钱，有了稳定的工作，可以全职开发Node.js了。

听起来是个完美的结局对吧？

但没人告诉他，成功的代价是失去隐身的权利。

他开始被邀请参加各种技术大会，作为"Node.js之父"发表演讲。在日本，有人排队要跟他合影。他写了篇博客批评某些软件设计，结果在Hacker News上引发了数百条评论，有支持的，有反对的，有嘲讽的。他的一个朋友看到后说："天啊Ryan，你这是在给自己找麻烦。"

还有人写文章说"Node.js是癌症"。Ryan看到后的第一反应不是生气，而是自我怀疑："天啊，我肯定在某个地方犯了错误。"

他发现自己变成了一个公众人物，而他根本不想当公众人物。😰

Ryan后来说："我是一个程序员，我想写代码，我想无拘无束地表达我的想法。我并不喜欢这种状态。"

这是创作者的悲剧：你创造了一个东西，投入了全部的热情和心血，但当它成功之后，它就不再属于你了。它属于使用它的人，属于讨论它的人，属于批评它的人。而你，作为创造者，反而被困在了这个巨大的成功里，动弹不得。

就像一个作家写了一本畅销书，然后余生都要被问"第二部什么时候出"，却再也找不回写第一本书时的那种纯粹的创作冲动。

第二次逃离：在荣耀中转身

2012年1月，Ryan宣布离开Node.js项目的日常管理，把工作交给了另一个开发者。

他给出的理由很官方："这让我可以去做研究项目。"

但真实的原因可能是：他又想逃离了。这次不是逃离数学研究室的虚无，而是逃离成功带来的喧嚣。

离开后的Ryan做了什么？他去了纽约，尝试了一些创业想法——做社交网络、做构建系统——都没什么起色。后来他加入了Google Brain，研究机器学习。

从外界看，这是一个成功人士的正常职业发展。但我更愿意相信，Ryan其实是在寻找那种感觉——在科隆星巴克里，一个人对着电脑，没有人打扰，纯粹地创造的感觉。

六年过去了。Node.js变得越来越流行，但也变得越来越复杂。成千上万的开发者在使用它，抱怨它，改进它，但也给它添加了各种各样的东西——有些是必要的，有些是妥协的产物。

Ryan偶尔会看看Node.js的代码，然后心里想："如果让我重新来过，我绝对不会这么做。"

这个念头在他心里生根发芽，像一颗种子，在六年的时间里慢慢长大。

在舞台上承认错误：一次罕见的坦诚

2018年6月，JSConf EU，同样的会议，同样的舞台。

距离Ryan第一次在这里展示Node.js，已经过去了9年。

这一次，他站在台上，说出了一个震惊全场的标题："我对Node.js后悔的10件事"。

想象一下这个场景的戏剧性：一个创始人，在几千名使用他产品的开发者面前，公开批评自己当年的设计决策。

这需要多大的勇气？

我们生活在一个"永远不要承认错误"的时代。企业家要维护自己的形象，政客要维护自己的威信，专家要维护自己的权威。承认错误被视为软弱，被视为失败。

但Ryan用了26分钟，详细地、毫不留情地批评了自己当年做的选择。

他说，我不应该移除Promise支持。我应该把安全性做得更好。我不应该让模块系统变得这么复杂。我不应该让一个私人公司控制整个生态系统的包管理。

台下的观众从最初的震惊，渐渐变成了深思。他们意识到，这不是一个失败者的抱怨，而是一个成熟的工程师对自己作品的诚实反思。

演讲快结束时，Ryan说了一句话："我觉得在大家面前抱怨一堆东西而不给出解决方案，这很糟糕。"

然后他介绍了Deno——一个全新的运行环境，用来解决他在Node.js中犯下的所有错误。

这是一次优雅的自我迭代。

Ryan没有说"Node.js是垃圾，大家都别用了"。他说的是："这是我当年的想法，这是我现在的想法，这是我学到的东西，这是我想做得更好的地方。"

重新开始：带着所有的教训

2020年5月13日，Deno 1.0正式发布。

这次Ryan不是一个人了。他有了团队，有了资金，有了更成熟的技术。但最重要的是，他有了十年的教训。

Deno和Node.js最大的区别不在于技术细节，而在于理念：

Node.js说：我给你提供最大的自由，你可以做任何事

Deno说：我默认限制你的权限，除非你明确说你需要做什么

这就像两种不同的人生哲学。年轻时我们追求自由，觉得限制是枷锁；成熟后我们理解边界，知道有些限制其实是保护。

Ryan在创造Deno时的心态，可能跟当年在科隆咖啡馆里很不一样。那时候他是纯粹的兴奋和激情，觉得自己发现了一个了不起的东西。现在他更平静、更谨慎，但也更清楚自己在做什么。

他不再是那个逃离象牙塔的年轻人，而是一个经历过成功、挫折、反思之后，决定重新开始的中年人。

尾声：关于选择和代价

Ryan Dahl的故事让我想到很多事。

我们的文化总是鼓励人们"坚持"。坚持就是胜利，放弃就是失败。但Ryan的两次"逃离"告诉我们：有时候，放弃一条错误的道路，比在上面坚持到底更需要勇气。

第一次，他放弃了数学博士学位，选择了一条完全不确定的路。如果失败了，他就是那个"读了这么多年书最后一事无成"的反面教材。

第二次，他在Node.js最成功的时候选择离开，然后又回来公开批评它。如果Deno失败了，他就是那个"吃老本还要砸自己招牌"的过气创始人。

但他都做了。不是因为他不在乎别人的看法，而是因为他更在乎做正确的事。

今天，Node.js依然是全世界最流行的服务器端技术之一，被无数公司使用。Deno还在成长中，还没有Node.js那样的影响力。但这不重要。

重要的是，Ryan展示了一种可能性：你可以创造一个伟大的东西，然后承认它的缺陷；你可以在成功之后选择离开；你可以在十年后回来，说"我当年错了，现在我要做得更好"。

这不是背叛，不是不忠，不是朝三暮四。

这是一个人保持诚实、保持成长、保持对完美的追求的方式。

我常常想，如果Ryan当年没有退出数学博士项目，会怎么样？他可能会成为某个大学的副教授，发表一些只有同行能看懂的论文，过着稳定、体面、但平淡的生活。

如果他在2012年没有离开Node.js，会怎么样？他可能会继续被困在日常的项目管理和社区争议中，失去创造新东西的激情和自由。

每一次选择都有代价。放弃博士学位的代价是不确定性；离开成功项目的代价是被质疑；公开承认错误的代价是可能被嘲笑。

但Ryan都接受了这些代价，因为他想要的从来不是外界的认可，而是内心的自洽。

在德国科隆那家没有WiFi的星巴克里，29岁的Ryan Dahl一个人写了六个月代码，改变了世界。

十年后，他又一次坐在电脑前，对自己说：我可以做得更好。

这才是真正的自由。🕊️