PG Paul Graham 文集
100%
Part 4 · 随笔与思考 Essays & Thinking

未毕业

想创业吗? 获得 Y Combinator 的投资。

想要一份暑期工作?何不成为 暑期创始人

–>

2005年3月

(本文部分内容源于回复学生来信中的提问。)

最近,我收到几封计算机科学专业本科生的邮件,询问在大学里该做些什么。我或许不是最佳建议人选,因为我在大学主修的是哲学。但我选修了那么多CS课程,以至于大多数CS专业的学生都以为我是本专业的。至少,我绝对算得上是一名黑客。

黑客之道

在大学里,要成为优秀的黑客,你应该做什么?主要有两件事可以做:一是精通编程,二是深入学习特定且酷炫的问题。这两者实际上是相辅相成的,因为每一方都会驱动你去做另一方。

精通编程的方法是(a)大量实践(b)攻克难题。而让自己去攻克难题的方法,是投身于某个非常吸引人的项目。

这个项目很可能不是课程作业。我的朋友罗伯特在读本科时通过编写网络软件学到了很多。他的一个项目是将哈佛大学连接到阿帕网;哈佛曾是阿帕网的原始节点之一,但到1984年连接已经中断。[1] 这项工作不仅与课程无关,而且因为他全身心投入其中而荒废了学业,被学校勒令休学一年。[2] 最终一切都得到了平衡,现在他是麻省理工学院的教授。但如果你不走到那个极端,可能会更快乐;当时这给他带来了不少焦虑。

精通编程的另一个方法是找到其他擅长编程的人,学习他们掌握的知识。程序员往往会根据工作类型和使用的工具形成不同的圈子,有些圈子比其他圈子更聪明。观察你周围,看看聪明人似乎在做什么;通常这样做是有原因的。

你身边最聪明的一些人是教授。因此,找到有趣工作的一种方法是自愿做研究助理。教授们尤其青睐能帮他们解决繁琐的系统管理类问题的人,这是入门的一条途径。他们最担心的是那些不靠谱的人和简历注水者。助理最终反而增加了工作量,这种情况太常见了。所以你得让他们明白,你会意味着工作量的净减少。

如果他们拒绝,别灰心。被拒绝几乎总是没有被拒绝者想象的那么针对个人。直接去找下一个就好。(这也适用于约会。)

要当心,虽然大多数教授都很聪明,但并非所有人都从事有趣的研究。教授们需要发表新颖的成果来推进职业生涯,但在更有趣的研究领域竞争也更激烈。因此,那些不那么有雄心的教授们所做的是发表一系列结论新颖的论文,因为没人关心这些领域。你最好避开这类教授。

我从未做过研究助理,所以推荐这条路线有点心虚。我是通过编写自己的东西来学习编程的,特别是试图逆向工程Winograd的SHRDLU。我对那个程序的痴迷,就像母亲对新生婴儿一样。

无论独自工作的缺点是什么,其优点在于项目完全属于你自己。你永远不必妥协或征求任何人的许可,如果你有新想法,可以坐下来直接开始实现。

在你自己项目中,不必担心新颖性(如教授们那样)或盈利能力(如企业那样)。唯一重要的是项目在技术上的难度,而这与应用的性质无关。“严肃”的应用如数据库在技术上往往琐碎而乏味(如果你失眠,试试阅读数据库的技术文献),而“轻浮”的应用如游戏往往非常复杂精妙。我敢肯定,有些游戏公司正在开发的产品,其智力含量超过了大学CS系垫底十分之九的研究。

如果我现在上大学,我可能会研究图形学:例如,网络游戏,或者3D动画工具。我本科时,计算能力还不足以让图形学变得有趣,但现在很难想象还有什么比这更有趣的工作了。

数学

我上大学时,很多教授相信(或至少希望)计算机科学是数学的一个分支。这个想法在哈佛最为强烈,那里直到1980年代才设立CS专业;在那之前,学生只能主修应用数学。但康奈尔也好不到哪儿去。当我告诉令人敬畏的康威教授我对人工智能(当时的热门话题)感兴趣时,他告诉我应该主修数学。我至今仍不确定他是认为AI需要数学,还是认为AI是无稽之谈,主修一门严谨的学科能治愈我这种愚蠢的雄心。

事实上,作为黑客所需的数学知识量,远比大多数大学院系愿意承认的要少得多。我认为除了高中数学加上计算理论中的一些概念,你不需要太多。(如果你想避免写出n²算法,就得知道什么是n²算法。)当然,除非你打算编写数学应用。例如,机器人学就完全是数学。

但是,虽然对于大多数黑客活动你并不真正需要数学,即掌握1001种公式微分技巧的那种意义上,数学本身却非常值得学习。对于几乎任何类型的工作,它都是宝贵的隐喻来源。[3] 正因为如此,我希望我在大学时学了更多数学。

和许多人一样,我小时候在数学上受过“虐待”。我学会了将数学视为一堆既不优美也与我生活无关的公式(尽管有努力将它们翻译成“应用题”),但为了考试取得好成绩,必须死记硬背。

在大学里你能做的最有价值的事情之一,是了解数学究竟是什么。这可能并不容易,因为许多优秀的数学家是糟糕的老师。而且虽然有很多关于数学的通俗读物,但似乎很少有好的。我能想到最好的有W·W·索耶的书。当然还有欧几里得。[4]

一切

托马斯·赫胥黎曾说:“努力对一切略知一二,对某一事深知一切。”大多数大学都以这个理想为目标。

但什么是“一切”?对我来说,它意味着,人们在诚实攻克难题过程中所学到的一切。所有这些工作往往是相互关联的,因为一个领域的思想和技术常常可以被成功地移植到其他领域。即使是那些看似相当遥远的领域。例如,我写文章的方式和我写软件是一样的:我坐下来,尽可能快地敲出一个拙劣的第1版,然后花几周时间重写。

仅仅攻克难题是不够的。中世纪的炼金术士们也在攻克一个难题,但他们的方法太不靠谱,以至于研究它几乎学不到什么,可能只能了解到人们自欺欺人的能力。不幸的是,我在大学里试图学习的那种AI也有同样的缺陷:一个非常困难的问题,却轻率地用极不称手的方法去解决。大胆?更像是欺诈。

社会科学也相当不靠谱,因为它们深受思想潮流的影响。如果一个物理学家遇到一个100年前的同行,他能教对方一些新东西;如果一个心理学家遇到一个100年前的同行,他们只会陷入意识形态的争论。是的,当然,你上心理学课会学到一些东西。但关键是,你在另一个系上课会学到更多。

在我看来,真正有价值的院系是数学、硬科学、工程学、历史学(尤其是经济史、社会史和科学史)、建筑学和古典学。艺术史概论课也许值得一上。现代文学很重要,但学习它的方式就是直接阅读。我对音乐了解不多,无法评论。

你可以跳过社会科学、哲学,以及最近为回应政治压力而设立的各种院系。这些领域中的许多确实讨论重要问题。但他们讨论的方式毫无用处。例如,哲学讨论的诸多话题之一是我们彼此之间的义务;但你可以从一位睿智的祖母或E·B·怀特那里学到比学术哲学家更多的这方面知识。

我在这里是现身说法。当人们嘲笑克林顿说“这取决于‘是’这个词的含义是什么”时,我大概应该感到被冒犯。我在大学里修了大约五门关于“是”的含义的课程。

另一种判断哪些领域值得研究的方法是绘制“辍学图”。例如,我认识许多从数学转学计算机科学的人,因为他们觉得数学太难,而没有一个人反其道而行。人们不会无缘无故地做难事;除非相应地(或至少log(n)地)更有回报,否则没人会去攻克更难的问题。所以很可能数学比计算机科学更值得研究。通过类似的比较,你可以为大学里的所有院系画出一张图。在图的底部,你会找到智力含量最低的学科。

如果你用这个方法,你会得到和我刚才给出的大致相同的答案。

语言课程是个异类。我认为它们更适合被视为课外活动,就像陶艺课一样。如果与在说该语言的国家生活一段时间结合起来,它们会更有用。我大一一时兴起学了阿拉伯语。那是大量的功夫,唯一持久的收益是一种识别闪米特语词根的奇特能力和对人们如何识别单词的一些洞见。

工作室艺术和创意写作课程是未知数。通常你学不到多少东西:你只是随心所欲地创作(或不创作),然后在老师模糊的指导下,围坐在一起相互“点评”彼此的作品。但写作和艺术都是非常困难的问题,(有些)人诚实耕耘其中,所以它们值得去做,尤其是如果你能找到一位好老师的话。

工作

当然,大学生要考虑的不仅仅是学习。还有两个实际问题需要考虑:工作和研究生院。

理论上,通识教育本不应提供职业培训。但人人都知道这有点自欺欺人。每所大学的黑客都在学习实用技能,而这并非偶然。

为了找工作,你该学什么取决于你想要什么样的工作。如果你想在大公司工作,学习如何在Windows上捣鼓Blub。如果你想在酷酷的小公司或研究实验室工作,学习在Linux上使用Ruby会更好。而如果你想自己创业,我认为这将越来越普遍,那就掌握你能找到的最强大的工具,因为你将处于与竞争对手的赛跑中,而工具就是你的马。

你在大学里应该学的技能与你将在工作中使用的技能之间并非直接相关。在大学里,你的目标应该略高一些。

在训练中,足球运动员可能卧推300磅,尽管他在比赛中可能永远不需要用这么大的力气。同样,如果你的教授试图让你学习比工作中所需更高级的知识,那可能不仅仅是因为他们是脱离现实世界的学者。他们可能是在试图让你用大脑举重。

你在课堂上编写的程序,与现实世界中将编写的程序,在三个关键方面存在显著差异:它们规模较小;你可以从零开始构建;且问题通常是人为设定且预先确定的。而在现实世界中,程序更为庞大,往往涉及现有代码,且经常要求你先厘清问题所在,才能着手解决。

你无需等到毕业(甚至不必等到进入大学)就能掌握这些技能。例如,若想学会应对现有代码,你可以参与开源项目。理想雇主对此的印象深刻程度,绝不亚于你在课堂上取得的好成绩。

在现有的开源项目中,对于决定解决何种问题这第三项技能,你实践的机会不多。但你可以自行发起新项目,这完全不受限制。而优秀的雇主对此会更加刮目相看。

你应该尝试解决哪种问题呢?一个回答思路是考虑你作为用户的需求。例如,我偶然发现了一种有效的垃圾邮件过滤算法,因为我渴望摆脱垃圾邮件的困扰。现在,我期盼的是一款能奇妙地防止收件箱爆满的邮件阅读器。我习惯于将收件箱当作待办事项清单,但这就像用螺丝刀开瓶盖;人们真正需要的,其实是开瓶器。

研究生院

那研究生院呢?你该去吗?又如何才能进入一所好学校?

原则上,研究生院是研究领域的专业训练,除非你打算以研究为职业,否则不应踏入。然而,获得计算机科学博士学位的人中,有一半并未从事研究工作。我去读研并非为了成为教授,而是因为我想深入学习。

因此,若你主要对黑客技术感兴趣而选择读研,你会发现许多同样“格格不入”的同道中人。当周围一半的人与你处境相似时,你还能说自己格格不入吗?

“计算机科学”领域存在一个根本性问题,在类似情境下尤为凸显。没人能确切定义“研究”究竟为何物。大量的研究不过是硬塞进学术论文形式、以换取又一份出版成果的黑客行为。

因此,询问自己能否适应研究生院本身就具有误导性,因为很少有人能在计算机科学领域感到完全自在。整个领域都在局促不安中。所以,你对黑客技术的浓厚兴趣不应成为读研的绊脚石。但需警惕,你将不得不处理许多不喜欢的任务。

首当其冲的便是你的学位论文。几乎每个人完成论文时都对其深恶痛绝。这个过程本质上倾向于产生令人不悦的结果,如同用全麦面粉烘焙十二小时的蛋糕。鲜有论文能让人愉悦阅读,尤其是作者本人。

但已有无数前辈熬过了撰写论文的艰辛。除此之外,研究生院近乎天堂。许多人将其视为生命中最幸福的时光。而几乎所有其他人,包括我,都认为若非必须撰写论文,那段时光本该如此美好。[5]

研究生院的隐患在于,你无法提前预见其艰难阶段。博士项目初期如同大学二年级的延续,包含数年课程。因此,当你直面写论文的恐怖时,已投入数年光阴。此时放弃,你将背上“研究生辍学者”的标签,恐怕难以接受。当罗伯特因1988年编写互联网蠕虫被研究生院开除时,我极为羡慕他能寻得一条免于失败污点的出路。

总体而言,研究生院或许优于大多数其他选择。你会结识众多智者,共同的沮丧与拖延至少会成为强大的情感纽带。当然,最终你还将获得博士学位。我差点忘了这点,我想这总归有些价值。

博士学位的最大优势(除了作为学术界的通行证外),或许在于它能赋予你某种基础信心。例如,我家里的霍尼韦尔恒温器用户界面极其糟糕。我母亲使用同款型号,曾不辞辛劳地花了一天阅读用户手册来学习操作。她认为是自己的问题。但我可以这样想:“如果连获得计算机科学博士学位的人都无法理解这个温控器,那它肯定设计有缺陷。”

如果在这番模棱两可的建议后,你仍想读研,我可以就如何入学给出中肯建议。如今我的许多朋友都是计算机科学教授,因此我对招生内幕略知一二。这与大学录取大相径庭。在大多数大学,招生官决定录取名单;而博士项目则由教授亲自筛选,他们会尽力而为,因为录取的学生将是他们的助手。

显然,在顶尖学校,推荐信才是关键。标准化考试分数无足轻重,成绩单影响微小。个人陈述则主要可能因言辞不当而自断前程。教授们唯一信赖的,是推荐信,尤其是来自熟人的推荐。[6]

因此,若想进入博士项目,关键在于给教授留下深刻印象。从我的教授朋友们那里得知,真正令他们印象深刻的是:并非刻意讨好。成绩优异并希望成为其研究助理以谋取研究生院入场券的学生,并不讨喜。他们欣赏的是因对该课题真心感兴趣而成绩优异、主动求教的学生。

因此,在大学里,无论你意在读研还是精进黑客技能,最重要的事情就是探索自己真正的热爱。想欺骗教授让你进入研究生院很难,而想要欺骗问题让你解决它们则更不可能。大学是伪装失效的地方。从此刻起,除非你选择去大公司工作——那无异于重返高中时代——唯一的出路就是专注于自己热爱的事业。

脚注

[1] 似乎无人介意,这显示出即便到1984年,阿帕网(互联网前身)仍多么微不足道。

[2] 正因如此,当我身为雇主时,并不看重平均绩点。事实上,我们还主动寻找辍学者。我们曾在哈佛校园张贴海报:“你因醉心自主项目而学业受挫被退学了吗?来为我们工作吧!”我们真的找到了一位这样的年轻人,他是一名出色的黑客。

当哈佛大学让本科生休学一年时,他们需要找工作,意在让他们见识现实世界的艰难,从而珍惜校园生活。但对来我们这里工作的那位年轻人而言,这一招适得其反。他玩得比在校时更开心,那年通过股票期权赚得比任何教授薪水都多。因此,学年末他非但没有悔悟返校,反而再休一年,去了欧洲。最终,他大约26岁才毕业。

[3] 埃里克·雷蒙德指出,最能贴切描述黑客的隐喻来自集合论、组合学和图论。

特雷弗·布莱克韦尔提醒你参加专为数学系学生开设的数学课程。“‘工程师数学’课程实在糟糕透顶。事实上,任何‘为工程师而设的X’课程都质量堪忧,其中X包括数学、法律、写作和视觉设计。”

[4] 其他大力推荐的书目包括:库朗和罗宾斯的《什么是数学》;希尔伯特和科恩-沃森的《几何与想象》。对图形设计感兴趣的人,还可阅读伯恩的《欧几里得》。

[5] 如果你期望拥有完美人生,理想的做法是进入研究生院,在前一两年暗自完成论文,然后尽情享受接下来的三年时光,逐章递交成果。这一前景定让研究生们垂涎欲滴,但我从未见过有人有纪律能付诸实践。

[6] 一位教授朋友透露,每年录取的研究生中有15%到20%属于“冷门”人选。他所说的冷门,是指除推荐委员会无人认识推荐信作者外,其他各方面都无可挑剔的申请者。

因此,如果你想进入科学领域的研究生院,就必须就读于一所有真正研究型教授的大学。否则,无论你多么优秀,在招生委员会眼中都显得颇具风险。

由此引发一个令人惊讶却似乎不可避免的后果:小型文理学院注定衰微。大多数聪明的尖子生至少会考虑投身科学,即便最终未必选择。为何要选择一所限制自身发展可能性的大学呢?