Glean 拾遗
Albums / Paul Graham / Undergraduation

Undergraduation

Source www.paulgraham.com Glean’d 2026-07-07 16:24 Read 21 min
AI summary

Paul Graham offers advice to computer science undergraduates on how to become great hackers in college. Key points: work on engaging hard projects, not just class assignments; math is valuable for its metaphors but not strictly necessary; avoid bogus fields like social sciences; choose tech stacks based on target employer; grad school is paradise except for the dissertation; the key to success is genuine passion. The essay is personal, anecdotal, and candid.

Original · 21 min
www.paulgraham.com ↗
§ 1

March 2005

(Parts of this essay began as replies to students who wrote to me with questions.)

Recently I've had several emails from computer science undergrads asking what to do in college. I might not be the best source of advice, because I was a philosophy major in college. But I took so many CS classes that most CS majors thought I was one. I was certainly a hacker, at least.

2005年3月

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

最近我收到几封计算机科学本科生的邮件,询问大学期间该做些什么。我可能不是最佳建议人选,因为我在大学主修哲学。但我也修了很多计算机课程,以至于大多CS专业学生都以为我是科班出身。至少,我确实是一名黑客。

§ 2

What should you do in college to become a good hacker? There are two main things you can do: become very good at programming, and learn a lot about specific, cool problems. These turn out to be equivalent, because each drives you to do the other.

The way to be good at programming is to work (a) a lot (b) on hard problems. And the way to make yourself work on hard problems is to work on some very engaging project.

Odds are this project won't be a class assignment. My friend Robert learned a lot by writing network software when he was an undergrad. One of his projects was to connect Harvard to the Arpanet; it had been one of the original nodes, but by 1984 the connection had died. [1] Not only was this work not for a class, but because he spent all his time on it and neglected his studies, he was kicked out of school for a year. [2] It all evened out in the end, and now he's a professor at MIT. But you'll probably be happier if you don't go to that extreme; it caused him a lot of worry at the time.

在大学里要成为优秀的黑客,主要有两件事可做:把编程练到极致,并深入学习特定而有趣的问题。实际上这两件事是等价的——因为其中一件会迫使你去做另一件。

编程好的方法是:(a)大量练习,(b)做难题。而让自己去攻克难题的方法,就是投入一个非常吸引人的项目。

这个项目大概率不是课程作业。我的朋友Robert在本科时通过编写网络软件学到了很多。他的项目之一是重新把哈佛连上阿帕网——哈佛曾是原始节点之一,但到1984年连接已经失效了。[1] 这并非课程任务,而且因为他把所有时间都花在上面荒废了学业,被学校开除了一年。[2] 最终一切归于平衡,他现在是MIT教授。但你不必走那么极端——当时他为此焦虑不堪。

§ 3

Another way to be good at programming is to find other people who are good at it, and learn what they know. Programmers tend to sort themselves into tribes according to the type of work they do and the tools they use, and some tribes are smarter than others. Look around you and see what the smart people seem to be working on; there's usually a reason.

Some of the smartest people around you are professors. So one way to find interesting work is to volunteer as a research assistant. Professors are especially interested in people who can solve tedious system-administration type problems for them, so that is a way to get a foot in the door. What they fear are flakes and resume padders. It's all too common for an assistant to result in a net increase in work. So you have to make it clear you'll mean a net decrease.

Don't be put off if they say no. Rejection is almost always less personal than the rejectee imagines. Just move on to the next. (This applies to dating too.)

Beware, because although most professors are smart, not all of them work on interesting stuff. Professors have to publish novel results to advance their careers, but there is more competition in more interesting areas of research. So what less ambitious professors do is turn out a series of papers whose conclusions are novel because no one else cares about them. You're better off avoiding these.

另一种编程变强的方法是找到其他编程高手,向他们学习。程序员往往会根据工作类型和工具形成不同圈子,有些圈子比其他圈子更聪明。留意你身边聪明人在做什么——通常是有理由的。

你身边最聪明的人之一就是教授。因此,找有趣工作的一个途径是主动申请做研究助理。教授尤其需要能解决繁琐系统管理问题的人,这是入门之道。他们害怕的是不靠谱的人和简历镀金者。很多时候助理反而增加了教授的工作量,所以你必须让他们明白你会减少工作量。

被拒绝也别气馁。拒绝通常没有你想象的那么针对个人。继续找下一个就行(这也适用于约会)。

注意:虽然多数教授很聪明,但并非所有教授都在做有趣的研究。教授必须发表新颖的成果来晋升,但越有趣的研究方向竞争越激烈。所以不太有野心的教授会产出一系列结论新颖的论文——新颖只是因为没人在乎。你最好避开这些人。

§ 4

I never worked as a research assistant, so I feel a bit dishonest recommending that route. I learned to program by writing stuff of my own, particularly by trying to reverse-engineer Winograd's SHRDLU. I was as obsessed with that program as a mother with a new baby.

Whatever the disadvantages of working by yourself, the advantage is that the project is all your own. You never have to compromise or ask anyone's permission, and if you have a new idea you can just sit down and start implementing it.

In your own projects you don't have to worry about novelty (as professors do) or profitability (as businesses do). All that matters is how hard the project is technically, and that has no correlation to the nature of the application. "Serious" applications like databases are often trivial and dull technically (if you ever suffer from insomnia, try reading the technical literature about databases) while "frivolous" applications like games are often very sophisticated.

I'm sure there are game companies out there working on products with more intellectual content than the research at the bottom nine tenths of university CS departments.

If I were in college now I'd probably work on graphics: a network game, for example, or a tool for 3D animation. When I was an undergrad there weren't enough cycles around to make graphics interesting, but it's hard to imagine anything more fun to work on now.

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

独立工作虽然也有劣势,但优势在于项目完全属于你。你不需要妥协或征求许可,有了新想法就可以立刻坐下实现。

在自己的项目里,你无需担心“新颖性”(教授们在乎)或“盈利性”(商业公司在乎)。唯一重要的是技术难度,而难度与应用性质无关。像数据库这类“严肃”应用往往技术上琐碎乏味(失眠时试试看数据库的技术文献),而游戏这类“轻浮”应用则常常非常复杂。

我确信有些游戏公司正在开发的产品,其智力含量超过大学计算机系底层90%的研究。

如果我现在上大学,可能会做图形学:比如网络游戏,或3D动画工具。我本科时计算能力还不够让图形学变得有趣,但现在很难想象还有比这更有趣的事情了。

§ 5

When I was in college, a lot of the professors believed (or at least wished) that computer science was a branch of math. This idea was strongest at Harvard, where there wasn't even a CS major till the 1980s; till then one had to major in applied math. But it was nearly as bad at Cornell. When I told the fearsome Professor Conway that I was interested in AI (a hot topic then), he told me I should major in math. I'm still not sure whether he thought AI required math, or whether he thought AI was nonsense and that majoring in something rigorous would cure me of such stupid ambitions.

In fact, the amount of math you need as a hacker is a lot less than most university departments like to admit. I don't think you need much more than high school math plus a few concepts from the theory of computation. (You have to know what an n^2 algorithm is if you want to avoid writing them.) Unless you're planning to write math applications, of course. Robotics, for example, is all math.

But while you don't literally need math for most kinds of hacking, in the sense of knowing 1001 tricks for differentiating formulas, math is very much worth studying for its own sake. It's a valuable source of metaphors for almost any kind of work.[3] I wish I'd studied more math in college for that reason.

Like a lot of people, I was mathematically abused as a child. I learned to think of math as a collection of formulas that were neither beautiful nor had any relation to my life (despite attempts to translate them into "word problems"), but had to be memorized in order to do well on tests.

One of the most valuable things you could do in college would be to learn what math is really about. This may not be easy, because a lot of good mathematicians are bad teachers. And while there are many popular books on math, few seem good. The best I can think of are W. W. Sawyer's. And of course Euclid. [4]

我上大学时,很多教授认为(或至少希望)计算机科学是数学的一个分支。这种想法在哈佛最强,那里直到20世纪80年代才有CS专业——之前必须主修应用数学。康奈尔也差不多。当我告诉可怕的Conway教授我对AI感兴趣时(当时是热门话题),他建议我主修数学。我至今不确定他是否认为AI需要数学,还是觉得AI是胡说八道,想用严谨的专业来矫正我愚蠢的野心。

实际上,黑客所需的数学远少于大学院系愿意承认的。我认为只需高中数学加上计算理论的一些概念就够了(得知道什么是n^2算法才能避免写出它)。当然,除非你打算做数学应用,比如机器人学就全是数学。

但尽管大多数黑客工作不需要你会微积分技巧,数学本身仍然非常值得学习。它是几乎所有工作的宝贵隐喻来源。[3] 正因如此,我后悔大学时没多学数学。

和很多人一样,我小时候遭受过数学虐待。我把数学看作一堆既不美丽也与我生活无关的公式(尽管尝试编成“应用题”),但为了考试必须死记硬背。

大学里最有价值的事情之一就是搞清楚数学到底是什么。这并不容易,因为很多优秀的数学家不擅教学。虽然有不少数学畅销书,但质量高的不多。我能想到的最好的是W. W. Sawyer的书,当然还有欧几里得。[4]

§ 6

Thomas Huxley said "Try to learn something about everything and everything about something." Most universities aim at this ideal.

But what's everything? To me it means, all that people learn in the course of working honestly on hard problems. All such work tends to be related, in that ideas and techniques from one field can often be transplanted successfully to others. Even others that seem quite distant. For example, I write essays the same way I write software: I sit down and blow out a lame version 1 as fast as I can type, then spend several weeks rewriting it.

Working on hard problems is not, by itself, enough. Medieval alchemists were working on a hard problem, but their approach was so bogus that there was little to learn from studying it, except possibly about people's ability to delude themselves. Unfortunately the sort of AI I was trying to learn in college had the same flaw: a very hard problem, blithely approached with hopelessly inadequate techniques. Bold? Closer to fraudulent.

The social sciences are also fairly bogus, because they're so much influenced by intellectual fashions. If a physicist met a colleague from 100 years ago, he could teach him some new things; if a psychologist met a colleague from 100 years ago, they'd just get into an ideological argument. Yes, of course, you'll learn something by taking a psychology class. The point is, you'll learn more by taking a class in another department.

The worthwhile departments, in my opinion, are math, the hard sciences, engineering, history (especially economic and social history, and the history of science), architecture, and the classics. A survey course in art history may be worthwhile. Modern literature is important, but the way to learn about it is just to read. I don't know enough about music to say.

You can skip the social sciences, philosophy, and the various departments created recently in response to political pressures. Many of these fields talk about important problems, certainly. But the way they talk about them is useless. For example, philosophy talks, among other things, about our obligations to one another; but you can learn more about this from a wise grandmother or E. B. White than from an academic philosopher.

I speak here from experience. I should probably have been offended when people laughed at Clinton for saying "It depends on what the meaning of the word 'is' is." I took about five classes in college on what the meaning of "is" is.

Another way to figure out which fields are worth studying is to create the dropout graph. For example, I know many people who switched from math to computer science because they found math too hard, and no one who did the opposite. People don't do hard things gratuitously; no one will work on a harder problem unless it is proportionately (or at least log(n)) more rewarding. So probably math is more worth studying than computer science. By similar comparisons you can make a graph of all the departments in a university. At the bottom you'll find the subjects with least intellectual content.

If you use this method, you'll get roughly the same answer I just gave.

Language courses are an anomaly. I think they're better considered as extracurricular activities, like pottery classes. They'd be far more useful when combined with some time living in a country where the language is spoken. On a whim I studied Arabic as a freshman. It was a lot of work, and the only lasting benefits were a weird ability to identify semitic roots and some insights into how people recognize words.

Studio art and creative writing courses are wildcards. Usually you don't get taught much: you just work (or don't work) on whatever you want, and then sit around offering "crits" of one another's creations under the vague supervision of the teacher. But writing and art are both very hard problems that (some) people work honestly at, so they're worth doing, especially if you can find a good teacher.

托马斯·赫胥黎说:“尝试对每件事都了解一点,而对某一件事要了解透彻。”大多数大学都以此为目标。

但什么算是“每件事”?对我来说,指的是人们在诚实攻克难题过程中所学到的一切。所有这些工作往往是相关的——一个领域的思想和技术常能成功移植到其他领域,甚至看似遥远的领域。例如,我写文章的方式和写软件一样:坐下来,尽可能快地敲出一版糟糕的初稿,然后花数周重写。

仅仅攻克难题还不够。中世纪的炼金术士也在攻克难题,但其方法太荒谬,除了让人看到自欺欺人的能力外,没什么可学。不幸的是,我在大学试图学习的AI也有同样缺陷:一个极难的问题,却轻率地用极度不足的方法去应对。大胆?不如说是欺诈。

社会科学也相当虚假,因为它们深受学术时尚影响。如果一位物理学家遇到100年前的同行,他能教他一些新东西;如果一位心理学家遇到100年前的同行,他们只会陷入意识形态的争论。

当然,你上心理学课也能学到东西。但问题在于,你换一个系会学到更多。

我认为值得学习的系是:数学、硬科学、工程、历史(尤其是经济史、社会史和科学史)、建筑学和古典学。艺术史概论课也许值得。现代文学很重要,但学习方式就是多读。我对音乐了解不多,不予置评。

你可以跳过社会科学、哲学以及近年来因政治压力而新设的系。这些领域当然也讨论重要问题,但讨论方式毫无用处。例如,哲学讨论我们对他人的义务;但你从一位睿智的祖母或E. B. 怀特那里学到的比学术哲学家更多。

我这是经验之谈。当人们嘲笑克林顿说“这取决于‘是’这个词的含义是什么”时,我大概本该感到被冒犯——我大学里上了大约五门课,专门探讨“是”的含义。

另一种判断哪些学科值得学习的方法是画出“退出图”。例如,我认识很多人从数学转到计算机科学,因为数学太难;而没有人反着转。人们不会无缘无故做难事;除非成比例(至少对数尺度)地更有回报,否则没人会去攻克更难的题。所以,很可能数学比计算机科学更值得学。类似地,你可以画出大学所有系的图:底部是智力内容最少的学科。

用这个方法,你会得到和我刚才几乎相同的答案。

语言课程是个例外。我认为最好把它们视作课外活动,比如陶艺课。如果配合在母语国生活一段时间,会更有用。我大一一时兴起学了阿拉伯语,下了很大功夫,唯一持久的好处是识别闪米特语词根的奇异能力,以及对人们如何识别单词的一些洞见。

工作室艺术和创意写作课程是未知数。通常教学不多:你只是随意创作(或不创作),然后互相“批评”,老师会模糊地指导。但写作和艺术都是非常难的问题,(有些人)诚实为之,因此值得去做,尤其是能遇到好老师的话。

§ 7

Of course college students have to think about more than just learning. There are also two practical problems to consider: jobs, and graduate school.

In theory a liberal education is not supposed to supply job training. But everyone knows this is a bit of a fib. Hackers at every college learn practical skills, and not by accident.

What you should learn to get a job depends on the kind you want. If you want to work in a big company, learn how to hack Blub on Windows. If you want to work at a cool little company or research lab, you'll do better to learn Ruby on Linux. And if you want to start your own company, which I think will be more and more common, master the most powerful tools you can find, because you're going to be in a race against your competitors, and they'll be your horse.

There is not a direct correlation between the skills you should learn in college and those you'll use in a job. You should aim slightly high in college.

In workouts a football player may bench press 300 pounds, even though he may never have to exert anything like that much force in the course of a game. Likewise, if your professors try to make you learn stuff that's more advanced than you'll need in a job, it may not just be because they're academics, detached from the real world. They may be trying to make you lift weights with your brain.

The programs you write in classes differ in three critical ways from the ones you'll write in the real world: they're small; you get to start from scratch; and the problem is usually artificial and predetermined. In the real world, programs are bigger, tend to involve existing code, and often require you to figure out what the problem is before you can solve it.

You don't have to wait to leave (or even enter) college to learn these skills. If you want to learn how to deal with existing code, for example, you can contribute to open-source projects. The sort of employer you want to work for will be as impressed by that as good grades on class assignments.

In existing open-source projects you don't get much practice at the third skill, deciding what problems to solve. But there's nothing to stop you starting new projects of your own. And good employers will be even more impressed with that.

What sort of problem should you try to solve? One way to answer that is to ask what you need as a user. For example, I stumbled on a good algorithm for spam filtering because I wanted to stop getting spam. Now what I wish I had was a mail reader that somehow prevented my inbox from filling up. I tend to use my inbox as a todo list. But that's like using a screwdriver to open bottles; what one really wants is a bottle opener.

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

理论上,博雅教育不应提供职业培训。但人人都知道这有点假话。每所大学的黑客都学到了实用技能,这不是偶然。

为工作该学什么取决于你想要什么样的工作。如果想进大公司,就学习如何在Windows上用Blub(一种语言)编程。如果想在酷炫的小公司或研究实验室工作,最好学Linux上的Ruby。而如果你想自己创业(我认为这会越来越普遍),就掌握你能找到的最强大工具——因为你要和竞争对手赛跑,它们就是你的马。

大学所学技能与工作所需技能并非直接对应。大学里你应该学得稍微超前一些。

就像足球运动员的卧推训练能推300磅,比赛中可能根本用不上那么大力气。同样,教授让你学比工作所需更高级的东西,可能不只是因为他们脱离现实——他们是想让你的大脑“举重”。

你在课堂写的程序与真实世界的程序有三个关键差异:规模小、从零开始、问题通常是人为预设的。而真实世界的程序更大、涉及现有代码,而且往往需要你先弄清楚问题是什么才能解决。

你无需等到离开(甚至进入)大学才学这些技能。比如,想学习处理现有代码,可以参与开源项目。你理想中的雇主会像看重好成绩一样看重这一点。

在现有开源项目中,你得不到太多练习决定“解决什么问题”的机会,但你可以自己启动新项目。好雇主会更看重这个。

该解决什么样的问题?一个方法是问自己作为用户需要什么。例如,我偶然发现了一个好的垃圾邮件过滤算法,是因为我想阻止垃圾邮件。现在我希望有一个邮箱程序能防止收件箱塞满。我习惯把收件箱当待办列表,但这就像用螺丝刀开瓶——你真正需要的是开瓶器。

§ 8

What about grad school? Should you go? And how do you get into a good one?

In principle, grad school is professional training in research, and you shouldn't go unless you want to do research as a career. And yet half the people who get PhDs in CS don't go into research. I didn't go to grad school to become a professor. I went because I wanted to learn more.

So if you're mainly interested in hacking and you go to grad school, you'll find a lot of other people who are similarly out of their element. And if half the people around you are out of their element in the same way you are, are you really out of your element?

There's a fundamental problem in "computer science," and it surfaces in situations like this. No one is sure what "research" is supposed to be. A lot of research is hacking that had to be crammed into the form of an academic paper to yield one more quantum of publication.

So it's kind of misleading to ask whether you'll be at home in grad school, because very few people are quite at home in computer science. The whole field is uncomfortable in its own skin. So the fact that you're mainly interested in hacking shouldn't deter you from going to grad school. Just be warned you'll have to do a lot of stuff you don't like.

Number one will be your dissertation. Almost everyone hates their dissertation by the time they're done with it. The process inherently tends to produce an unpleasant result, like a cake made out of whole wheat flour and baked for twelve hours. Few dissertations are read with pleasure, especially by their authors.

But thousands before you have suffered through writing a dissertation. And aside from that, grad school is close to paradise. Many people remember it as the happiest time of their lives. And nearly all the rest, including me, remember it as a period that would have been, if they hadn't had to write a dissertation. [5]

The danger with grad school is that you don't see the scary part upfront. PhD programs start out as college part 2, with several years of classes. So by the time you face the horror of writing a dissertation, you're already several years in. If you quit now, you'll be a grad-school dropout, and you probably won't like that idea. When Robert got kicked out of grad school for writing the Internet worm of 1988, I envied him enormously for finding a way out without the stigma of failure.

On the whole, grad school is probably better than most alternatives. You meet a lot of smart people, and your glum procrastination will at least be a powerful common bond. And of course you have a PhD at the end. I forgot about that. I suppose that's worth something.

The greatest advantage of a PhD (besides being the union card of academia, of course) may be that it gives you some baseline confidence. For example, the Honeywell thermostats in my house have the most atrocious UI. My mother, who has the same model, diligently spent a day reading the user's manual to learn how to operate hers. She assumed the problem was with her. But I can think to myself "If someone with a PhD in computer science can't understand this thermostat, it must be badly designed."

If you still want to go to grad school after this equivocal recommendation, I can give you solid advice about how to get in. A lot of my friends are CS professors now, so I have the inside story about admissions. It's quite different from college. At most colleges, admissions officers decide who gets in. For PhD programs, the professors do. And they try to do it well, because the people they admit are going to be working for them.

Apparently only recommendations really matter at the best schools. Standardized tests count for nothing, and grades for little. The essay is mostly an opportunity to disqualify yourself by saying something stupid. The only thing professors trust is recommendations, preferably from people they know. [6]

So if you want to get into a PhD program, the key is to impress your professors. And from my friends who are professors I know what impresses them: not merely trying to impress them. They're not impressed by students who get good grades or want to be their research assistants so they can get into grad school. They're impressed by students who get good grades and want to be their research assistants because they're genuinely interested in the topic.

研究生院呢?该不该去?怎么进好学校?

原则上,研究生院是研究方面的专业训练,除非你想以研究为职业,否则不该去。然而,拿到CS博士的人中有一半并未从事研究。我读研不是为了当教授,而是想学更多东西。

所以,如果你主要对黑客感兴趣却进了研究生院,你会发现很多和你一样格格不入的人。如果周围一半人跟你一样格格不入,那你还算格格不入吗?

“计算机科学”存在一个根本问题,在这种情况下浮现出来:没人确定“研究”到底是什么。很多研究不过是被硬塞进学术论文形式的黑客行为,只是为了多一份发表成果。

所以问“你适不适应研究生院”是误导性的——因为很少有人真正适应计算机科学。整个领域都感到别扭。因此,你主要对黑客感兴趣这一点不应阻止你读研。只是要提醒你,你会做很多不喜欢的事。

首当其冲就是你的学位论文。几乎所有人写完论文时都恨它。这个过程天然会导致糟糕的结果,就像用全麦面粉烤十二小时的蛋糕。很少有论文能让人愉快阅读,尤其作者本人。

但成千上万的人已经熬过了写论文。除此之外,研究生院接近天堂。很多人视之为人生中最快乐的时光。其余几乎所有人(包括我)都认为,如果没有写论文这个任务,那它本该是快乐时光。[5]

研究生院的危险在于,可怕的部分并非一开始就显露。博士项目开头像是大学续集,要上几年课。所以等你面临写论文的恐怖时,已经投入好几年了。如果现在退出,你就是研究生院辍学生——你可能不喜欢这个标签。当Robert因编写1988年互联网蠕虫被研究生院开除时,我无比羡慕他找到了一条不带着失败污点脱身的出路。

总的来说,研究生院可能比大多数选择都好。你会遇到很多聪明人,你们阴郁的拖延至少会成为强有力的共同纽带。当然,最后你还能拿到博士学位——我差点忘了这个,我想那还是有点价值的。

博士学位最大的好处(除了是学术界的工会卡以外)可能是给你一种基准自信。例如,我家的霍尼韦尔恒温器界面极其糟糕。我妈妈用的是同款,她花了一整天认真阅读用户手册来学习操作,以为问题出在自己身上。但我可以想:“如果一个计算机科学博士都搞不懂这个恒温器,那一定是它设计得不好。”

如果在我这番模棱两可的推荐之后你还想去研究生院,我可以给你扎实的申请建议。我很多朋友现在都是CS教授,所以我知道招生内幕。这和大学录取很不同。在多数大学,招生官决定谁被录取;而博士项目是教授们决定的。他们会认真对待,因为录取的人将来要为他们工作。

显然,在最好的学校只有推荐信真正重要。标准化考试没什么用,成绩作用也不大。个人陈述大多是让你说蠢话丧失资格的机会。教授唯一信任的是推荐信,最好是来自他们认识的人。[6]

所以,想进博士项目,关键是给教授留下印象。从当教授的朋友那里我知道什么能打动他们:不是单纯想讨好他们。他们不会因为学生成绩好或为了读研而做研究助理就印象深刻。他们会被那些成绩好、而且因为真心对该主题感兴趣而想做研究助理的学生打动。

§ 9

So the best thing you can do in college, whether you want to get into grad school or just be good at hacking, is figure out what you truly like. It's hard to trick professors into letting you into grad school, and impossible to trick problems into letting you solve them. College is where faking stops working. From this point, unless you want to go work for a big company, which is like reverting to high school, the only way forward is through doing what you love.

所以,无论你想进研究生院还是只想成为优秀的黑客,大学里最好的事就是弄清楚自己真正喜欢什么。欺骗教授让你进研究生院很难,欺骗问题让你解决它们更是绝无可能。大学是装模作样不再起作用的地方。从此刻起,除非你想去大公司工作(那就像回到高中),唯一的出路就是做你热爱的事。

§ 10

Notes

[1] No one seems to have minded, which shows how unimportant the Arpanet (which became the Internet) was as late as 1984.

[2] This is why, when I became an employer, I didn't care about GPAs. In fact, we actively sought out people who'd failed out of school. We once put up posters around Harvard saying "Did you just get kicked out for doing badly in your classes because you spent all your time working on some project of your own? Come work for us!" We managed to find a kid who had been, and he was a great hacker.

When Harvard kicks undergrads out for a year, they have to get jobs. The idea is to show them how awful the real world is, so they'll understand how lucky they are to be in college. This plan backfired with the guy who came to work for us, because he had more fun than he'd had in school, and made more that year from stock options than any of his professors did in salary. So instead of crawling back repentant at the end of the year, he took another year off and went to Europe. He did eventually graduate at about 26.

[3] Eric Raymond says the best metaphors for hackers are in set theory, combinatorics, and graph theory.

Trevor Blackwell reminds you to take math classes intended for math majors. "'Math for engineers' classes sucked mightily. In fact any 'x for engineers' sucks, where x includes math, law, writing and visual design."

[4] Other highly recommended books: What is Mathematics?, by Courant and Robbins; Geometry and the Imagination by Hilbert and Cohn-Vossen. And for those interested in graphic design, Byrne's Euclid.

[5] If you wanted to have the perfect life, the thing to do would be to go to grad school, secretly write your dissertation in the first year or two, and then just enjoy yourself for the next three years, dribbling out a chapter at a time. This prospect will make grad students' mouths water, but I know of no one who's had the discipline to pull it off.

[6] One professor friend says that 15-20% of the grad students they admit each year are "long shots." But what he means by long shots are people whose applications are perfect in every way, except that no one on the admissions committee knows the professors who wrote the recommendations.

So if you want to get into grad school in the sciences, you need to go to college somewhere with real research professors. Otherwise you'll seem a risky bet to admissions committees, no matter how good you are.

Which implies a surprising but apparently inevitable consequence: little liberal arts colleges are doomed.

Most smart high school kids at least consider going into the sciences, even if they ultimately choose not to. Why go to a college that limits their options?

Thanks to Trevor Blackwell, Alex Lewin, Jessica Livingston, Robert Morris, Eric Raymond, and several anonymous CS professors for reading drafts of this, and to the students whose questions began it.

注释

[1] 似乎没人介意,这表明直到1984年,阿帕网(后来的互联网)还多么无足轻重。

[2] 这就是为什么我当雇主时不关心GPA。实际上,我们主动寻找被学校开除的人。我们曾在哈佛周围贴海报:“你是否因为把所有时间花在自己的项目上导致成绩不佳而被开除?来我们这里工作吧!”我们找到了一个这样的孩子,他是一名出色的黑客。

哈佛让本科生停学一年时,他们必须去工作。目的是让他们看看真实世界多可怕,从而明白上大学多么幸运。但对我们雇来的那个家伙来说,这个计划适得其反——他比上学时玩得更开心,那一年靠股票期权赚的钱比任何教授年薪都多。所以年底他没有懊悔地爬回来,而是又休学一年去了欧洲。他最终大约在26岁毕业。

[3] Eric Raymond说,对黑客来说最好的隐喻来自集合论、组合学和图论。

Trevor Blackwell提醒你要上为数学专业学生开设的数学课。“‘工程数学’课烂透了。实际上,任何‘为工程师开设的X’都烂,X包括数学、法律、写作和视觉设计。”

[4] 其他强烈推荐的书:《什么是数学?》(Courant和Robbins著);《几何与想象》(Hilbert和Cohn-Vossen著)。对图形设计感兴趣的人,可以看Byrne的《欧几里得》。

[5] 如果你想拥有完美人生,那就去读研究生,头一两年偷偷写完论文,然后接下来三年享受生活,每次只交一章。这个前景会让研究生们垂涎,但据我所知没人有定力做到。

[6] 一位教授朋友说,他们每年录取的研究生中有15-20%是“冷门人选”。但所谓冷门,是指申请者在各方面都很完美,只是招生委员会没人认识写推荐信的教授。

所以,如果你想进入科学类研究生院,你必须去一所有真正研究教授的大学。否则,无论你多优秀,在招生委员会看来你都是高风险的赌注。

这暗示了一个令人惊讶但似乎不可避免的后果:小型文理学院前途堪忧。

大多数聪明的高中生至少会考虑进入科学领域,即使最终不选。为什么要去一所限制他们选择的大学呢?

感谢Trevor Blackwell、Alex Lewin、Jessica Livingston、Robert Morris、Eric Raymond以及几位匿名的CS教授审阅本文草稿,也感谢提出问题的学生们。

Open source ↗