我有个朋友学了七年医,实习第一年就辞职了。所有人都说他疯了,他妈妈在电话里哭。但他跟我说:"我不想等到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一个人写了六个月代码,改变了世界。
十年后,他又一次坐在电脑前,对自己说:我可以做得更好。
这才是真正的自由。🕊️