Glean 拾遗
专辑 / Paul Graham 文集 / 优秀黑客的特质与管理之道

优秀黑客的特质与管理之道

原文 www.paulgraham.com 收录 2026-07-07 16:32 阅读 29 min
AI 解读

Paul Graham 从自身经验出发,论述了顶尖程序员与普通程序员之间巨大的生产力差距(可达10-100倍),并分析了优秀黑客的核心特质:热爱编程、追求好工具(如开源软件、Python/Perl 而非 Java)、需要安静专注的办公环境(有门的房间而非隔间)、渴望解决有趣的技术难题而非琐碎的 bug 修复。他提出,识别优秀黑客只能通过一起工作,简历无法判断;企业应通过提供自主权、有趣项目、优秀同事来吸引他们,而非单纯靠高薪。文章还讨论了黑客的自我培养:保持好奇心、专注力、政治不正确和质疑假设的习惯。

原文 29 分钟
原文 www.paulgraham.com ↗
§ 1

July 2004

(This essay is derived from a talk at Oscon 2004.)

A few months ago I finished a new book, and in reviews I keep noticing words like "provocative'' and "controversial.'' To say nothing of "idiotic.''

I didn't mean to make the book controversial. I was trying to make it efficient. I didn't want to waste people's time telling them things they already knew. It's more efficient just to give them the diffs. But I suppose that's bound to yield an alarming book.

2004年7月

(本文源自2004年Oscon大会的一次演讲。)

几个月前我完成了一本新书,书评里反复出现“挑衅性”“争议性”这类词,更不用提“愚蠢”了。

我并非故意让书充满争议。我只是想写得高效。我不想浪费读者的时间告诉他们已知的东西。给出差异点更有效率。但我想这注定会是一本令人不安的书。

§ 2

Edisons

There's no controversy about which idea is most controversial: the suggestion that variation in wealth might not be as big a problem as we think.

I didn't say in the book that variation in wealth was in itself a good thing. I said in some situations it might be a sign of good things. A throbbing headache is not a good thing, but it can be a sign of a good thing-- for example, that you're recovering consciousness after being hit on the head.

Variation in wealth can be a sign of variation in productivity. (In a society of one, they're identical.) And that is almost certainly a good thing: if your society has no variation in productivity, it's probably not because everyone is Thomas Edison. It's probably because you have no Thomas Edisons.

In a low-tech society you don't see much variation in productivity. If you have a tribe of nomads collecting sticks for a fire, how much more productive is the best stick gatherer going to be than the worst? A factor of two? Whereas when you hand people a complex tool like a computer, the variation in what they can do with it is enormous.

That's not a new idea. Fred Brooks wrote about it in 1974, and the study he quoted was published in 1968. But I think he underestimated the variation between programmers. He wrote about productivity in lines of code: the best programmers can solve a given problem in a tenth the time. But what if the problem isn't given? In programming, as in many fields, the hard part isn't solving problems, but deciding what problems to solve. Imagination is hard to measure, but in practice it dominates the kind of productivity that's measured in lines of code.

Productivity varies in any field, but there are few in which it varies so much. The variation between programmers is so great that it becomes a difference in kind. I don't think this is something intrinsic to programming, though. In every field, technology magnifies differences in productivity. I think what's happening in programming is just that we have a lot of technological leverage. But in every field the lever is getting longer, so the variation we see is something that more and more fields will see as time goes on. And the success of companies, and countries, will depend increasingly on how they deal with it.

If variation in productivity increases with technology, then the contribution of the most productive individuals will not only be disproportionately large, but will actually grow with time. When you reach the point where 90% of a group's output is created by 1% of its members, you lose big if something (whether Viking raids, or central planning) drags their productivity down to the average.

If we want to get the most out of them, we need to understand these especially productive people. What motivates them? What do they need to do their jobs? How do you recognize them? How do you get them to come and work for you? And then of course there's the question, how do you become one?

爱迪生们

要问哪个观点最具争议性,莫过于“财富差异可能没有我们想象的那么严重”。

我在书中并没有说财富差异本身是好事。我说的是,在某些情况下,它可能是好事的一个信号。剧烈的头痛不是好事,但它可能是好事的前兆——比如你被击中头部后正在恢复意识。

财富差异可以是生产力差异的信号。(在一个人的社会里,两者是一样的。)这几乎是件好事:如果你的社会完全没有生产力差异,那很可能不是因为每个人都像托马斯·爱迪生一样,而是因为你根本没有托马斯·爱迪生。

在低技术社会里,生产力差异不大。如果一群游牧部落捡柴火生火,最好的捡柴手能比最差的高出多少?两倍?而当你交给人们计算机这样复杂的工具时,他们能做的事情差异就天差地别了。

这并非新观点。弗雷德·布鲁克斯在1974年就写过,他引用的研究发表于1968年。但我认为他低估了程序员之间的差异。他写的是代码行数的生产率:最好的程序员解决给定问题的时间只需要十分之一。但如果问题不是给定的呢?在编程中,就像在许多领域一样,难点不在于解决问题,而在于决定要解决什么问题。想象力难以衡量,但在实践中,它主导着以代码行数衡量的那种生产力。

任何领域都有生产力差异,但很少有像编程这样差异如此之大的。程序员之间的差异如此之大,以至于成了种类上的不同。不过我认为这不是编程所固有的。在每个领域,技术都会放大生产力差异。我认为编程领域发生的一切只是因为我们有大量的技术杠杆。但每个领域的杠杆都在变长,因此我们看到的这种差异,随着时间的推移,越来越多的领域也会经历。公司乃至国家的成功,将越来越取决于如何应对这种差异。

如果生产力差异随技术增长,那么最具生产力的个体所做的贡献不仅会不成比例地大,而且会随着时间增长。当90%的产出由1%的成员创造时,如果有什么因素(无论是维京人入侵还是中央计划)把他们的生产力拖到平均水平,损失将是巨大的。

如果我们想最大限度地利用他们,就需要理解这些特别高产的人。什么激励着他们?他们需要什么来做好工作?如何识别他们?如何让他们为你工作?当然,还有一个问题:如何成为他们中的一员?

§ 3

More than Money

I know a handful of super-hackers, so I sat down and thought about what they have in common. Their defining quality is probably that they really love to program. Ordinary programmers write code to pay the bills. Great hackers think of it as something they do for fun, and which they're delighted to find people will pay them for.

Great programmers are sometimes said to be indifferent to money. This isn't quite true. It is true that all they really care about is doing interesting work. But if you make enough money, you get to work on whatever you want, and for that reason hackers are attracted by the idea of making really large amounts of money. But as long as they still have to show up for work every day, they care more about what they do there than how much they get paid for it.

Economically, this is a fact of the greatest importance, because it means you don't have to pay great hackers anything like what they're worth. A great programmer might be ten or a hundred times as productive as an ordinary one, but he'll consider himself lucky to get paid three times as much. As I'll explain later, this is partly because great hackers don't know how good they are. But it's also because money is not the main thing they want.

不仅仅是钱

我认识几位超级黑客,于是我坐下来思考他们的共同点。他们最核心的品质可能是真的热爱编程。普通程序员为了赚钱而写代码,而顶尖黑客把它当作一种乐趣,并乐于发现有人愿意为此付钱。

人们有时说顶尖程序员对钱漠不关心。这并不完全正确。他们的确只在乎做有趣的工作,但如果你赚够了钱,就可以做任何想做的事,因此黑客也渴望赚大钱。不过,只要他们还得每天上班,他们就会更在意做什么,而不是拿多少钱。

从经济角度看,这是一个至关重要的事实——这意味着你不需要支付与他们实际价值相称的薪水。一个顶尖程序员的产出可能是普通程序员的十倍甚至百倍,但他会觉得自己能拿到三倍薪水就很幸运了。正如我稍后会解释的,部分原因是顶尖黑客并不清楚自己有多优秀,但也因为钱不是他们的首要追求。

§ 4

What do hackers want? Like all craftsmen, hackers like good tools. In fact, that's an understatement. Good hackers find it unbearable to use bad tools. They'll simply refuse to work on projects with the wrong infrastructure.

At a startup I once worked for, one of the things pinned up on our bulletin board was an ad from IBM. It was a picture of an AS400, and the headline read, I think, "hackers despise it." [1]

When you decide what infrastructure to use for a project, you're not just making a technical decision. You're also making a social decision, and this may be the more important of the two. For example, if your company wants to write some software, it might seem a prudent choice to write it in Java. But when you choose a language, you're also choosing a community. The programmers you'll be able to hire to work on a Java project won't be as smart as the ones you could get to work on a project written in Python. And the quality of your hackers probably matters more than the language you choose. Though, frankly, the fact that good hackers prefer Python to Java should tell you something about the relative merits of those languages.

Business types prefer the most popular languages because they view languages as standards. They don't want to bet the company on Betamax. The thing about languages, though, is that they're not just standards. If you have to move bits over a network, by all means use TCP/IP. But a programming language isn't just a format. A programming language is a medium of expression.

I've read that Java has just overtaken Cobol as the most popular language. As a standard, you couldn't wish for more. But as a medium of expression, you could do a lot better. Of all the great programmers I can think of, I know of only one who would voluntarily program in Java. And of all the great programmers I can think of who don't work for Sun, on Java, I know of zero.

黑客想要什么?和所有工匠一样,黑客喜欢好工具。事实上,这么说还是轻的。好的黑客无法忍受使用糟糕的工具,他们会直接拒绝在基础设施有问题的项目上工作。

在我曾工作过的一家创业公司,公告板上钉着一则IBM的广告,画面是一台AS400,标题是“黑客鄙视它”。[1]

当你决定项目使用什么基础设施时,你不仅是在做技术决策,也是在做一个社交决策,而后者可能更重要。例如,你的公司想写软件,用Java可能看起来是谨慎的选择。但当你选择语言时,也在选择社区。你能为Java项目招聘到的程序员,通常不如你为Python项目招到的聪明。而黑客的质量很可能比你选择的语言更重要。不过,坦率地说,好的黑客更喜欢Python而不是Java,这一点本身就说明了这些语言的相对优劣。

商业人士偏爱最流行的语言,因为他们把语言看作标准。他们不想把公司押注在Betamax上。但语言不仅仅是标准。如果你需要在网络上传输比特,当然可以用TCP/IP。但编程语言不只是一个格式,它是一种表达媒介。

我读到Java刚刚取代Cobol成为最流行的语言。作为标准,你不能要求更多了。但作为表达媒介,你能做得更好。在我能想到的所有顶尖程序员中,我只知道一个人会自愿用Java编程。而在我能想到的不为Sun公司工作的顶尖程序员中,自愿用Java的人数为零。

§ 5

Great hackers also generally insist on using open source software. Not just because it's better, but because it gives them more control. Good hackers insist on control. This is part of what makes them good hackers: when something's broken, they need to fix it. You want them to feel this way about the software they're writing for you. You shouldn't be surprised when they feel the same way about the operating system.

A couple years ago a venture capitalist friend told me about a new startup he was involved with. It sounded promising. But the next time I talked to him, he said they'd decided to build their software on Windows NT, and had just hired a very experienced NT developer to be their chief technical officer. When I heard this, I thought, these guys are doomed. One, the CTO couldn't be a first rate hacker, because to become an eminent NT developer he would have had to use NT voluntarily, multiple times, and I couldn't imagine a great hacker doing that; and two, even if he was good, he'd have a hard time hiring anyone good to work for him if the project had to be built on NT. [2]

顶尖黑客通常也坚持使用开源软件。不仅仅是因为它更好,还因为它能给予他们更多的控制权。好的黑客坚持控制权,这是他们之所以优秀的一部分:当有东西坏了时,他们需要去修复。你希望他们对为你编写的软件也抱有这种态度。因此,当他们以同样的态度对待操作系统时,你不应该感到惊讶。

几年前,一位风险投资家朋友告诉我他参与的一家新创业公司。听起来很有希望。但下次和他聊天时,他说他们决定在Windows NT上构建软件,并聘请了一位非常有经验的NT开发者担任首席技术官。听到这个,我想,这些人完了。首先,这个CTO不可能是顶级黑客,因为要成为知名的NT开发者,他必须自愿多次使用NT,我无法想象一个好的黑客会这么做;其次,即使他很优秀,如果项目必须建立在NT上,他也很难招到优秀的人为他工作。[2]

§ 6

The Final Frontier

After software, the most important tool to a hacker is probably his office. Big companies think the function of office space is to express rank. But hackers use their offices for more than that: they use their office as a place to think in. And if you're a technology company, their thoughts are your product. So making hackers work in a noisy, distracting environment is like having a paint factory where the air is full of soot.

The cartoon strip Dilbert has a lot to say about cubicles, and with good reason. All the hackers I know despise them. The mere prospect of being interrupted is enough to prevent hackers from working on hard problems. If you want to get real work done in an office with cubicles, you have two options: work at home, or come in early or late or on a weekend, when no one else is there. Don't companies realize this is a sign that something is broken? An office environment is supposed to be something that helps you work, not something you work despite.

Companies like Cisco are proud that everyone there has a cubicle, even the CEO. But they're not so advanced as they think; obviously they still view office space as a badge of rank. Note too that Cisco is famous for doing very little product development in house. They get new technology by buying the startups that created it-- where presumably the hackers did have somewhere quiet to work.

One big company that understands what hackers need is Microsoft. I once saw a recruiting ad for Microsoft with a big picture of a door. Work for us, the premise was, and we'll give you a place to work where you can actually get work done. And you know, Microsoft is remarkable among big companies in that they are able to develop software in house. Not well, perhaps, but well enough.

最后的前线

除了软件,黑客最重要的工具可能就是他的办公室。大公司认为办公空间的作用是体现等级,但黑客用得更多:他们用办公室来思考。如果你是科技公司,他们的想法就是你的产品。所以让黑客在嘈杂、使人分心的环境中工作,就像在空气中充满烟尘的油漆厂里工作一样。

漫画《呆伯特》对隔间深恶痛绝,这很有道理。我认识的黑客都痛恨隔间。光是想到可能被打断就足以让黑客无法处理难题。如果你想在有隔间的办公室里真正完成工作,有两个选择:在家工作,或者早到晚走或周末来,趁没人的时候。公司难道没有意识到这是有问题的信号吗?办公环境本应帮助你工作,而不是让你在它的干扰下勉强工作。

像思科这样的公司,自豪地宣布每个人——包括CEO——都用隔间。但他们并没有自己想的那么先进;显然他们仍然把办公空间视为地位的象征。另外请注意,思科以很少内部开发产品而闻名。他们通过收购创业公司来获得新技术——那些创业公司里的黑客想必有安静的地方工作。

有一家大公司理解黑客的需要,那就是微软。我曾经看到微软的一则招聘广告,上面画了一扇大门的图片。它的潜台词是:为我们工作,我们会给你一个真正能完成工作的场所。要知道,微软在大公司中是少有的能够内部开发软件的公司。也许不是非常出色,但至少足够好。

§ 7

If companies want hackers to be productive, they should look at what they do at home. At home, hackers can arrange things themselves so they can get the most done. And when they work at home, hackers don't work in noisy, open spaces; they work in rooms with doors. They work in cosy, neighborhoody places with people around and somewhere to walk when they need to mull something over, instead of in glass boxes set in acres of parking lots. They have a sofa they can take a nap on when they feel tired, instead of sitting in a coma at their desk, pretending to work. There's no crew of people with vacuum cleaners that roars through every evening during the prime hacking hours. There are no meetings or, God forbid, corporate retreats or team-building exercises. And when you look at what they're doing on that computer, you'll find it reinforces what I said earlier about tools. They may have to use Java and Windows at work, but at home, where they can choose for themselves, you're more likely to find them using Perl and Linux.

Indeed, these statistics about Cobol or Java being the most popular language can be misleading. What we ought to look at, if we want to know what tools are best, is what hackers choose when they can choose freely-- that is, in projects of their own. When you ask that question, you find that open source operating systems already have a dominant market share, and the number one language is probably Perl.

如果公司希望黑客高效,应该看看他们在家是怎么做的。在家里,黑客可以自己安排,最大化产出。在家工作时,黑客不会在嘈杂的开放空间里工作;他们会在有门的房间里工作。他们在舒适、有社区感的地方工作,周围有人,需要思考时可以散步,而不是在停车场里的玻璃盒子里。他们有一张沙发,累了可以打个盹,而不是瘫在办公桌前假装工作。没有清洁工在黄金编程时间开着吸尘器轰鸣。没有会议,更别提公司度假或团队建设活动了。再看看他们电脑上在做什么,你会发现这印证了之前关于工具的说法。他们可能在工作中使用Java和Windows,但在家里,他们可以自由选择,你更可能看到他们使用Perl和Linux。

实际上,那些关于Cobol或Java是最流行语言的统计数据可能会产生误导。如果我们想知道哪些工具最好,应该看黑客们在可以自由选择时——也就是在他们自己的项目中——会选什么。如果问这个问题,你会发现开源操作系统已经占据主导市场份额,而头号语言很可能是Perl。

§ 8

Interesting

Along with good tools, hackers want interesting projects. What makes a project interesting? Well, obviously overtly sexy applications like stealth planes or special effects software would be interesting to work on. But any application can be interesting if it poses novel technical challenges. So it's hard to predict which problems hackers will like, because some become interesting only when the people working on them discover a new kind of solution. Before ITA (who wrote the software inside Orbitz), the people working on airline fare searches probably thought it was one of the most boring applications imaginable. But ITA made it interesting by redefining the problem in a more ambitious way.

I think the same thing happened at Google. When Google was founded, the conventional wisdom among the so-called portals was that search was boring and unimportant. But the guys at Google didn't think search was boring, and that's why they do it so well.

This is an area where managers can make a difference. Like a parent saying to a child, I bet you can't clean up your whole room in ten minutes, a good manager can sometimes redefine a problem as a more interesting one. Steve Jobs seems to be particularly good at this, in part simply by having high standards. There were a lot of small, inexpensive computers before the Mac. He redefined the problem as: make one that's beautiful. And that probably drove the developers harder than any carrot or stick could.

They certainly delivered. When the Mac first appeared, you didn't even have to turn it on to know it would be good; you could tell from the case. A few weeks ago I was walking along the street in Cambridge, and in someone's trash I saw what appeared to be a Mac carrying case. I looked inside, and there was a Mac SE. I carried it home and plugged it in, and it booted. The happy Macintosh face, and then the finder. My God, it was so simple. It was just like ... Google.

有趣

除了好工具,黑客还想要有趣的项目。什么让项目有趣?显然,像隐形飞机或特效软件这样明显很酷的应用会很有趣。但任何应用只要包含新颖的技术挑战,都会变得有趣。所以很难预测黑客会喜欢什么问题,因为有些问题只有当工作者发现了新的解决方法时才会变得有趣。在ITA(编写Orbitz软件的公司)之前,做机票价格搜索的人可能认为那是最无聊的应用程序之一。但ITA通过重新定义问题、采用更大胆的方式,让它变得有趣。

我认为同样的事情也发生在Google。Google创立时,所谓的门户网站的传统智慧是搜索既无聊又不重要。但Google的人不认为搜索无聊,这正是他们做得好的原因。

这是管理者可以发挥作用的地方。就像父母对孩子说“我打赌你十分钟内收拾不完房间”一样,好的管理者有时能把问题重新定义得更有趣。Steve Jobs似乎尤其擅长这一点,部分原因是他有很高的标准。在Mac之前,有很多小巧便宜的电脑。他把问题重新定义为:做一台漂亮的电脑。这比任何胡萝卜加大棒都更能激励开发者。

他们确实做到了。Mac初代问世时,你甚至不需要开机就知道它很好——从外壳就能看出来。几周前,我在剑桥的街上走,在一个人的垃圾堆里看到一个Mac的携带包。我往里看,里面是一台Mac SE。我把它带回家插上电,它启动了。快乐的Macintosh笑脸,然后是Finder。天啊,太简单了。就像……Google一样。

§ 9

Hackers like to work for people with high standards. But it's not enough just to be exacting. You have to insist on the right things. Which usually means that you have to be a hacker yourself. I've seen occasional articles about how to manage programmers. Really there should be two articles: one about what to do if you are yourself a programmer, and one about what to do if you're not. And the second could probably be condensed into two words: give up.

The problem is not so much the day to day management. Really good hackers are practically self-managing. The problem is, if you're not a hacker, you can't tell who the good hackers are. A similar problem explains why American cars are so ugly. I call it the design paradox. You might think that you could make your products beautiful just by hiring a great designer to design them. But if you yourself don't have good taste, how are you going to recognize a good designer? By definition you can't tell from his portfolio. And you can't go by the awards he's won or the jobs he's had, because in design, as in most fields, those tend to be driven by fashion and schmoozing, with actual ability a distant third. There's no way around it: you can't manage a process intended to produce beautiful things without knowing what beautiful is. American cars are ugly because American car companies are run by people with bad taste.

I think, though, that all other things being equal, a company that can attract great hackers will have a huge advantage. There are people who would disagree with this. When we were making the rounds of venture capital firms in the 1990s, several told us that software companies didn't win by writing great software, but through brand, and dominating channels, and doing the right deals.

They really seemed to believe this, and I think I know why. I think what a lot of VCs are looking for, at least unconsciously, is the next Microsoft. And of course if Microsoft is your model, you shouldn't be looking for companies that hope to win by writing great software. But VCs are mistaken to look for the next Microsoft, because no startup can be the next Microsoft unless some other company is prepared to bend over at just the right moment and be the next IBM.

It's a mistake to use Microsoft as a model, because their whole culture derives from that one lucky break. Microsoft is a bad data point. If you throw them out, you find that good products do tend to win in the market. What VCs should be looking for is the next Apple, or the next Google.

I think Bill Gates knows this. What worries him about Google is not the power of their brand, but the fact that they have better hackers. [7]

黑客喜欢为高标准的人工作。但仅仅要求严格还不够,你必须坚持正确的事情。这通常意味着你自己也得是个黑客。我读过一些关于如何管理程序员的文章,其实应该有两篇:一篇讲如果你自己是程序员该怎么做,另一篇讲如果你不是。第二篇可能可以浓缩为两个字:放弃。

问题不在于日常管理——真正优秀的黑客基本上是自我管理的。问题在于,如果你不是黑客,你就无法判断谁是好的黑客。类似的问题也解释了为什么美国车这么丑。我称之为设计悖论:你可能会认为只要雇一个优秀的设计师,就能让产品变得漂亮。但如果你自己没有良好的品味,你如何识别优秀的设计师?从定义上说,你无法从他的作品集中判断。你也不能看他得过什么奖或做过什么工作,因为在设计领域,就像在大多数领域一样,这些东西往往受时尚和人脉驱动,实际能力只能排第三。没有其他办法:如果你不知道什么是美,就无法管理一个旨在生产美丽事物的过程。美国车丑,是因为美国汽车公司的经营者品味差。

不过我认为,在其他条件相同的情况下,能吸引顶尖黑客的公司将有巨大的优势。有人不同意这一点。20世纪90年代我们拜访风投公司时,有几家告诉我们,软件公司不是靠写优秀软件取胜,而是靠品牌、渠道控制和好的交易。

他们似乎真的相信这一点,我想我知道为什么。我认为很多风投(至少潜意识里)在寻找下一个微软。当然,如果你以微软为模板,就不应该寻找那些希望通过编写优秀软件获胜的公司。但风投寻找下一个微软是错误的,因为没有一家创业公司能成为下一个微软,除非有其他公司正好在正确的时间弯腰,成为下一个IBM。

把微软当作模板是错误的,因为他们的整个文化都源于那一次幸运的突破。微软是一个坏的数据点。如果排除他们,你会发现好产品往往能在市场上获胜。风投应该寻找的是下一个苹果,或者下一个谷歌。

我想比尔·盖茨明白这一点。让他担心谷歌的不是他们的品牌实力,而是他们有更好的黑客。[7]

§ 10

Nasty Little Problems

It's pretty easy to say what kinds of problems are not interesting: those where instead of solving a few big, clear, problems, you have to solve a lot of nasty little ones. One of the worst kinds of projects is writing an interface to a piece of software that's full of bugs. Another is when you have to customize something for an individual client's complex and ill-defined needs. To hackers these kinds of projects are the death of a thousand cuts.

The distinguishing feature of nasty little problems is that you don't learn anything from them. Writing a compiler is interesting because it teaches you what a compiler is. But writing an interface to a buggy piece of software doesn't teach you anything, because the bugs are random. [3] So it's not just fastidiousness that makes good hackers avoid nasty little problems. It's more a question of self-preservation. Working on nasty little problems makes you stupid. Good hackers avoid it for the same reason models avoid cheeseburgers.

琐碎问题

很容易说出什么样的问题没意思:那些不是解决几个大而清晰的问题,而是要解决一堆琐碎小问题的工作。最糟糕的项目之一是给一个充满bug的软件写接口。另一种是必须为某个客户复杂且定义不清的需求定制东西。对黑客来说,这类项目简直是千刀万剐。

琐碎问题的显著特征是,你从中学不到任何东西。写编译器很有趣,因为它教你编译器是什么。但给一个有bug的软件写接口却教不了你任何东西,因为这些bug是随机的。[3] 所以好的黑客避开琐碎问题不只是因为挑剔,更是出于自我保护。处理琐碎问题会让你变笨。好的黑客避开它们,就像模特避开芝士汉堡一样。

§ 11

Of course some problems inherently have this character. And because of supply and demand, they pay especially well. So a company that found a way to get great hackers to work on tedious problems would be very successful. How would you do it?

One place this happens is in startups. At our startup we had Robert Morris working as a system administrator. That's like having the Rolling Stones play at a bar mitzvah. You can't hire that kind of talent. But people will do any amount of drudgery for companies of which they're the founders. [4]

Bigger companies solve the problem by partitioning the company. They get smart people to work for them by establishing a separate R&D department where employees don't have to work directly on customers' nasty little problems. [5] In this model, the research department functions like a mine. They produce new ideas; maybe the rest of the company will be able to use them.

You may not have to go to this extreme. Bottom-up programming suggests another way to partition the company: have the smart people work as toolmakers. If your company makes software to do x, have one group that builds tools for writing software of that type, and another that uses these tools to write the applications. This way you might be able to get smart people to write 99% of your code, but still keep them almost as insulated from users as they would be in a traditional research department. The toolmakers would have users, but they'd only be the company's own developers. [6]

If Microsoft used this approach, their software wouldn't be so full of security holes, because the less smart people writing the actual applications wouldn't be doing low-level stuff like allocating memory. Instead of writing Word directly in C, they'd be plugging together big Lego blocks of Word-language. (Duplo, I believe, is the technical term.)

当然,有些问题天生就是这样。由于供求关系,这类工作报酬特别高。所以,一家能让顶尖黑客去做乏味工作的公司将会非常成功。如何做到呢?

一种方式发生在创业公司。在我们的创业公司里,Robert Morris 做系统管理员。这就像让滚石乐队在成人礼上表演一样——你根本雇不到这种人才。但人们愿意为创始人自己的公司做任何苦差事。[4]

大公司通过划分部门来解决这个问题。他们设立一个独立的研发部门,让聪明的员工不必直接处理客户的琐碎问题。[5] 在这个模型中,研发部门就像一个矿场:他们产生新想法,公司其他部门或许可以利用它们。

也许不需要这么极端。自底向上编程提供了另一种划分方式:让聪明人做工具制造者。如果你的公司做X类型的软件,让一个团队构建编写该类软件的工具,另一个团队用这些工具来编写应用程序。这样,你或许能让聪明人写出99%的代码,同时让他们几乎像在传统研发部门一样远离用户。工具制造者的用户只是公司内部的开发者。[6]

如果微软采用这种方法,他们的软件就不会满是安全漏洞了。因为编写实际应用的、不那么聪明的人就不需要做像分配内存这样的底层工作了。他们不会直接用C写Word,而是把Word语言的乐高积木拼在一起。(我认为“得宝”是技术术语。)

§ 12

Clumping

Along with interesting problems, what good hackers like is other good hackers. Great hackers tend to clump together-- sometimes spectacularly so, as at Xerox Parc. So you won't attract good hackers in linear proportion to how good an environment you create for them. The tendency to clump means it's more like the square of the environment. So it's winner take all. At any given time, there are only about ten or twenty places where hackers most want to work, and if you aren't one of them, you won't just have fewer great hackers, you'll have zero.

Having great hackers is not, by itself, enough to make a company successful. It works well for Google and ITA, which are two of the hot spots right now, but it didn't help Thinking Machines or Xerox. Sun had a good run for a while, but their business model is a down elevator. In that situation, even the best hackers can't save you.

聚集

除了有趣的问题,好的黑客还喜欢其他好的黑客。顶尖黑客往往聚集在一起——有时非常壮观,比如施乐帕克。因此,你吸引好黑客的程度与你为他们创造的环境好坏不成线性比例,聚集倾向意味着更像是环境的平方。所以这是赢家通吃。在任何时候,黑客最想工作的地方只有十到二十个,如果你不在其中,你不仅会少一些顶尖黑客,而是为零。

拥有顶尖黑客本身并不足以让公司成功。这对谷歌和ITA(目前两个热点)很有效,但没能拯救Thinking Machines或施乐。Sun曾有一段好时光,但他们的业务模式是下行电梯。在这种情况下,即使最好的黑客也救不了你。

§ 13

Recognition

So who are the great hackers? How do you know when you meet one? That turns out to be very hard. Even hackers can't tell. I'm pretty sure now that my friend Trevor Blackwell is a great hacker. You may have read on Slashdot how he made his own Segway. The remarkable thing about this project was that he wrote all the software in one day (in Python, incidentally). For Trevor, that's par for the course. But when I first met him, I thought he was a complete idiot. He was standing in Robert Morris's office babbling at him about something or other, and I remember standing behind him making frantic gestures at Robert to shoo this nut out of his office so we could go to lunch. Robert says he misjudged Trevor at first too. Apparently when Robert first met him, Trevor had just begun a new scheme that involved writing down everything about every aspect of his life on a stack of index cards, which he carried with him everywhere. He'd also just arrived from Canada, and had a strong Canadian accent and a mullet.

The problem is compounded by the fact that hackers, despite their reputation for social obliviousness, sometimes put a good deal of effort into seeming smart. When I was in grad school I used to hang around the MIT AI Lab occasionally. It was kind of intimidating at first. Everyone there spoke so fast. But after a while I learned the trick of speaking fast. You don't have to think any faster; just use twice as many words to say everything.

With this amount of noise in the signal, it's hard to tell good hackers when you meet them. I can't tell, even now. You also can't tell from their resumes. It seems like the only way to judge a hacker is to work with him on something.

And this is the reason that high-tech areas only happen around universities. The active ingredient here is not so much the professors as the students. Startups grow up around universities because universities bring together promising young people and make them work on the same projects. The smart ones learn who the other smart ones are, and together they cook up new projects of their own.

识别

那么,谁是顶尖黑客?当你遇到一个时,你怎么知道?这其实非常困难。连黑客自己都看不出来。我现在相当肯定我的朋友Trevor Blackwell是顶尖黑客。你可能在Slashdot上读过他如何自己做了一辆Segway。这个项目了不起的地方在于他一天之内写完了所有软件(顺便说一下,用的是Python)。对Trevor来说,这很正常。但当我第一次见到他时,我觉得他完全是个白痴。他站在Robert Morris的办公室里,喋喋不休地说着什么。我记得站在他身后,疯狂地向Robert打手势,让他把这个疯子赶出去,我们好去吃午饭。Robert说他最初也看错了Trevor。显然,Robert第一次见他时,Trevor刚开始一个新计划:把他生活中各方面的每件事都记在一叠索引卡上,随身携带。他刚从加拿大来,带着浓重的加拿大口音,还留着小辫子。

问题更复杂的是,尽管黑客以社交迟钝著称,但他们有时也会费很大功夫让自己显得聪明。我在研究生时偶尔会去MIT AI Lab闲逛。起初有点吓人,那里每个人说话都那么快。但过了一段时间,我学会了说话快的技巧:你不需要想得更快,只要用两倍的词说每件事就行了。

信号中有这么多噪音,所以很难在见面时认出好黑客。即使现在我也看不出来。你也不能从简历判断。看来评判一个黑客的唯一方法就是和他一起做些事。

这就是为什么高科技区域只出现在大学周围。起作用的不是教授,而是学生。创业公司在大学周围成长,因为大学把有前途的年轻人聚集在一起,让他们在同一个项目上工作。聪明人知道谁是其他聪明人,然后一起搞出自己的新项目。

§ 14

Because you can't tell a great hacker except by working with him, hackers themselves can't tell how good they are. This is true to a degree in most fields. I've found that people who are great at something are not so much convinced of their own greatness as mystified at why everyone else seems so incompetent.

But it's particularly hard for hackers to know how good they are, because it's hard to compare their work. This is easier in most other fields. In the hundred meters, you know in 10 seconds who's fastest. Even in math there seems to be a general consensus about which problems are hard to solve, and what constitutes a good solution. But hacking is like writing. Who can say which of two novels is better? Certainly not the authors.

With hackers, at least, other hackers can tell. That's because, unlike novelists, hackers collaborate on projects. When you get to hit a few difficult problems over the net at someone, you learn pretty quickly how hard they hit them back. But hackers can't watch themselves at work. So if you ask a great hacker how good he is, he's almost certain to reply, I don't know. He's not just being modest. He really doesn't know.

And none of us know, except about people we've actually worked with. Which puts us in a weird situation: we don't know who our heroes should be. The hackers who become famous tend to become famous by random accidents of PR. Occasionally I need to give an example of a great hacker, and I never know who to use. The first names that come to mind always tend to be people I know personally, but it seems lame to use them. So, I think, maybe I should say Richard Stallman, or Linus Torvalds, or Alan Kay, or someone famous like that. But I have no idea if these guys are great hackers. I've never worked with them on anything.

If there is a Michael Jordan of hacking, no one knows, including him.

因为除非与他一起工作,否则你无法判断一个顶尖黑客,黑客自己也无法知道自己有多好。这在大多数领域都有体现。我发现,擅长某件事的人往往不是坚信自己的伟大,而是困惑为什么其他人看起来如此无能。

但黑客尤其难知道自己有多好,因为很难比较他们的工作。大多数其他领域更容易:一百米赛跑,10秒内就知道谁最快;即使在数学中,对于哪些问题难、什么是好的解决方案,似乎也有普遍共识。但黑客像写作一样,谁能说两本小说哪本更好?作者肯定不行。

对于黑客,至少其他黑客能看出来。这是因为,与小说家不同,黑客在项目上合作。当你在网上与某人来回解决几个难题时,你很快就能知道对方回击的力度。但黑客无法看到自己在工作中的表现。所以如果你问一个顶尖黑客他有多好,他几乎肯定会回答“我不知道”。他不是谦虚,他真的不知道。

而且除了我们实际共事过的人,我们谁也不知道。这让我们处于一个奇怪的境地:我们不知道该崇拜谁。成名的黑客往往是靠公关的偶然事件。有时我需要举一个顶尖黑客的例子,但从来不知道该说谁。首先想到的总是我认识的人,但用他们似乎很逊。所以我想,也许我应该说Richard Stallman、Linus Torvalds、Alan Kay或其他这类名人。但我不知道这些人是不是顶尖黑客,我从未与他们共事过。

如果存在一位黑客界的迈克尔·乔丹,没有人知道——包括他自己在内。

§ 15

Cultivation

Finally, the question the hackers have all been wondering about: how do you become a great hacker? I don't know if it's possible to make yourself into one. But it's certainly possible to do things that make you stupid, and if you can make yourself stupid, you can probably make yourself smart too.

The key to being a good hacker may be to work on what you like. When I think about the great hackers I know, one thing they have in common is the extreme difficulty of making them work on anything they don't want to. I don't know if this is cause or effect; it may be both.

To do something well you have to love it. So to the extent you can preserve hacking as something you love, you're likely to do it well. Try to keep the sense of wonder you had about programming at age 14. If you're worried that your current job is rotting your brain, it probably is.

The best hackers tend to be smart, of course, but that's true in a lot of fields. Is there some quality that's unique to hackers? I asked some friends, and the number one thing they mentioned was curiosity. I'd always supposed that all smart people were curious-- that curiosity was simply the first derivative of knowledge. But apparently hackers are particularly curious, especially about how things work. That makes sense, because programs are in effect giant descriptions of how things work.

Several friends mentioned hackers' ability to concentrate-- their ability, as one put it, to "tune out everything outside their own heads." I've certainly noticed this. And I've heard several hackers say that after drinking even half a beer they can't program at all. So maybe hacking does require some special ability to focus. Perhaps great hackers can load a large amount of context into their head, so that when they look at a line of code, they see not just that line but the whole program around it. John McPhee wrote that Bill Bradley's success as a basketball player was due partly to his extraordinary peripheral vision. "Perfect" eyesight means about 47 degrees of vertical peripheral vision. Bill Bradley had 70; he could see the basket when he was looking at the floor. Maybe great hackers have some similar inborn ability. (I cheat by using a very dense language, which shrinks the court.)

This could explain the disconnect over cubicles. Maybe the people in charge of facilities, not having any concentration to shatter, have no idea that working in a cubicle feels to a hacker like having one's brain in a blender. (Whereas Bill, if the rumors of autism are true, knows all too well.)

One difference I've noticed between great hackers and smart people in general is that hackers are more politically incorrect. To the extent there is a secret handshake among good hackers, it's when they know one another well enough to express opinions that would get them stoned to death by the general public. And I can see why political incorrectness would be a useful quality in programming. Programs are very complex and, at least in the hands of good programmers, very fluid. In such situations it's helpful to have a habit of questioning assumptions.

Can you cultivate these qualities? I don't know. But you can at least not repress them. So here is my best shot at a recipe. If it is possible to make yourself into a great hacker, the way to do it may be to make the following deal with yourself: you never have to work on boring projects (unless your family will starve otherwise), and in return, you'll never allow yourself to do a half-assed job. All the great hackers I know seem to have made that deal, though perhaps none of them had any choice in the matter.

培养

最后,黑客们一直好奇的问题:如何成为顶尖黑客?我不知道是否有可能让自己变成顶尖黑客。但可以肯定的是,有些事情会让你变笨,如果你能让自己变笨,那么也许你也能让自己变聪明。

成为好黑客的关键可能是做你喜欢的事。当我想到我认识的顶尖黑客时,他们有一个共同点:让他们做任何他们不想做的事极其困难。我不知道这是原因还是结果,可能两者都是。

要做好一件事,你必须热爱它。所以,只要你保持对编程的热爱,你就可能做得好。努力保持你14岁时对编程的那种惊奇感。如果你担心当前的工作正在腐蚀你的大脑,那很可能真是如此。

最好的黑客当然很聪明,但这在很多领域都一样。有没有什么是黑客独有的品质?我问了一些朋友,他们提到最多的是好奇心。我一直以为所有聪明人都好奇——好奇心不过是知识的导数。但显然黑客特别好奇,尤其是对事物运作的原理。这说得通,因为程序本质上是对事物运作方式的宏大描述。

有几个朋友提到了黑客的专注力——用他们的话说,是“屏蔽自己头脑以外一切”的能力。我当然注意到这一点。我还听几位黑客说,哪怕只喝半杯啤酒,他们就完全没法编程了。所以也许编程确实需要某种特别的专注能力。或许顶尖黑客能把大量上下文加载到脑子里,这样当他们看一行代码时,看到的不仅是那一行,而是整个程序。约翰·麦克菲写道,比尔·布拉德利作为篮球运动员的成功部分归功于他非凡的周边视觉。“完美”视力大约有47度的垂直周边视觉,而比尔·布拉德利有70度;他能在看地板时看到篮筐。也许顶尖黑客也有类似的天生能力。(我靠使用非常密集的语言来作弊,这相当于缩小了球场。)

这或许能解释在隔间问题上的分歧。也许负责设施的人自己没有什么专注力可被打碎,所以无法体会到,在黑客看来,在隔间里工作就像把大脑放进搅拌机里。(而比尔,如果关于自闭症的传闻是真的,那他对此再清楚不过了。)

我注意到的顶尖黑客与一般聪明人的一个区别是,黑客更加政治不正确。如果说好黑客之间有什么秘密握手,那就是当他们彼此足够了解时,可以表达那些会被大众用石头砸死的观点。我能理解为什么政治不正在编程中是有用的品质。程序非常复杂,至少在好程序员手中非常灵活。在这种情况下,对于保持质疑假设的习惯是有帮助的。

你能培养这些品质吗?我不知道。但至少你可以不压制它们。所以下面是我能给出的最好配方。如果有可能让自己成为顶尖黑客,方法可能是和自己做以下交易:你永远不必做无聊的项目(除非你的家人会因此挨饿),作为回报,你永远不允许自己做事半吊子。我认识的所有顶尖黑客似乎都达成了这个交易,尽管他们或许根本没有选择。

§ 16

Notes

[1] In fairness, I have to say that IBM makes decent hardware. I wrote this on an IBM laptop.

[2] They did turn out to be doomed. They shut down a few months later.

[3] I think this is what people mean when they talk about the "meaning of life." On the face of it, this seems an odd idea. Life isn't an expression; how could it have meaning? But it can have a quality that feels a lot like meaning. In a project like a compiler, you have to solve a lot of problems, but the problems all fall into a pattern, as in a signal. Whereas when the problems you have to solve are random, they seem like noise.

[4] Einstein at one point worked designing refrigerators. (He had equity.)

[5] It's hard to say exactly what constitutes research in the computer world, but as a first approximation, it's software that doesn't have users.

I don't think it's publication that makes the best hackers want to work in research departments. I think it's mainly not having to have a three hour meeting with a product manager about problems integrating the Korean version of Word 13.27 with the talking paperclip.

[6] Something similar has been happening for a long time in the construction industry. When you had a house built a couple hundred years ago, the local builders built everything in it. But increasingly what builders do is assemble components designed and manufactured by someone else. This has, like the arrival of desktop publishing, given people the freedom to experiment in disastrous ways, but it is certainly more efficient.

[7] Google is much more dangerous to Microsoft than Netscape was. Probably more dangerous than any other company has ever been. Not least because they're determined to fight. On their job listing page, they say that one of their "core values'' is "Don't be evil.'' From a company selling soybean oil or mining equipment, such a statement would merely be eccentric. But I think all of us in the computer world recognize who that is a declaration of war on.

Thanks to Jessica Livingston, Robert Morris, and Sarah Harlin for reading earlier versions of this talk.

注释

[1] 公平起见,我得说IBM生产的硬件不错。我写这篇文章用的就是IBM笔记本。

[2] 他们确实失败了,几个月后就关门了。

[3] 我认为这就是人们谈论“生命的意义”时所指的东西。表面上看,这似乎是一个奇怪的想法。生命不是一种表达,它怎么可能有意义?但它可以有一种很像意义的感觉。在像编译器这样的项目中,你需要解决很多问题,但这些问题都遵循某种模式,就像信号一样。而当你需要解决的问题是随机的,它们听起来就像噪声。

[4] 爱因斯坦曾一度设计过冰箱。(他持有股权。)

[5] 很难准确界定计算机世界中的研究是什么,但粗略地说,它是没有用户的软件。

我认为,顶尖黑客愿意在研发部门工作,不是因为能发表论文,主要是因为他们不必与产品经理开三个小时的会,讨论集成韩文版Word 13.27与说话回形针的问题。

[6] 类似的事情在建筑行业已经持续了很久。几百年前盖房子时,当地建造者会制作房子里的一切。但如今,建造者越来越多地只是组装由他人设计和制造的组件。这就像桌面出版的出现一样,给了人们灾难性实验的自由,但无疑更高效。

[7] 谷歌对微软的威胁远比当年的网景大。很可能比任何其他公司都更具威胁。尤其是因为他们决心战斗。在他们的招聘页面上,他们说核心价值观之一是“不作恶”。对于一家卖豆油或采矿设备的公司来说,这种声明只是古怪而已。但我想,计算机世界的人都明白,这是对谁宣战。

感谢Jessica Livingston、Robert Morris和Sarah Harlin阅读本文的早期版本。

打开原文 ↗