好文集ChatGPT Plus¥119

我做过的那些工作

文章目录

作者:Paul Graham

原题:What I Worked On|2021 年 2 月

本文据 Paul Graham 原文编译,保留第一人称叙述、经历顺序与原注。文中的“我”均指原作者。阅读英文原文。

写作、编程,和一个没有实现的计划

上大学以前,除了学校里的功课,我主要做两件事:写作和编程。我写的不是随笔,而是那时候初学写作的人被认为应该写的东西,大概现在也一样:短篇小说。我的小说很糟糕,几乎没有情节,只有一些感情强烈的人物。我以为这样就算有深度。

我最早尝试写程序,用的是学区的一台 IBM 1401。那时它被用来做所谓的“数据处理”。我读九年级,大约十三四岁。那台 1401 恰好放在我们初中的地下室里,我和朋友 Rich Draves 获准使用它。地下室像个缩小版的邦德电影反派基地:中央处理器、磁盘驱动器、打印机、读卡器,一台台模样陌生的机器,放在明亮日光灯照着的架空地板上。

我们使用的是早期版本的 Fortran。你得先把程序打在穿孔卡上,再把卡片叠起来放进读卡器,按下按钮,把程序载入内存并运行。运行结果通常会由那台响得不得了的打印机打出来。

我完全摸不清 1401 的门道,不知道拿它做什么。现在回想起来,我确实也没多少事情可做。程序能接收的输入只有穿孔卡上的数据,而我没有任何这样的数据。另一个选择,是做不需要输入的事,比如计算 π 的近似值,可我的数学还不足以让我做出什么有意思的东西。所以我一个当时写的程序都记不起来,也不奇怪:它们肯定都没做出什么。印象最深的反而是发现程序可能永远不会结束的那一刻,因为我的一个程序就没有结束。在一台没有分时系统的机器上,这不只是技术错误,也是给别人添麻烦。从数据中心管理员的表情,我很清楚地知道了这一点。

文章配图

*IBM 1401 实物,电脑历史博物馆,2012 年。型号示意,并非作者学校当年的现场。 图像来源 · Arnold Reinhold / CC BY-SA 3.0 · *许可

微型计算机出现以后,一切都变了。现在,你可以把一台计算机放在面前的桌上,它在运行时就能回应你敲下的按键,而不再只是处理完一叠穿孔卡就停下来。[1]

我的朋友中,第一个拥有微型计算机的人是自己组装的。他买了 Heathkit 出售的套件。我清楚记得,看到他坐在那里,直接把程序输入计算机时,我有多震惊,又有多羡慕。

那时候电脑很贵。我缠着父亲说了好几年,他才在 1980 年前后买了一台 TRS-80。那时大家最推崇的是 Apple II,不过 TRS-80 也足够用了。我从这时才真正开始编程:写了几个简单的游戏,一个估算模型火箭能飞多高的程序,还有一个文字处理器。父亲至少有一本书是用它写的。内存只能放下大约两页文字,所以他每写两页就打印出来。即便如此,也比打字机好用多了。

文章配图

*TRS-80 Model I 实物,2023 年拍摄。文中提到的 TRS-80 系列早期机型。 图像来源 · Prolete / CC0 1.0 · *许可

虽然喜欢编程,我却没打算在大学里学它。我想学哲学,听起来更厉害。对当时那个天真的高中生来说,哲学似乎研究的是终极真理,其他领域研究的只是各自范围内的知识。到了大学,我才发现,其他学科已经占去了那么多可以思考的东西,留给所谓终极真理的空间并不多。哲学似乎只剩下一些边缘问题,其他领域的人觉得不去管它们也没关系。

十八岁时,我还没法把这些想法说清楚。只知道自己不断选哲学课,却总是觉得无聊。于是,我决定转向人工智能。

二十世纪八十年代中期,人工智能很受关注。尤其有两件事让我想进入这个领域:海因莱因的小说《严厉的月亮》,里面有台叫 Mike 的智能计算机;还有一部 PBS 纪录片,展示了 Terry Winograd 使用 SHRDLU。我一直没重读那本小说,不知道今天读起来会是什么感觉,但当时我完全被那个世界吸引了。拥有 Mike 这样的计算机,似乎只是时间问题。看到 Winograd 使用 SHRDLU 后,我甚至觉得最多再等几年就行。只要再教 SHRDLU 多一些词汇,不就可以了吗?

当时康奈尔没有人工智能课,连研究生课程也没有,于是我开始自学。这意味着要学 Lisp,因为那时人们认为它就是人工智能的语言。当时主流编程语言相当原始,程序员对程序的想象也受到了相应限制。康奈尔默认使用一种类似 Pascal 的语言,叫 PL/I,其他地方的情况也差不多。Lisp 一下子大大拓宽了我对程序的认识,过了几年,我才逐渐看清新的边界在哪里。这才是我期待的大学生活。虽然不是在课堂上发生的,也没关系。接下来的几年,我如鱼得水。我知道自己要做什么了。

我为本科毕业论文重新实现了 SHRDLU。天哪,我有多喜欢写那个程序。代码本身就很有意思,更让我兴奋的是,我相信它已经迈上了通往智能的最初几级台阶。现在很难想象,但在 1985 年,持这种想法的并不只有我。

我参加了康奈尔的一个项目,不必选择专业,可以自由选课,也可以自己决定学位上写什么。我当然选了“人工智能”。可拿到文凭时,我很沮丧:他们居然连引号也印上去了,看起来像是在讽刺我。当时我很介意,如今回看,却觉得它既好笑又准确。原因我很快就会知道。

我申请了三所研究生院:麻省理工和耶鲁,因为它们以人工智能闻名;还有哈佛。我去过哈佛,Rich Draves 在那里,Bill Woods 也在那里——我重新实现 SHRDLU 时所用的那类解析器,就是他发明的。最后只有哈佛录取了我,于是我去了那里。

我不记得自己具体是怎样意识到的,甚至不知道有没有一个明确的时刻。但在研究生一年级,我发现,当时正在做的那种人工智能是一场骗局。我说的是这种做法:告诉程序“狗坐在椅子上”,程序把这句话转成某种形式化表示,再添加到它所知道的事实列表里。

这类程序真正证明的,是自然语言中有一小部分可以当作形式语言处理。可那只是很有限的一部分。它们能做的事情与真正理解自然语言之间,显然还隔着无法跨越的鸿沟。问题远不只是多教 SHRDLU 一些词汇。靠显式数据结构表示概念的那种人工智能,走不通。它经不起变化,确实像很多有缺陷的东西一样,能让人围绕各种修补办法发表不少论文,但它永远造不出 Mike。

于是,我在原有计划的废墟里看看还有什么能留下来,找到了 Lisp。根据自己的经验,我知道 Lisp 本身就很有意思,不只因为它与人工智能有关——尽管那时候,大多数人正是因为这种关联才在意它。我决定专心研究 Lisp,甚至决定写一本讲 Lisp 编程技巧的书。想到刚开始写时自己对这些技巧懂得那么少,真有点后怕。但学习一件事,写一本关于它的书几乎是最好的办法。《On Lisp》直到 1993 年才出版,其中的大部分却是在研究生期间写的。

计算机科学是理论与系统这两个方向之间并不安稳的联盟。做理论的人证明事情,做系统的人造东西。我想造东西。我很尊重理论,甚至隐隐觉得它更值得钦佩,但造东西似乎更让人兴奋。

不过,做系统有个问题:成果留不长。今天写出的程序,无论多好,最多几十年后就会过时。人们也许会在脚注里提到你的软件,却不会再使用它。那时,它甚至可能显得相当粗陋,只有对这段历史有所了解的人,才知道它在自己的时代曾经很好。

计算机实验室曾闲置着几台 Xerox Dandelion 工作站,谁想玩都可以拿一台。我短暂地动过心,但按当时的标准,它们已经慢得很,拿来又有什么用?其他人也不想要,最后它们就被处理掉了。做系统的成果,就是这样的命运。

我不只想造东西,还想造出能长久留下来的东西。

我想做能长久留下来的东西

带着这种不满足,1988 年我去卡内基梅隆大学看望正在那里读研的 Rich Draves。有一天,我去了卡内基博物馆。小时候,我在那里待过很长时间。看着墙上的一幅画,我突然明白了一件似乎很明显、却让我大为吃惊的事:有些你能创作的东西,确实可以长久留存。它们就挂在墙上。画不会过时,一些最好的作品已经有几百年历史了。

而且,画画也可以谋生。当然,比写软件难些,但我想,只要足够努力,生活足够节俭,总有可能赚到维持生活的钱。做艺术家就能真正独立:没有老板,甚至不用申请研究经费。

我一直喜欢看画。可我能画吗?我不知道。我甚至从来没想过这是一个可能的选项。理智上,我当然知道艺术是人创作的,不是自己凭空出现的。但创作它们的那些人,好像属于另一个物种:要么生活在很久以前,要么是《生活》杂志里那些做着古怪事情的神秘天才。亲手创作艺术——把“创作”这个动词放在“艺术”这个名词前面——在我看来几乎是奇迹。

那年秋天,我开始在哈佛上艺术课。研究生可以选任何系的课,我的导师 Tom Cheatham 又很随和。就算他知道我上了这些奇怪的课,也从来没有说过什么。

于是,我一边读计算机科学博士,一边打算做艺术家,同时又真心喜欢 Lisp 编程,努力写着《On Lisp》。换句话说,和许多研究生一样,我积极做着好几个与博士论文无关的项目。

我看不到脱身的办法。我不想退学,可还能怎么离开呢?朋友 Robert Morris 因为写了 1988 年的互联网蠕虫,被康奈尔开除了。我记得自己甚至羡慕他,居然找到了如此惊天动地的办法退出研究生院。

到了 1990 年 4 月,有一天终于出现了转机。我碰见 Cheatham 教授,他问我进展是否足够快,能不能在当年六月毕业。那时我连论文都没开始写,可也许就在一生中脑子转得最快的那一瞬间,我决定利用截止日期前大约五周的时间,尽量重用《On Lisp》里的内容,拼出一篇论文。于是,我毫不迟疑地回答:“是的,我想可以。过几天就给您一些内容看看。”

我选了续延(continuation)的应用作为题目。回头看,我应该写宏和嵌入式语言,那里面还有一个几乎没人探索过的世界。不过,当时我只想毕业,匆忙写出来的论文也勉强够用了。

与此同时,我在申请艺术学校。我申请了两所:美国的罗得岛设计学院(RISD),以及佛罗伦萨美术学院。我知道后者历史最悠久,便以为它一定很好。RISD 录取了我,而佛罗伦萨一直没有消息,于是我去了普罗维登斯。

我申请的是 RISD 的艺术学士项目,相当于重新读一次本科。这没有听起来那么奇怪:我才二十五岁,艺术学校里什么年龄的学生都有。RISD 把我当作转入二年级的学生,要求我先在那个夏天读完基础课程,也就是素描、色彩、设计这些所有人都得学的基本科目。

夏末,我收到了一个意外惊喜:佛罗伦萨美术学院的来信。他们之前把信寄到了英国剑桥,而不是马萨诸塞州剑桥。信里邀请我那年秋天到佛罗伦萨参加入学考试,离考试只剩几周。好心的房东让我把东西留在她的阁楼。我读研时做咨询存了一点钱,节省着用,大概够过一年。剩下的就是学会意大利语。

只有外国学生需要参加这个入学考试。回头想,这也许是为了挡住一部分人:想去佛罗伦萨学艺术的外国人太多,否则意大利学生都要被淹没了。那个夏天在 RISD 上基础课时,我的素描和绘画成绩还不错,但我至今不知道自己怎么通过的笔试。我记得自己写了一篇谈塞尚的文章,尽可能堆上抽象的大词,好用有限的词汇蒙混过关。[2]

才二十五岁,我的人生就出现了如此明显的模式:再次走进一所声名显赫的学校,期待学习某种声名显赫的东西,结果又一次失望。学院绘画系的师生都极其友善,却早已达成某种默契:学生不指望老师教什么,作为交换,老师也不要求学生学什么。表面上,大家仍然沿用十九世纪画室的规矩。我们真的有那种用木柴烧的小炉子,就像你在十九世纪的画室画里看到的;裸体模特会尽可能坐近一点,又不能近到被烫着。除了我,几乎没有人画她。其他学生都在聊天,偶尔尝试模仿美国艺术杂志上的东西。

那位模特原来就住在我那条街的尽头。她靠做模特,以及替本地古董商画仿品为生。她从书上临摹一幅冷门的古画,古董商再折腾那幅仿画,把它弄旧。[3]

在佛罗伦萨美术学院时,我开始晚上在卧室画静物。画都很小,因为房间小,而且我用的都是剩下的画布边角,那是当时唯一买得起的材料。静物和人物不同,顾名思义,它们不会动。人一次只能坐上大约十五分钟,而且坐着也不太安稳。因此,传统的人物画法,是先学会画一个一般意义上的人,再按眼前这个具体的人调整。静物却不一样,只要你愿意,几乎可以一寸一寸照着眼前的东西画。当然,你不会满足于此,否则得到的就只是照片般的准确。静物画的有趣之处,在于它经过了一个人的头脑。你会想强调某些视觉线索,例如某处颜色突然变化,是因为那里正好是物体的边缘。细微地强调这些东西,能画出比照片更真实的画。这不只是比喻,而是在严格的信息论意义上说的。[4]

我喜欢画静物,是因为我对眼前的东西感到好奇。日常生活中,我们看见了许多东西,却并未有意识地注意到它们。视觉感知大多由更基础的处理过程完成:大脑知道“那是一滴水”,却不会告诉你最亮和最暗的地方在哪;知道“那是一丛灌木”,却不会交代每片叶子的形状和位置。这是大脑的一个好功能,并不是毛病。平时要是留意每一丛灌木的每一片叶子,反而会分心。但当你必须画下某样东西,就得看得更仔细,而细看之后,能发现的东西很多。一个通常被人视为理所当然的东西,画了几天,你仍可能不断发现新细节;就像写一篇文章,讨论一个人人习以为常的事,写了几天,也还会有新的发现。

这并不是唯一的画法。我甚至不能百分之百确定,这算不算一种好画法。不过,它看起来足够值得一试。

文章配图

*塞尚《苹果与梨的静物》,约 1891–1892 年。大都会艺术博物馆藏。 图像来源 · Paul Cézanne / Public domain / The Met Open Access · *许可

我们的老师 Ulivi 教授是个好人。他看得出我很用功,给了我一个好成绩,记在每个学生都有的一本像护照一样的本子上。但除了意大利语,学院并没教会我什么,而钱也快花光了。第一年结束,我便回了美国。

学艺术,也得先养活自己

我想回 RISD,可我已经没钱了,那里的学费又贵,于是决定先工作一年,第二年秋天再回去。我在一家叫 Interleaf 的公司找到了工作。他们做文档制作软件。你是说,像 Microsoft Word 那种?没错。我正是在这里学到,低端软件会逐渐吞掉高端软件。不过,当时的 Interleaf 还剩几年好日子。[5]

Interleaf 做过一件挺大胆的事:受 Emacs 启发,他们加入了一种脚本语言,而且还是 Lisp 的一个方言。现在,他们需要一个熟悉 Lisp 的程序员来写东西。这是我一生中最接近普通上班的经历。在这里,我得向当时的老板和同事道个歉,因为我是个糟糕的员工。他们的 Lisp 就像一块巨大 C 语言蛋糕表面薄得不能再薄的糖霜,而我既不懂 C,也不想学,所以大部分软件我都没弄明白。另外,我也非常不负责任。那时候,编程工作意味着每天必须在固定时间到岗。这在我看来很不自然。现在,其他人也逐渐接受了我的想法,但当时确实带来了不少摩擦。到了年底,我把许多时间偷偷用来写《On Lisp》,这时它已经有出版合同了。

好处是,工资高得惊人,尤其以艺术学生的标准来说。在佛罗伦萨,交完自己那份房租,我其余全部开销的预算是每天七美元。现在,我一小时就能挣到那个数目的四倍多,哪怕只是坐着开会。靠着节俭生活,我不仅攒够了回 RISD 的钱,还还清了大学贷款。

我在 Interleaf 学到了一些有用的东西,虽然多半是哪些事不该做。我发现,科技公司最好由产品出身的人管理,而不是销售出身的人——当然,销售确实是一门本事,做得好的人也确实厉害;太多人改同一份代码,容易出错;便宜的办公室如果令人压抑,就算不上便宜;事先安排的会议往往不如走廊里随口聊几句;规模庞大、官僚气重的客户,是危险的收入来源;而正常办公时间与最适合编程的时间、正常办公室与最适合编程的地方,都没多少重合。

最重要的一课,后来在 Viaweb 和 Y Combinator 都用上了:低端会吞掉高端。成为入门级的选择是好事,哪怕听起来没那么体面。因为如果你不做,就会有别人来做,把你一路往上挤,直到顶在天花板上。这又意味着,声望有时是一个危险信号。

第二年秋天离职回 RISD 时,我和公司里替客户做项目的团队约好,继续为他们做自由职业。这就是我接下来几年维持生活的方式。后来有一次因项目回去,有人告诉我有个叫 HTML 的新东西,说它是从 SGML 衍生出来的。在 Interleaf,碰到标记语言爱好者简直是种职业病,所以我没理他。但这个 HTML,后来却成了我生活中很大的一部分。

1992 年秋天,我搬回普罗维登斯,继续在 RISD 读书。之前的基础课只是入门,佛罗伦萨美术学院则像个非常讲礼貌的笑话。现在,我总该见识到真正的艺术学校了吧?可惜,它与佛罗伦萨的相似多于不同。组织当然更好,学费也高得多,但我逐渐明白:艺术学校与艺术的关系,并不像医学院与医学的关系。至少绘画系不是。我隔壁的邻居在纺织系,那里似乎相当严格。插画和建筑大概也一样。但绘画系已经不讲这种严格训练了。绘画学生应当“表达自我”,对那些更懂行情的人来说,就是设法弄出一种有辨识度的个人风格。

这种标志性的个人风格,类似演艺行业里说的“招牌把式”:一眼就认得出,这件作品属于你,而不是别人。比如,看到一种特定的漫画式画面,你就知道是罗伊·利希滕斯坦。若在对冲基金经理的公寓里看到一幅这种风格的大画,你也知道,他花了几百万美元。艺术家形成个人风格,并不总是为了这个,但买家为这类作品支付高价,往往就是为了这个。[6]

也有许多很认真的学生。他们是那些高中时“画得很好”的孩子,来到这所号称全美最好的艺术学校,是想画得更好。RISD 的现实往往让他们困惑、泄气,但他们仍坚持,因为画画就是他们想做的事。我高中时不属于那些会画画的孩子,不过在 RISD,我显然更接近这群人,而不是追求招牌风格的那群。

RISD 的色彩课让我学到了很多,但除此之外,我基本上都在自学画画。自学是不必交学费的。于是,1993 年我退学了。我在普罗维登斯又待了一阵,大学朋友 Nancy Parmet 帮了我一个大忙:她母亲在纽约有栋楼,其中一套受租金管制的公寓要空出来,问我要不要。租金比我当时的住处贵不了多少,而纽约据说才是艺术家该待的地方。当然,我要![7]

《阿斯特里克斯》漫画开场时,镜头会不断推近罗马统治下的高卢,最后找到一个不受罗马人控制的小角落。在纽约地图上,你也能这样做:放大上东区,会找到一个并不富裕的小角落,至少 1993 年时不富裕。那里叫约克维尔,是我的新家。现在,我是个纽约艺术家了——严格从“在纽约居住并画画”这个意义上说。

我开始为钱担心,因为能感觉到 Interleaf 正在走下坡路。自由职业的 Lisp 编程工作很少,我又不想改用其他语言,在当时,就算幸运也大概要写 C++。于是,凭着自己对赚钱机会那“永不出错”的嗅觉,我决定再写一本 Lisp 的书。这次要更通俗些,可以拿来当教材。我想象自己靠版税节俭地过日子,把时间都用来画画。那本书《ANSI Common Lisp》的封面,就是我在那时候画的。

对我来说,纽约最好的地方是有 Idelle 和 Julian Weber。Idelle Weber 是一位画家,也是早期照相写实主义画家之一。我在哈佛上过她的绘画课,从没见过哪位老师像她这样受学生喜爱。许多毕业生一直与她保持联系,包括我。搬到纽约以后,我实际上成了她的画室助手。

为了能画画,我决定先去赚钱

她喜欢在边长四到五英尺的大方形画布上作画。1994 年末的一天,我正为其中一块大画布绷框,收音机里传来一位著名基金经理的消息。那人没比我大多少,却已经非常有钱。我突然想到:我为什么不先变得有钱呢?那样,我不就能想做什么就做什么了?

与此同时,我越来越常听到一个叫万维网的新东西。我去剑桥看望 Robert Morris 时,他演示给我看。那时,他在哈佛读研究生。我觉得,网络会成为一件大事。我见过图形用户界面怎样推动微型计算机普及,网络看起来也会给互联网带来同样的变化。

如果想发财,这就是下一班即将开出的火车。这一点我猜对了,猜错的是具体点子。我觉得,我们应该成立一家公司,把画廊搬到网上。看过那么多 YC 申请以后,我不能昧着良心说这是史上最糟糕的创业点子,但绝对排得上号。画廊并不想上网,现在也一样,至少高档画廊不想。那不是他们做生意的方式。我写软件替画廊生成网站,Robert 写软件调整图片大小,再搭好 HTTP 服务器提供网页。接着,我们试着找画廊签约。说它难卖,简直太轻描淡写了。白送都很难。几家画廊允许我们免费替他们做网站,但没有一家付钱。

后来,一些网上商店出现了。我发现,除了下单按钮,它们和我们替画廊做的网站一模一样。所谓“互联网店面”听起来很了不起,其实我们已经知道怎么做。

1995 年夏天,把《ANSI Common Lisp》可直接付印的稿件交给出版社后,我们开始尝试开发制作网店的软件。最初打算做普通桌面软件,当时那就意味着 Windows 软件。这有点可怕:我们都不会写 Windows 软件,也不想学。我们生活在 Unix 的世界里。不过,至少可以先在 Unix 上做个原型。Robert 写了购物车,我写了一个面向网店的新网站生成器。当然,用的是 Lisp。

我们在 Robert 位于剑桥的公寓里干活。他的室友经常不在,我就能睡在那个房间。不知为什么,那里没有床架,也没有床单,只有地上的一张床垫。有天早晨,我躺在床垫上,一个念头让我猛地坐了起来:要是把软件放到服务器上,让用户点击链接来操作呢?这样,我们就完全不用给用户的电脑写软件了。生成网站和提供网页,都可以在同一台服务器上完成。用户只需要一个浏览器。

这种软件现在叫 Web 应用,已经很常见,但当时连它能否实现都不确定。为了找到答案,我们决定做一个可以从浏览器操作的网店制作器。几天之后,也就是 8 月 12 日,我们有了一个能运行的版本。界面糟透了,却证明了:不用任何客户端软件,也不用在服务器命令行里敲东西,单靠浏览器就能建起整家网店。

这下,我们觉得自己真的找到了好东西。我开始想象,整整一代软件都可以这样运行。不用再费心管理版本、做跨平台移植,处理那些乱七八糟的麻烦。Interleaf 有个“发布工程”团队,看上去至少和真正写软件的团队一样大。现在,只要直接在服务器上更新软件就行了。

我们成立了新公司,叫 Viaweb,因为我们的软件通过网络工作。Idelle 的丈夫 Julian 给了我们一万美元种子资金,也帮我们办最初的法律手续、给经营建议。作为交换,我们给了他公司百分之十的股份。十年后,这笔交易成了 YC 早期交易的原型。我们知道创始人需要这样的帮助,因为我们自己就需要。

这时,我的净资产还是负数:银行里大约一千美元,还抵不上欠政府的税款。给 Interleaf 做咨询挣到钱时,我有没有认真留出该交税的那一部分?没有。因此,虽然 Robert 有研究生津贴,我却得靠这笔种子资金生活。

本来希望九月上线,可做着做着,我们对软件的要求越来越高。最后,我们做出了一个所见即所得的网站制作器:你编辑时看到的页面,和之后生成的静态页面完全一样,区别只是链接没有指向静态网页,而是指向服务器哈希表中保存的闭包。

学过艺术在这里帮了忙。网店制作器的主要目标,是让用户看起来正规、可信,而要做到这一点,制作质量很关键。只要把版式、字体和颜色处理好,一个在卧室里开店的人,看起来甚至可以比大公司更专业。

(如果你好奇,我的网站为什么这么老派,那是因为它仍在用这套软件制作。今天看起来也许有点笨拙,可在 1996 年,它已经是最时髦的那一种了。)

到了九月,Robert 提出了抗议。他说:“我们都做了一个月了,还没做完。”现在想起来很好笑,因为差不多三年后,他还在做它。不过,我觉得多找些程序员也许是明智的,便问他,研究生同学里还有谁特别厉害。他推荐了 Trevor Blackwell。起初我很意外,因为当时我对 Trevor 的主要印象,是他打算把生活中的一切都简化成一叠随身携带的便签卡。但 Robert——大家叫他 Rtm——一如既往是对的。Trevor 后来证明自己是个效率高得吓人的程序员。

和 Robert、Trevor 一起工作非常开心。他们是我认识的最有独立思想的两个人,方式却截然不同。要是能看到 Rtm 的脑子,里面大概像新英格兰殖民时期的教堂;而 Trevor 的脑子,则像奥地利洛可可风格最夸张的那一面。

1996 年 1 月,我们正式营业,最初有六家网店。多等那几个月倒是好事,因为我们一直担心来晚了,实际却早得几乎足以致命。当时媒体满篇都在谈电子商务,可真正想开网店的人并不多。[8]

软件主要分三部分:我写的编辑器,供用户制作网站;Robert 写的购物车;Trevor 写的管理工具,负责订单和统计。以当时的标准,编辑器是最好的通用网站制作工具之一。我把代码保持得很精简,而且除了 Robert 和 Trevor 的部分,不用和别的软件整合,写起来很开心。如果只需要做这套软件,接下来的三年可能会是一生中最轻松的三年。可惜,我还得做很多其他事情,而且每一件都比编程更不擅长。结果,那反而成了压力最大的三年。

九十年代后半期,有许多创业公司在做电商软件。我们决心做 Microsoft Word,而不做 Interleaf,也就是易用、便宜。我们穷,倒是件幸运的事,因为 Viaweb 的定价因此比自己意识到的还要低:小网店每月一百美元,大网店三百美元。低价很吸引客户,也一直让竞争对手头疼。但我们不是靠什么高明洞察才定这么低的,只是根本不知道企业通常愿意为这种东西花多少钱。每月三百美元,在我们看来已经很多了。

我们就这样,误打误撞做对了不少事。比如,做那些现在被称为“无法规模化”的事。当时我们大概会说:“我们太没本事了,只好用最绝望的办法找用户。”最常做的,就是替用户建网店。这格外让人难堪:软件存在的全部意义,本来就是让用户自己建店,我们却要替他们做。但只要能找到用户,什么办法都愿意试。

我们学到了远比自己想知道的还多的零售知识。比如,如果只能放一张小小的男衬衫图片——以今天的标准,当时所有图片都很小——与其放整件衬衫,不如放领口特写。我之所以记得,是因为弄明白这件事以后,我得重新扫描大约三十张衬衫图片。第一批明明也扫得那么漂亮。

这些事做起来感觉不对,却恰恰是我们该做的。替用户建店,让我们理解了零售,也亲身感受到了使用自己软件是什么滋味。最初,“商业”让我既困惑又排斥,我觉得得找个“懂商业的人”来负责。可一旦有了用户,我的想法就变了,和有了孩子后接受父亲身份很相似。用户需要什么,我就愿意去做什么。也许有一天用户多到我再也没法替他们扫描图片,但在那之前,没有比这更重要的事。

另一个当时没明白的道理,是增长率才是检验创业公司的最终标准。我们的增长率不错:1996 年底大约七十家店,1997 年底大约五百家。我却误以为最重要的是用户总数。从收入角度看,用户总数确实重要,挣不够钱,公司可能倒闭。但长远来说,只要增长率在,总数自然会跟上。如果当年的我们是我在 YC 辅导的公司,我会说:别这么紧张,你们做得不错,一年增长七倍呢。只要别再招太多人,很快就能盈利,然后就能掌握自己的命运。

可惜,我还是又招了不少人。一部分是投资人希望如此,一部分是互联网泡沫期间的创业公司都这样做。只有几名员工,显得太业余。所以,直到 1998 年夏天雅虎收购我们前后,我们才做到盈亏平衡。这意味着,在公司整个存续期间,我们都受制于投资人。而我们和投资人又都不懂创业,结果连按创业公司的标准看,也是乱成一团。

被雅虎收购,我如释重负。按理说,Viaweb 的股份当然有价值:那是一家盈利、快速增长企业的股份。可我并不真有这种感觉。我不知道怎么给企业估值,却清楚记得,我们似乎每隔几个月就要濒死一次。创业以后,我也一直没怎么改变研究生时期的生活方式。所以,被雅虎收购,感觉就是从穷变富。既然要去加州,我买了辆车,一辆 1998 年的黄色大众 GTI。我还记得自己当时觉得,那副真皮座椅是我拥有过的最奢侈的东西。

离开雅虎,重新画画

接下来,从 1998 年夏天到 1999 年夏天,可能是我一生中效率最低的一年。当时没意识到,经营 Viaweb 带来的辛劳和压力已经让我筋疲力尽。到了加州,我还想延续原来的习惯,编程编到凌晨三点。但疲惫、雅虎未老先衰的文化,以及圣克拉拉令人压抑的办公环境,一点点让我消沉。几个月后,那种感觉已经让人不安地想起 Interleaf 的日子。

收购时,雅虎给了我们不少股票期权。我觉得雅虎估值过高,那些期权大概永远值不了什么钱。可没想到,接下来一年股价又涨了五倍。我等到第一批期权归属,就在 1999 年夏天离开了。我太久没画画,几乎都忘了自己当初为什么创业。软件和男衬衫已经占据脑子整整四年。可我提醒自己:做这些事,是为了有钱后能画画。现在有钱了,就该去画了。

我提出离职时,雅虎的上司和我谈了很久,问我的打算。我告诉他想画些什么。当时,我还挺感动,觉得他这么关心我。现在才明白,他大概以为我在撒谎。那时,我每个月归属的期权价值大约两百万美元。肯放弃那么多钱,一定是要去创办新公司;而如果这样,我还可能带走一些人。那是互联网泡沫的顶峰,雅虎就在中心,连我的上司那时都成了亿万富翁。在他看来,离开去另办公司,大概是件疯狂、但也说得通的事。

可我真的只想画画,而且马上就开始了。没有时间浪费:我已经花了四年去赚钱。如今,遇到卖掉公司后离开的创始人,我的建议总一样:先去休假。我当时也该这样,找个地方待上一两个月,什么也不做。但这个念头从来没出现过。

我试着画画,却好像既没精力,也没雄心。一部分原因,是在加州认识的人太少。我还在圣克鲁斯山上买了栋房子,让问题更严重了:景色很美,离哪儿都远。撑了几个月,我绝望地回了纽约。那套公寓竟然还在,像封存着旧生活的一座墓穴。如果了解租金管制,这就不奇怪了。至少,Idelle 在纽约,也还有其他想画画的人,虽然我不认识他们。

回到纽约,我又过起旧日的生活,只是如今有钱了。这话听起来很怪:原来的生活习惯又回来了,但有些以前打不开的门,现在打开了。走累了,只要一抬手就能坐出租车——下雨时除外。经过一家漂亮的小餐馆,可以进去吃午饭。一度,这一切都很让人兴奋。画画也渐渐顺了。我试着用一种新的方式画静物:先按原来的办法画一幅,拍照、放大打印到画布上,再用它做第二幅的底稿,对着同一组物体画,前提是它们还没烂掉。

与此同时,我开始看可以购买的公寓。现在,我真的能选择住在哪个街区了。我问自己,也问一个个房产经纪人:纽约哪里像剑桥?偶尔再回剑桥时,我逐渐意识到,纽约没有这样的地方。嗯。

就在这时,也就是 2000 年春天,我有了一个点子。Viaweb 的经历让我很清楚,Web 应用是未来。那为什么不做一个用来制作 Web 应用的 Web 应用?为什么不让人们直接在浏览器里编辑我们服务器上的代码,然后由我们托管生成的应用?[9] 服务器还可以提供许多服务,让那些应用通过 API 调用:打电话、接电话、处理图片、接收信用卡付款等等。

我兴奋得几乎想不了别的事。这显然就是未来。我并不特别想再创业,可这个想法显然得通过一家公司来实现,于是我决定搬回剑桥开干。我想拉 Robert 一起,却碰了壁。他那时在 MIT 做博士后。上次被我拉去做项目,虽然挣了不少钱,也耗掉了大量时间。所以,他承认点子不错,却坚决不肯加入。

哼,那就自己来。我找了以前在 Viaweb 工作的 Dan Giffin,再加上两个想找暑期工作的本科生,一起动手。现在看来,我们想做的软件,足够分给二十来家公司和几个开源项目。用来定义应用的语言,当然会是 Lisp 的一个方言。不过,我还不至于天真到觉得能把一个一眼看出是 Lisp 的东西直接端给大众。我们会像 Dylan 那门语言一样,把括号藏起来。

到那时,像 Viaweb 这样的公司有了一个名字,叫“应用服务提供商”,简称 ASP。这个叫法没活多久,就被“软件即服务”取代了。但它存在的时间,已经足够让我用它给公司取名:Aspra。

我负责应用制作器,Dan 做网络基础设施,两个本科生做最初的两项服务:图像和电话。可到了夏天的一半,我意识到自己真的不想经营公司,尤其不想经营这样一家看来会做得很大的公司。我开始做 Viaweb,是因为缺钱。现在不缺了,为什么还要再来一遍?如果非得开公司才能实现这个愿景,那就去他的愿景。我可以挑一部分,做成开源项目。

有意思的是,花在这件事上的时间并没白费。后来办起 YC,我常常遇到一些创业公司,正在做那套新架构的某个部分。花那么多时间琢磨过,甚至试着写过代码,对理解它们很有帮助。

我决定做成开源项目的那一部分,是一种新的 Lisp。这下,连括号都不必藏了。很多 Lisp 程序员都梦想造一种新 Lisp。一部分原因,是这种语言的一个特点就是有许多方言;另一部分原因,我想,是我们心里都有一个理想形式的 Lisp,现有方言都还没达到。我肯定如此。夏天结束时,Dan 和我便在我买下的剑桥那栋房子里,开始做这个叫 Arc 的 Lisp 新方言。

原来,文章可以直接写给读者

第二年春天,一个机会突然来了。有人邀请我在 Lisp 会议上演讲,我讲的是 Viaweb 怎样使用 Lisp。讲完后,我把演讲的 PostScript 文件放到了 paulgraham.com 上。网站是几年前用 Viaweb 做的,此前一直没拿它干什么。一天之内,页面被浏览了三万次。怎么回事?查看流量来源,发现有人把它发到了 Slashdot。[10]

哇,原来有读者。我想,只要写点东西放上网,任何人都能看。这在今天似乎显而易见,当时却很惊人。印刷时代,通往读者的路很窄,门口还守着一种叫编辑的凶猛怪兽。要让人读到你的东西,只能出书,或者登上报刊。现在,谁都能发表任何东西。

原则上,1993 年起就能这样做了,但没多少人真正意识到。我在其中大部分时间里,都密切参与着网络基础设施的建设,同时自己也是写作者,却花了八年才反应过来。就算反应过来了,也又过了几年才理解其意义:这会带来整整一代全新的文章。[11]

印刷时代,发表随笔的空间小得可怜。除了少数获得认可、混得进纽约那几个圈子的思想家,能发表文章的,往往只能是谈自己专业的专家。许多文章因此从未被写出来,因为没地方发表。现在,它们可以被写出来了,而我就要去写它们。[12]

我做过几件不同的事,但某种意义上的转折点,是开始在网上发表文章。从那以后,我知道,无论做什么,我都会继续写文章。

我知道,一开始网络文章会是很边缘的媒介。论社会地位,它们更接近怪人在 GeoCities 网站上的咆哮,而不是《纽约客》里排版精美、文辞优雅的文章。但这时,我已经明白得足够多,知道这种边缘地位应该让人振奋,而不是泄气。

回顾自己的人生,一个特别明显的模式是:至少对我而言,做那些不太有声望的事情,往往很有成效。静物画一直是绘画里地位最低的类型。Viaweb 和 YC 刚开始时,也一点都不显得光鲜。陌生人问我在写什么,我说是在写一篇准备放到自己网站上的文章,他们至今还会一脸茫然。就连 Lisp,虽然像拉丁语一样,有某种智识上的声望,仍然不怎么时髦。

这并不是说,没名气的工作本身就好。但如果一件工作没什么声望,你还是被它吸引,这就表明,那里也许真有什么值得发现的东西,而你的动机也比较对。有抱负的人很容易受不纯的动机影响。如果有什么会让你走偏,最常见的就是想给别人留下深刻印象。所以,做没有声望的工作,并不能保证方向正确,却至少能让你避开最常见的那条歧路。

接下来几年,我写了许多主题各异的文章。O’Reilly 选出其中一些结集出版,书名《黑客与画家》,取自其中一篇文章。我也做垃圾邮件过滤器,画画。每周四晚上,我为一群朋友做晚饭,因此学会了怎样给一大群人做饭。我还在剑桥又买了栋楼作办公室,那曾是糖果厂,后来据说又成过色情片拍摄工作室。

YC 是怎样开始的

2003 年 10 月的一个晚上,我家办了一场大派对。这是朋友 Maria Daniels 想的主意,她也是周四晚餐的常客。三个主办人各自邀请朋友参加同一场派对。这样,对每个客人来说,现场都有三分之二的人是自己不认识、却可能喜欢的。其中有一个我不认识的人,后来却发现自己很喜欢她:Jessica Livingston。几天后,我约她出去。

Jessica 在波士顿一家投资银行做市场营销。那家银行自认为懂创业公司,但接下来一年,她认识我那些创业圈的朋友后,很惊讶现实与银行的想象相差那么大,创始人的故事又那么丰富。于是,她决定写一本创业者访谈的书。

后来银行遇到财务问题,Jessica 不得不裁掉自己手下一半的员工,便开始找新工作。2005 年初,她面试了波士顿一家风投公司的市场营销职位。对方拖了几周才作决定。等消息的时候,我不断和她说,风险投资有多少地方该改:应该做更多小额投资,而不是少数几笔巨额投资;应该资助年轻的技术创始人,而不是 MBA;应该让创始人继续做 CEO,等等。

我写文章的一个办法,一直是先做演讲。想到自己要站在人前,说一些不浪费他们时间的话,就特别能激发思考。哈佛计算机协会,也就是学校的计算机社团,邀请我演讲时,我决定讲怎样创业。也许,听众能避开我们犯过的那些最糟糕的错误。

演讲时,我说,最好的种子资金来源,是那些已经创业成功的人,因为他们还能提供建议。话音一落,好像所有人都期待地看着我。一想到邮箱可能会被商业计划书淹没——当时真该知道以后会发生什么——我就脱口而出:“但别找我!”然后继续讲下去。可事后想想,我真的该停止拖延了。自从被雅虎收购,我就一直想做天使投资。已经过去七年,居然一笔都没做。

同时,我一直和 Robert、Trevor 商量还能一起做些什么。我很想念一起工作的日子,觉得总能找出一件可以一起干的事。

3 月 11 日,Jessica 和我吃完晚饭走回家,走到 Garden Street 和 Walker Street 的拐角时,三件事突然合到一起。去他的,那些拖拖拉拉的风投!我们自己开一家投资公司,把一直说的想法真正做出来。我出钱,Jessica 可以辞职来一起工作,再把 Robert 和 Trevor 拉来当合伙人。[13]

无知再一次帮了我们。我们完全不知道怎么做天使投资,而 2005 年的波士顿又没有一个 Ron Conway 可以请教。于是,我们只是做那些自己看来显而易见的选择。其中一些,后来被证明是创新。

YC 有好几个部分,不是一次想清楚的。先想明白的是,我们要做一家“天使投资公司”。当时,这两个词并不搭。风投公司是有组织、专做投资的机构,可只做数百万美元的大额投资;天使则投得少些,但通常主要忙自己的事情,只是偶尔投一笔。两边都没有给刚起步的创始人足够帮助。我们知道创始人有多无助,因为我们记得自己也一样。比如,Julian 帮我们成立公司,在我们眼里几乎像变魔术。写复杂软件没问题,可注册公司、制定章程、处理股份,这一切到底怎么办?我们不仅想投种子资金,也想替创业者做 Julian 当年替我们做过的事。

YC 一开始没有采用基金形式。运营成本够低,我们就用自己的钱。这话对百分之九十九的读者大概没什么意义,可专业投资者一听就会想:“哇,那就是说收益全归他们自己。”但这同样不是因为有什么高明洞察。我们根本不知道风投通常怎么组织,从未想过募一只基金。真想到了,也不知道从哪儿开始。[14]

YC 最独特的地方,是分批进行:一年两次,同时投资一批创业公司,再集中花三个月帮助它们。这个办法也是误打误撞发现的。不是事后推测我们无知,而是当时就明摆着:我们需要积累投资经验,最好的办法,莫过于同时投一大批公司。我们知道,本科生夏天会到科技公司做暑期工作。那为什么不办个暑期项目,让他们自己创业?这样也不用为自己只是“半吊子投资人”内疚,因为他们某种意义上也是“半吊子创始人”。我们多半挣不到多少钱,至少能拿他们练习投资,他们也可能比去微软过一个暑假更有意思。

我在剑桥买的那栋楼,就拿来当总部。每周在那里聚餐一次,定在周二,因为周四我已经要给周四晚餐的朋友们做饭。晚饭后,请了解创业的人来讲点东西。

本科生那会儿正决定暑假去哪儿工作,我们便在几天内想出了“夏季创始人计划”,我在网站上发公告,邀请本科生申请。我从没想到,写文章也会带来投资人所说的“项目来源”,结果它却成了绝佳渠道。[15] 我们收到了二百二十五份申请,吃惊地发现,不少人已经毕业,或者马上要在那年春天毕业。这件事开始显得比预期严肃多了。

我们邀请大约二十组申请者来面试,选了八组投资。那是一群很出色的人。第一批里有 Reddit 的团队;后来创办 Twitch 的 Justin Kan 和 Emmett Shear;已经参与制定 RSS 规范、几年后又为开放获取事业献出生命的 Aaron Swartz;以及后来成为 YC 第二任总裁的 Sam Altman。我不认为第一批这么出色完全是运气。放着微软、高盛这样像样公司的暑期工作不去,选择“夏季创始人计划”这种古怪的东西,本来就得有点胆量。

投资条款,是把 Julian 当初给我们的条件——一万美元换百分之十股份——与 Robert 告诉我的 MIT 研究生暑期工作报酬——六千美元——拼在一起:每位创始人给六千美元,常见的两人团队就是一万两千美元,换百分之六股份。这总该算公平,毕竟比我们当年接受的条件好了一倍。而那个非常热的夏天,Jessica 还为创始人弄来了免费的空调。[16]

我很快意识到,我们偶然发现了把创业投资做得更大的一种方式。批量投资,对我们方便,许多事可以同时给所有公司做;而成为一个批次的一员,对创始人也更好。它解决了创业者一个很大的问题:孤独。现在不仅有同伴,而且这些同伴理解你面临的问题,还能告诉你自己怎样处理过。

YC 继续长大,我们又发现了一些规模的好处。往届创始人成了紧密的社群,愿意互相帮助,尤其愿意帮当前这一批,因为他们还记得不久前自己的处境。创业公司也开始互相成为客户。我们开玩笑叫它“YC GDP”,但随着 YC 长大,这越来越不只是个玩笑。如今,有些公司最早的客户,几乎全来自同一批的其他公司。

我本来没想把 YC 当成全职工作,而是想做三件事:编程、写文章、做 YC。YC 越长大,我越感兴趣,占去的注意力也超过了三分之一。不过,最初几年,我仍有余力做其他事。

文章配图

*2009 年夏季 YC,Paul Graham 向创业者介绍 Prototype Day 的规则。 图像来源 · Kevin Hale / CC BY-SA 2.0 · *许可

当一件工作占满了所有注意力

2006 年夏天,Robert 和我开始写新版 Arc。这版速度相当快,因为它会编译成 Scheme。为了测试它,我用 Arc 写了 Hacker News。最初,它叫 Startup News,是给创业者用的新闻聚合网站。但过了几个月,我就厌倦了只看创业新闻。我们想接触的,也不只是已经创业的人,更是未来可能创业的人。于是,我把名字改成 Hacker News,主题也改成任何能激发求知欲的东西。

HN 毫无疑问有利于 YC,但它也是我压力最大的来源。如果只需挑选创始人、帮助他们,日子会轻松得多。这也意味着,做 HN 是个错误。不过,一份工作里最大的压力,至少应该和它的核心有关。我却像个跑马拉松的人,疼不是因为跑累了,而是因为鞋不合脚、起了水泡。YC 碰上紧急问题,需要我处理时,大约六成和 HN 有关,剩下所有事情加起来才占四成。[17]

除了 HN,我还用 Arc 写了 YC 的全部内部软件。可虽然一直用 Arc 做许多事,我却逐渐不再开发 Arc 本身。一方面没时间,另一方面,已有这么多基础设施依赖它,再拿它做实验也就不那么有吸引力了。这样,原来的三个项目只剩两个:写文章和做 YC。

YC 和我以前的工作不同。我不再自己决定要做什么,而是问题来找我。每六个月,一批新的创业公司进来,不管碰到什么问题,都会变成我们的问题。这工作非常吸引人:问题各不相同,好的创始人行动又特别有效。如果想尽可能快地了解尽可能多的创业公司,很难有比这更好的办法。

这份工作也有我不喜欢的部分:合伙人争执,判断别人什么时候在撒谎,和苛待创业公司的人周旋,等等。可这些我不喜欢的部分,我也努力做。Kevin Hale 说过一句话,一直让我放不下:“没有人会比老板更努力。”他既在描述现实,也在说一个应然的道理。后一层意思让我害怕。我希望 YC 做得好,如果我的努力程度决定了其他人努力程度的上限,那我最好足够努力。

2010 年,有一次 Robert Morris 到加州参加我们的面试工作,他做了一件让我惊讶的事:主动给了我建议。我只记得他以前这样做过一次。那是在 Viaweb,我被肾结石疼得弯下腰,他建议我最好去医院。Rtm 得到这种程度,才会主动提建议。所以,那次他说的话,我记得很清楚:“你知道,你应该确保 YC 不是你这辈子做的最后一件酷事。”

当时我不明白,后来才意识到,他是在劝我离开。这似乎很奇怪,因为 YC 发展很好。不过,若说有什么比 Rtm 主动建议更少见,那就是 Rtm 判断出错。这让我开始想:照现在这样下去,YC 真会成为我最后做的一件事,因为它只会占去更多注意力。它已经吞掉了 Arc,接下来又要吞掉我的写作。如果 YC 不是我打算做一辈子的事业,那迟早得走。而它确实不是。所以,我会离开。

2012 年夏天,母亲中风了,原因是结肠癌引发的血栓。中风破坏了她的平衡能力,她被送进护理机构,可她一心想离开,回到自己家。我和姐姐决定帮她实现。我定期飞去俄勒冈州看她,航程中有很多时间思考。其中一次飞行,我意识到,是时候把 YC 交给别人了。

我问 Jessica 想不想做总裁,她不想。我们就决定试着请 Sam Altman 来。与 Robert、Trevor 商量后,大家一致同意彻底换一班人。此前,YC 由我们四个人最初设立的有限责任公司控制。但我们希望 YC 能长久存在,那就不能一直由创始人控制。所以,如果 Sam 答应,我们就让他重组 YC:Robert 和我退休,Jessica 与 Trevor 则回到一般合伙人的角色。

问 Sam 愿不愿意做 YC 总裁时,他一开始说不想。他想另外创业,造核反应堆。但我一直劝,直到 2013 年 10 月,他终于答应了。我们决定,从 2014 年冬季批次开始,让他接手。2013 年剩下的时间,我逐渐把运营交给他,一方面好让他熟悉工作,另一方面也是因为母亲癌症复发,我的心思主要在她身上。

2014 年 1 月 15 日,她去世了。我们知道这天会来,可真的来了,还是很难。

我在 YC 又工作到三月,帮助那批公司完成 Demo Day,然后几乎完全退出。(我仍会和往届创始人,以及一些自己感兴趣的新公司联系,但每周只占几个小时。)

下一件想做的事

接下来做什么?Rtm 的建议可没包括这一部分。我想做点完全不同的事,于是决定画画。我想看看,如果真的专心画,自己能画到什么程度。所以,不再去 YC 工作的第二天,我就开始画了。手有些生,花了一阵才找回状态,但至少,这件事让我全身心投入。[18]

2014 年剩下的大部分时间,我都在画画。我以前从没这样不受打断地工作,画得也比从前好。还不够好,但确实在进步。到了十一月,有一天,画着画着,我突然不想再画了。此前,我一直好奇眼前这幅画最后会是什么样子,可那一刻,画完它却成了一件苦差事。于是,我停下来,洗干净画笔,之后就没再画过。至少,到现在还没有。

我知道,这听起来好像有点没毅力。但注意力是零和的。能够自己选工作时,如果选了一件并非最适合自己、或至少不够好的事,就会挡住另一件更好的事。而到了五十岁,浪费时间的机会成本是实实在在的。

我又开始写文章,接下来的几个月写了不少,甚至有几篇和创业无关。到了 2015 年 3 月,我再次开始研究 Lisp。

Lisp 的独特之处,在于它的核心是用它自身写出的解释器来定义的。起初,它并不是通常意义上的编程语言,而是一个计算的形式模型,是图灵机之外的另一种选择。要为一种语言写一个用它自身实现的解释器,最少需要预先定义哪些运算符?John McCarthy 发明的 Lisp,或者更准确地说,发现的 Lisp,就是这个问题的答案。[19]

McCarthy 起初甚至没意识到,这样的 Lisp 可以直接拿来编程,直到研究生 Steve Russell 提出了这个想法。Russell 把 McCarthy 的解释器翻译成 IBM 704 机器语言,从那时起,Lisp 也成了通常意义上的编程语言。但源于计算模型的出身,赋予了它其他语言难以比拟的力量与优雅。这正是大学时吸引我的地方,只是当时还不明白原因。

文章配图

*John McCarthy 讨论 Lisp,斯坦福,2006 年。 图像来源 · null0 / Roland Dobbins / CC BY 2.0 · *许可

McCarthy 在 1960 年给出的 Lisp,只能求值 Lisp 表达式。一门编程语言需要的许多东西,它都没有。后来,人们把这些东西加进来了,却没沿用 McCarthy 最初那种从基本公理出发的办法。当时也做不到。McCarthy 是靠手工模拟执行来测试解释器的,这已经差不多是手工能处理的极限,实际上还有一个错误没被他发现。要测试更复杂的解释器,就必须真的运行它,而当时的计算机还不够强。

现在可以了。现在,你可以沿用 McCarthy 的公理化办法,一直定义出一门完整的编程语言。只要对原始 Lisp 的每次修改,都保留它作为某种“发现”的性质,原则上,最后得到的完整语言也能保留这种性质。当然,做起来比说起来难得多。但既然原则上可行,为什么不试试?我就决定试。结果,花了四年多,从 2015 年 3 月 26 日做到 2019 年 10 月 12 日。幸好目标很明确,不然,很难撑这么久。

我借助 Arc,用这种新 Lisp 自身写出了它,我叫它 Bel。这听起来也许有些矛盾,也说明了,为了让它真的跑起来,我用了多少变通办法。靠一连串相当离谱的变通手法,我做出了一个足够接近用自身编写的解释器的东西,而且能实际运行。速度不快,但足够拿来测试。

大部分时间,我必须禁止自己写文章,不然根本做不完。2015 年底,我花了三个月写文章,回来继续 Bel 时,几乎看不懂代码了。不是代码写得差,是问题本身太复杂。研究一个用自身编写的解释器时,很难随时弄清自己正在哪一层。有些错误,就算找到了,也像经过加密一样难懂。

于是我告诉自己,Bel 做完前,不再写文章。但做的过程中,只有很少几个人知道这件事。因此,好几年里,我看起来像什么都没干,实际上却比以前任何时候都努力。有时,与一个可怕的 bug 搏斗了几个小时,我看看 Twitter 或 HN,会看到有人问:“Paul Graham 还写代码吗?”

做 Bel 很难,也很满足。我投入到任何时候脑子里都装着相当一部分代码,还能在脑中接着写。记得 2015 年一个晴天,我带孩子去海边,看他们在潮池里玩,自己一边琢磨某个与续延有关的棘手问题。那时,我觉得自己过上了想要的生活。我记得这么清楚,是因为这种感觉居然如此新鲜,让我有点难过。好在,后来几年,这样的时刻更多了。

2016 年夏天,我们搬到了英国。我们希望孩子体验另一个国家的生活,而我出生时就有英国国籍,英国显然是个自然的选择。本来只打算住一年,可我们很喜欢,所以一直留了下来。Bel 的大部分,就是在英国写的。

2019 年秋天,Bel 终于完成了。它和 McCarthy 最初的 Lisp 一样,是一种规范,而不是一个实现,虽然这个规范同样用代码表达。

现在,我又能写文章了,便把积累下来的题目写了一批。2020 年,我继续写,也开始想,还有什么工作可以做。我应该怎样选择接下来要做的事?那么,过去我又是怎样选择的?为了回答这个问题,我先给自己写了一篇文章,却惊讶地发现,答案如此漫长,又如此混乱。连亲身经历过的人都会惊讶,想必别人读起来也可能觉得有趣。对那些同样走得七拐八绕的人,也许还会有些鼓励。所以,我为其他人写了一个更详细的版本,而你正在读的,就是它的最后一句。

原注

原注 1 我的经历跳过了计算机发展中的一个阶段:带交互式操作系统的分时计算机。我直接从批处理跳到微型计算机,因此后者显得格外让人兴奋。

原注 2 意大利语里表达抽象概念的词,几乎总能根据对应的英语词猜出来,偶尔也会碰上 polluzione 这样的陷阱。不同的是日常用语。因此,只要用几个简单动词串起许多抽象概念,一点点意大利语也能派上很大用场。

原注 3 我住在 Piazza San Felice 4 号,去学院时会穿过老佛罗伦萨的中轴:经过皮蒂宫,走过桥,经过 Orsanmichele,在大教堂和洗礼堂之间穿过,再沿 Via Ricasoli 走到圣马可广场。从空无一人的漆黑冬夜,到挤满游客的酷热夏日,我在街道上见过这座城市各种各样的样子。

原注 4 当然,只要对方愿意,你也可以把人当作静物来画。这种肖像甚至可以说是静物画的顶峰,不过长时间坐着,确实容易让模特露出痛苦的表情。

原注 5 Interleaf 只是许多同类公司中的一家:聪明人聚在一起,做出过了不起的技术,最后却被摩尔定律碾过去。二十世纪九十年代,通用处理器,也就是 Intel 处理器,性能的指数增长,像推土机一样推平了那些高端专用硬件与软件公司。

原注 6 RISD 那些追求招牌风格的学生,也不见得特别唯利是图。在艺术界,金钱和“酷”紧密相连。贵的东西会被认为酷,而被认为酷的东西,很快也会变贵。

原注 7 严格来说,那套公寓适用的是租金稳定制度,不是租金管制制度。不过,大概只有纽约人才知道、或在意这个区别。要紧的是,它真的便宜,租金不到市价的一半。

原注 8 大多数软件做好就能发布。但如果你做的是网店制作器,还负责托管这些网店,那么一个用户都没有,就会一眼被看出来。所以,在公开上线之前,我们得先私下上线,找一批最初的用户,确保他们都有像样的店面。

原注 9 Viaweb 里有一个代码编辑器,让用户定义自己的页面样式。用户并不知道,他们实际上在编辑底层的 Lisp 表达式。不过,它不算应用编辑器,因为这些代码是在生成商家网站时运行,而不是顾客访问网站时运行。

原注 10 这是后来常见的一种经历第一次出现,接着发生的事也一样常见:一看评论,满眼都是生气的人。我怎么能说 Lisp 比其他语言好?难道它们不都是图灵完备的吗?有时,有人看到我的文章引发的反应,会说替我难过。我回答,从一开始就这样,并不夸张。这就是这一行的常态。文章总要告诉读者一些他们不知道的事,可有些人不喜欢有人告诉他们这些。

原注 11 当然,九十年代人们已经在互联网上放了许多东西。但把东西放上网,与以网络为主要发表渠道,并不相同。后者意味着,你把网络版本当成主要版本,或至少是主要版本之一。

原注 12 这里有个更普遍的教训,我们在 YC 也一再见到:产生某种惯例的限制早已消失,惯例却还会继续束缚你。风险投资的那些老做法,和发表文章的那些惯例一样,过去确实有其现实原因。创业曾经贵得多,也相对少见。现在,创业可以很便宜,创业公司也很多,可风投习惯仍反映着旧世界,就像写文章的惯例仍反映着印刷时代。

这意味着,能独立思考,也就是较少受惯例左右的人,在变化很快的领域会更有优势,因为那里的惯例更容易过时。

不过,有意思的是,你没法总预先知道哪些领域会快速变化。软件和风险投资显然会,可谁会想到,连随笔写作也会受到这种影响呢?

原注 13 YC 最初不叫 Y Combinator,而叫 Cambridge Seed。我们不想用一个地域性的名字,以免有人到硅谷复制我们,便改用 λ 演算中一个很酷的技巧来命名:Y 组合子。

选橙色,一部分因为它是最温暖的颜色,一部分因为没有风投公司用它。2005 年,风投公司用的都是栗色、海军蓝、森林绿这类沉稳颜色,因为他们想吸引有限合伙人,而不是创始人。YC 标志本身也是一个内部玩笑:Viaweb 是红圆圈里的白色 V,我就给 YC 做了橙方块里的白色 Y。

原注 14 2009 年,YC 开始采用基金形式,因为规模太大,我已经没法个人出资维持。Heroku 被收购后,我们又有足够的钱回到自己出资的状态。

原注 15 我一直不喜欢 deal flow,也就是“项目流”这个说法,它暗示某个时刻的创业公司数量是固定的。这不对。而 YC 的目的,恰恰就是促使原本不会存在的公司出现,证明这件事。

原注 16 她说,那些空调大小、形状各不相同,因为当时需求太旺,能找到什么就得拿什么。可每一台,都比今天的她能搬动的还重。

原注 17 HN 还有一个奇怪的麻烦,只有同时写文章、又经营论坛的人才会碰到。你经营论坛,别人就假定你会看每场讨论,至少会看与你有关的讨论。你写文章,别人又会在论坛上对它作出想象力丰富的误读。两件事分开来看,都烦人但尚可忍受,合到一起就成了灾难。你实际上不得不回应这些误读,因为既然大家认定你在场,对一条点赞足够多的误读不回应,就会被当作默认它正确。可这又会引来更多争论:想找你吵架的人都觉得,机会来了。

原注 18 离开 YC 最难受的,是不再与 Jessica 共事。我们认识以来,几乎一直一起工作;既没试过,也不想把工作和个人生活分开。因此离开,就像拔起一棵根扎得很深的树。

原注 19 要把“发明”与“发现”说得更精确,可以想想外星人。例如,任何足够先进的外星文明,肯定都知道勾股定理。我相信,它们也会知道 McCarthy 在 1960 年论文里提出的 Lisp,虽然对这件事的把握没那么大。

但如果如此,也没有理由认为,它们知道的语言就止于这里。外星人显然也需要数字、错误处理和输入输出。所以,从 McCarthy 的 Lisp 出发,至少应该存在一条路,既继续发展这门语言,又保留它作为“发现”的性质。

感谢 Trevor Blackwell、John Collison、Patrick Collison、Daniel Gackle、Ralph Hazell、Jessica Livingston、Robert Morris 和 Harj Taggar 阅读本文草稿。

参考来源:Paul Graham 原文。

全文完
查看原文