Loading...

偉大なハッカー

Original

2004年7月

(このエッセイは、Oscon 2004 での講演から抜粋したものです。)

数か月前、私は新しい本を読み終えたのですが、そのレビューには「挑発的」や「物議を醸す」といった言葉が何度も書かれていました。言うまでもなく「ばかげている」という言葉も。

この本を物議を醸すものにするつもりはなかった。効率化を図ったのだ。読者がすでに知っていることを説明して時間を無駄にしたくなかった。違いだけを説明したほうが効率的だ。しかし、そうすると不安を抱かせる本になってしまうのは間違いないと思う。

エジソン

どの考えが最も物議を醸すかについては異論はありません。それは、富の格差は私たちが考えるほど大きな問題ではないかもしれないという提案です。

この本の中で、富の差がそれ自体良いことだとは言っていません。状況によっては良い兆候かもしれない、とだけ言いました。ズキズキする頭痛は良いことではありませんが、例えば頭を打った後に意識を取り戻しつつあるなど、良い兆候であることもあります。

富の差は生産性の差の表れである可能性があります。(一人だけの社会では、それらは同一です。) そして、それはほぼ間違いなく良いことです。社会に生産性の差がないとしたら、それはおそらく誰もがトーマス・エジソンだからではありません。おそらく、トーマス・エジソンのような人がいないからでしょう。

技術の低い社会では、生産性に大きな差は見られません。火を起こすための枝を集める遊牧民の部族がいる場合、最も優秀な枝集め手は最も劣る人よりもどれだけ生産性が高いでしょうか。2 倍でしょうか。一方、人々にコンピューターのような複雑なツールを手渡すと、それを使ってできることの差は膨大になります。

これは新しい考えではありません。フレッド・ブルックスが 1974 年にこのことについて書いており、彼が引用した研究は 1968 年に発表されました。しかし、私は彼がプログラマー間の差異を過小評価していたと思います。彼は、コードの行数で表した生産性について書いています。優秀なプログラマーは、与えられた問題を 10 分の 1 の時間で解決できます。しかし、問題が与えられていない場合はどうなるでしょうか。多くの分野と同様に、プログラミングでは、難しいのは問題を解決することではなく、どの問題を解決するかを決めることです。想像力は測定が難しいですが、実際には、コード行数で測定される種類の生産性を左右します。

生産性はどの分野でも異なりますが、これほど大きく異なる分野はほとんどありません。プログラマー間の差異は非常に大きいため、種類が異なります。ただし、これはプログラミングに固有のものではないと思います。どの分野でも、テクノロジーが生産性の違いを拡大します。プログラミングで起こっていることは、私たちが多くのテクノロジーの力を持っているということだと思います。しかし、どの分野でもその力は大きくなっているため、私たちが目にする差異は、時間が経つにつれてますます多くの分野で見られるものになります。そして、企業や国の成功は、その差異への対処方法にますます左右されるようになります。

技術の進歩により生産性のばらつきが増すと、最も生産性の高い個人の貢献は不釣り合いに大きくなるだけでなく、時間とともに実際に増大します。グループの生産量の 90% がメンバーの 1% によって生み出されるようになると、何か (バイキングの襲撃や中央計画など) によってその生産性が平均まで引き下げられると、大きな損失が発生します。

彼らから最大限の成果を引き出すには、特に生産性の高い人材を理解する必要があります。彼らのモチベーションは何でしょう? 仕事をするために何が必要ですか? 彼らをどうやって認識しますか? 彼らにあなたのところに来てもらい、働いてもらうにはどうしたらいいでしょうか? そしてもちろん、どうすれば生産性の高い人材になれるかという疑問もあります。

お金以上のもの

私はスーパーハッカーを何人か知っているので、彼らに共通するものは何だろうと考えてみました。彼らの特徴は、おそらくプログラミングが本当に好きであることです。普通のプログラマーは、生活費を稼ぐためにコードを書きます。優れたハッカーは、プログラミングを楽しみとして考え、人々がお金を払ってくれると嬉しくなります。

優秀なプログラマーはお金に無関心だと言われることがあります。これはまったくの間違いです。プログラマーが本当に気にしているのは、面白い仕事をすることだけです。しかし、十分なお金を稼げば、好きなことを何でもできます。そのため、ハッカーは大金を稼ぐという考えに惹かれるのです。しかし、毎日仕事に出勤しなければならない限り、ハッカーは、いくら支払われるかよりも、そこで何をするかのほうを気にします。

経済的に、これは最も重要な事実です。なぜなら、優秀なハッカーに彼らの価値に見合った報酬を支払う必要がないからです。優秀なプログラマーは普通のプログラマーの 10 倍、100 倍の生産性があるかもしれませんが、3 倍の報酬をもらえればラッキーだと考えるでしょう。後で説明しますが、これは優秀なハッカーが自分がどれほど優れているかを知らないことが一因です。しかし、お金が彼らが最も望んでいるものではないことも一因です。

ハッカーは何を望んでいるのでしょうか? すべての職人と同様に、ハッカーは優れたツールを好みます。実際、それは控えめな表現です。優れたハッカーは、質の悪いツールの使用に耐えられません。彼らは、不適切なインフラストラクチャを持つプロジェクトに取り組むことを拒否するだけです。

私がかつて働いていた新興企業では、掲示板に IBM の広告が貼られていました。それは AS400 の写真で、見出しには「ハッカーはこれを嫌っている」と書かれていたと思います。[1]

プロジェクトにどのインフラストラクチャを使用するかを決めるとき、単に技術的な決定をしているだけではありません。社会的な決定も行っており、この 2 つのうち、こちらの方が重要かもしれません。たとえば、会社がソフトウェアを作成する場合、Java で作成するのが賢明な選択に思えるかもしれません。しかし、言語を選択するときは、コミュニティも選択していることになります。Java プロジェクトで雇用できるプログラマーは、Python で作成されたプロジェクトで雇用できるプログラマーほど優秀ではありません。また、ハッカーの質は、選択する言語よりもおそらく重要です。しかし、率直に言って、優れたハッカーが Java よりも Python を好むという事実は、これらの言語の相対的なメリットについて何かを物語っているはずです。

ビジネス関係者は、言語を標準とみなしているため、最も人気のある言語を好みます。彼らは、会社の命運をベータマックスに賭けたくはありません。しかし、言語は単なる標準ではありません。ネットワーク上でビットを移動する必要がある場合は、必ず TCP/IP を使用してください。しかし、プログラミング言語は単なるフォーマットではありません。プログラミング言語は表現の媒体です。

Java が最も人気のある言語として Cobol を追い抜いたという記事を読みました。標準としてこれ以上のものは望めません。しかし、表現手段としては、もっと良いものができるはずです。私が思いつく限りの優秀なプログラマーの中で、自発的に Java でプログラミングする人は 1 人しか知りません。また、私が思いつく限りの優秀なプログラマーの中で、Sun で Java を使っていない人は 1 人も知りません。

優れたハッカーは、一般的にオープンソース ソフトウェアの使用を主張します。優れているからというだけでなく、より多くの制御権が得られるからです。優れたハッカーは制御権を主張します。これが、彼らを優れたハッカーたらしめる要素の 1 つです。何かが壊れたら、それを直す必要があります。ハッカーがあなたのために書いているソフトウェアについて、ハッカーにこのように感じてもらいたいものです。ハッカーがオペレーティング システムについて同じように感じても、驚くには当たりません。

数年前、ベンチャーキャピタリストの友人が、彼が関わっている新しいスタートアップについて教えてくれました。それは有望そうに聞こえました。しかし、次に彼と話したとき、彼は、ソフトウェアを Windows NT で構築することに決め、非常に経験豊富な NT 開発者を最高技術責任者として雇ったばかりだと言いました。これを聞いたとき、私は、この人たちは破滅する運命にあると思いました。1 つ目は、CTO が一流のハッカーであるはずがないということです。なぜなら、優れた NT 開発者になるには、自発的に何度も NT を使用する必要があるからです。優れたハッカーがそんなことをするなんて想像できません。2 つ目は、たとえ彼が優秀だったとしても、プロジェクトを NT で構築しなければならない場合、優秀な人材を雇うのは困難でしょう。[2]

最後のフロンティア

ソフトウェアの次にハッカーにとって最も重要なツールは、おそらくオフィスでしょう。大企業は、オフィス空間の機能は階級を表すことだと考えています。しかし、ハッカーはオフィスをそれ以上の用途に使用しています。彼らはオフィスを思考の場として利用しています。そして、あなたがテクノロジー企業であれば、彼らの思考があなたの製品です。ですから、ハッカーを騒がしく気が散る環境で働かせることは、空気が煤だらけの塗装工場を持っているようなものです。

漫画「ディルバート」には、キュービクルについて多くのことが書かれていますが、それには十分な理由があります。私が知っているハッカーは皆、キュービクルを嫌っています。邪魔される可能性があるだけで、ハッカーは難しい問題に取り組むのをためらいます。キュービクルのあるオフィスで本格的な仕事をしたい場合、選択肢は 2 つあります。自宅で仕事をするか、誰もいない早朝や深夜、週末に出勤するかです。これは何かが壊れている兆候だと企業は気付いていないのでしょうか。オフィス環境は、仕事の助けになるものであり、仕事に無関心でいるためのものではありません。

Cisco のような企業は、CEO を含め、社員全員が個室を持っていることを誇りにしています。しかし、彼らは自分たちが考えるほど先進的ではありません。明らかに、彼らはまだオフィス スペースを地位の象徴と見なしています。また、Cisco は社内で製品開発をほとんど行わないことで有名です。彼らは、新しい技術を開発したスタートアップ企業を買収することで新しい技術を手に入れます。おそらく、ハッカーたちは静かに作業できる場所を持っていたのでしょう。

ハッカーが何を必要としているか理解している大企業のひとつが Microsoft です。私はかつて、ドアの大きな絵が描かれた Microsoft の求人広告を見たことがあります。その広告の趣旨は、「当社で働いてください。そうすれば、実際に仕事ができる職場を提供します」というものでした。そして、ご存知のように、Microsoft は大企業の中でも、社内でソフトウェアを開発できる点で際立っています。うまくはないかもしれませんが、十分にうまくできています。

企業がハッカーの生産性を高めたいなら、自宅での行動に目を向けるべきです。自宅では、ハッカーは自分で物事を整理して、最大限の成果を上げることができます。自宅で仕事をするとき、ハッカーは騒がしいオープンスペースではなく、ドアのある部屋で働きます。何エーカーもの駐車場に置かれたガラスの箱ではなく、周りに人がいて、何かを熟考する必要があるときに歩くことができる居心地の良い近所の場所で働きます。デスクで昏睡状態になり、仕事をしているふりをするのではなく、疲れたときに昼寝できるソファがあります。毎晩、ハッキングのピーク時に掃除機をかけた大勢の人がゴロゴロと音を立てて出入りすることはありません。会議や、神に祈って、企業のリトリートやチームビルディングの演習もありません。そして、彼らがそのコンピューターで何をしているかを見ると、ツールについて先ほど言ったことが裏付けられることがわかります。職場では Java と Windows を使用する必要があるかもしれませんが、自宅では自分で選択できるため、Perl と Linux を使用する可能性が高くなります。

実際、Cobol や Java が最も人気の高い言語であるという統計は誤解を招く可能性があります。どのツールが最適かを知りたい場合、ハッカーが自由に選択できる場合、つまりハッカー自身のプロジェクトで何を選択するかに注目する必要があります。この質問をすると、オープン ソース オペレーティング システムがすでに市場シェアを独占しており、1 位の言語はおそらく Perl であることがわかります。

面白い

ハッカーは、優れたツールとともに、興味深いプロジェクトを求めています。プロジェクトを面白くするものは何でしょうか? そうですね、明らかに、ステルス機や特殊効果ソフトウェアのような、あからさまにセクシーなアプリケーションは、取り組むのが面白いでしょう。しかし、新しい技術的課題を提起するアプリケーションであれば、どんなものでも面白いものになり得ます。したがって、ハッカーがどの問題を好むかを予測するのは困難です。なぜなら、一部の問題は、その問題に取り組んでいる人々が新しい種類のソリューションを発見したときに初めて面白くなるからです。ITA (Orbitz 内のソフトウェアを作成した企業) が登場する前は、航空運賃検索に取り組んでいる人々は、おそらく、考え得る限り最も退屈なアプリケーションの 1 つだと思っていました。しかし、ITA は、問題をより野心的な方法で再定義することで、それを面白くしました。

同じことが Google でも起こったと思います。Google が設立されたとき、いわゆるポータルの間では、検索は退屈で重要でないというのが常識でした。しかし、Google の人たちは検索が退屈だとは思っていませんでした。だからこそ、彼らは検索をうまくやっているのです。

これは、マネージャーが違いを生み出せる領域です。親が子供に「10 分で部屋全体を片付けるなんて無理だよ」と言うのと同じように、優れたマネージャーは、問題をもっと興味深い問題として再定義することができます。スティーブ・ジョブズは、高い基準を持っているという理由から、この点で特に優れているようです。Mac が登場する前は、小型で安価なコンピューターがたくさんありました。彼は、問題を「美しいコンピューターを作る」と再定義しました。そして、それはおそらく、どんなアメやムチよりも開発者を駆り立てたのでしょう。

彼らは確かに期待に応えてくれました。Mac が初めて登場したとき、電源を入れなくても、それが良いものであることはケースを見ればわかりました。数週間前、私はケンブリッジの通りを歩いていたとき、誰かのゴミ箱の中に、Mac のキャリングケースらしきものを見つけました。中を覗くと、Mac SE が入っていました。それを家に持ち帰り、電源を入れると、起動しました。Macintosh の幸せな顔、そして Finder。なんてことだ、とてもシンプルです。まるで Google のようでした。

ハッカーは高い基準を持つ人々のために働くことを好みます。しかし、厳格であるだけでは十分ではありません。正しいことを主張しなければなりません。つまり、自分自身がハッカーでなければならないということです。プログラマーを管理する方法についての記事を時々見かけます。実際には、2 つの記事があるはずです。1 つは、自分自身がプログラマーである場合に何をすべきかに関するもので、もう 1 つは、そうでない場合の対処法に関するものです。そして、2 つ目の対処法は、おそらく 2 つの言葉に要約できます。諦めることです。

問題は、日々の管理ではありません。本当に優秀なハッカーは、事実上、自己管理しています。問題は、ハッカーでなければ、誰が優秀なハッカーか分からないことです。同様の問題が、アメリカ車がなぜあんなに醜いかを説明しています。私はそれをデザインのパラドックスと呼んでいます。優れたデザイナーを雇ってデザインを依頼するだけで、製品を美しくできると思うかもしれません。しかし、自分自身にセンスがなければ、どうやって優れたデザイナーを見分けられるでしょうか? 定義上、ポートフォリオからは見分けられません。また、受賞歴や仕事内容で判断することもできません。なぜなら、デザインでは、ほとんどの分野と同様に、それらは流行や社交に左右され、実際の能力ははるかに三番目だからです。避けようがありません。美しいものを生産するためのプロセスを、美しさを知らずして管理することはできません。アメリカ車が醜いのは、アメリカの自動車会社がセンスの悪い人々によって運営されているからです。

この国では、多くの人が趣味というものを捉えにくいもの、あるいは取るに足らないものだと考えています。しかし、それはそのどちらでもありません。デザインを推進するには、マネージャーは会社の製品に対して最も要求の厳しいユーザーでなければなりません。そして、本当に優れた趣味を持っているなら、スティーブ・ジョブズのように、自分を満足させることを優秀な人々が取り組みたがるような問題にすることができます。

厄介な小さな問題

どのような問題が面白くないかは簡単に言えます。それは、いくつかの大きな明確な問題を解決する代わりに、多くの厄介な小さな問題を解決しなければならない問題です。最悪のプロジェクトの 1 つは、バグだらけのソフトウェアのインターフェイスを書くことです。もう 1 つは、個々のクライアントの複雑であいまいなニーズに合わせて何かをカスタマイズしなければならないときです。ハッカーにとって、こうした種類のプロジェクトは、千切れ千切れの死です。

厄介な小さな問題の特徴は、そこから何も学べないということです。コンパイラを書くことは、コンパイラとは何かを学べるので興味深いです。しかし、バグのあるソフトウェアへのインターフェースを書いても、バグはランダムなので、何も学べません。[3] そのため、優れたハッカーが厄介な小さな問題を避けるのは、単に潔癖症というだけではありません。それはむしろ自己保存の問題です。厄介な小さな問題に取り組むと、愚かになります。優れたハッカーがそれを避けるのは、モデルがチーズバーガーを避けるのと同じ理由です。

もちろん、いくつかの問題は本質的にこのような性質を持っています。そして、需要と供給の関係で、それらの問題は特に高い報酬を得られます。ですから、優秀なハッカーに面倒な問題に取り組んでもらう方法を見つけた会社は大成功するでしょう。あなたならどうしますか?

スタートアップ企業では、このようなことが起きます。私たちのスタートアップ企業では、ロバート・モリスがシステム管理者として働いていました。それは、ローリング・ストーンズがバル・ミツワーで演奏するようなものです。そのような才能のある人を雇うことはできません。しかし、人々は自分が設立した企業のために、どんなに退屈な仕事でもやります。[4]

大企業は、会社を分割することでこの問題を解決します。独立した研究開発部門を設立することで優秀な人材を確保し、従業員が顧客の厄介な問題に直接取り組む必要がないようにします。[5] このモデルでは、研究部門は鉱山のような役割を果たします。新しいアイデアを生み出し、おそらく会社の他の部門でもそれを活用できるようになります。

そこまで極端にならなくてもいいかもしれません。ボトムアッププログラミングは、会社を分割する別の方法を提案しています。つまり、頭のいい人たちをツールメーカーとして働かせるのです。会社が x を行うソフトウェアを作っているなら、そのタイプのソフトウェアを書くためのツールを作るグループと、そのツールを使ってアプリケーションを書くグループを作ります。こうすれば、頭のいい人たちにコードの 99% を書いてもらいながら、従来の研究部門とほぼ同じくらいにユーザーから隔離しておくことができます。ツールメーカーにはユーザーがいますが、それは会社自身の開発者だけです。[6]

もしマイクロソフトがこのアプローチを採用していたら、同社のソフトウェアはそれほどセキュリティホールだらけにはならなかっただろう。なぜなら、実際のアプリケーションを作成するあまり賢くない人たちが、メモリの割り当てのような低レベルの作業を行わないからだ。彼らは Word を C で直接作成するのではなく、Word 言語の大きなレゴブロックを組み立てるだろう。(専門用語は「デュプロ」だったと思う。)

凝集

興味深い問題とともに、優秀なハッカーが好きなのは、他の優秀なハッカーです。優秀なハッカーは集団で集まる傾向があり、ゼロックス パークのように、時には驚くほど集団で集まります。したがって、優秀なハッカーを引き付けるには、環境をどれだけ良くするかに比例するわけではありません。集団で集まる傾向があるということは、環境の二乗に比例するということです。つまり、勝者がすべてを手に入れるということです。どの時点においても、ハッカーが最も働きたいと思う場所は 10 か 20 か所程度しかなく、その 1 つに含まれていなければ、優秀なハッカーが減るどころか、ゼロになります。

優秀なハッカーがいるだけでは、会社を成功させるのに十分ではありません。現在注目を浴びている Google と ITA ではうまく機能していますが、Thinking Machines や Xerox には役立ちませんでした。Sun はしばらく好調でしたが、同社のビジネス モデルは下降エレベーターです。このような状況では、最高のハッカーでも救うことはできません。

しかし、他の条件が同じであれば、優秀なハッカーを引き付けることができる企業は大きなアドバンテージを持つだろうと私は考えています。これに反対する人もいます。1990 年代にベンチャー キャピタル企業を回っていたとき、ソフトウェア企業が勝つのは優れたソフトウェアを開発することではなく、ブランド、チャネルの支配、適切な取引によってだと何人かが言っていました。

彼らは本当にそう信じているようでした。そして、その理由は私には分かると思います。多くのベンチャーキャピタルが、少なくとも無意識のうちに探しているのは、次のマイクロソフトだと思います。そしてもちろん、マイクロソフトをモデルにしているのであれば、優れたソフトウェアを書いて勝つことを望んでいる企業を探すべきではありません。しかし、ベンチャーキャピタルが次のマイクロソフトを探すのは間違いです。なぜなら、他の企業がちょうど良いタイミングで屈服して次の IBM になる覚悟がない限り、どのスタートアップも次のマイクロソフトにはなれないからです。

マイクロソフトをモデルにするのは間違いだ。なぜなら、マイクロソフトの企業文化全体が、あの幸運な出来事から生まれたものだからだ。マイクロソフトは悪いデータポイントだ。マイクロソフトを除外すれば、良い製品が市場で勝つ傾向があることがわかる。ベンチャーキャピタルが探すべきなのは、次のアップル、または次のグーグルだ。

ビル・ゲイツもこのことはわかっていると思う。彼がグーグルについて心配しているのは、そのブランドの力ではなく、より優秀なハッカーを抱えているという事実だ。[7]

認識

では、偉大なハッカーとは誰でしょうか? どうやって出会ったらわかるのでしょうか? 実は非常に難しいことが分かりました。ハッカーでさえも見分けることができないのです。私の友人 Trevor Blackwell が偉大なハッカーであることは、今ではほぼ確信しています。Slashdot で彼が独自の Segwayを作ったという記事を読んだことがあるかもしれません。このプロジェクトの注目すべき点は、彼が 1 日ですべてのソフトウェアを書いたことです (ちなみに Python で作成しました)。

トレバーにとっては、それは当たり前のことだ。しかし、私が初めて彼に会ったとき、彼は完全なバカだと思った。彼はロバート・モリスのオフィスに立って、何やら彼にペラペラしゃべりかけていた。私は彼の後ろに立って、ロバートにこの変人をオフィスから追い出して、一緒にランチに行けるようにと必死に身振りで伝えていたのを覚えている。ロバートも最初はトレバーを誤解していたと言う。どうやら、ロバートが初めて彼に会ったとき、トレバーは自分の生活のあらゆる側面についてすべてインデックス カードの束に書き出すという新しい計画を始めたばかりだった。彼はどこへ行くにもそのカードを持ち歩いていた。彼はカナダから来たばかりで、強いカナダ訛りで、マレット ヘアだった。

問題は、ハッカーが社交性に欠けるという評判にもかかわらず、賢く見えるようにかなりの努力を払うことがあるという事実によってさらに複雑になっています。大学院生の頃、私は MIT AI ラボに時々出入りしていました。最初はちょっと怖かったです。そこにいる全員がとても速く話していたからです。しかし、しばらくすると、速く話すコツを習得しました。もっと速く考える必要はありません。すべてを話すのに 2 倍の単語を使うだけでいいのです。

信号にこれだけのノイズがあると、実際に会ったときに優秀なハッカーを見分けるのは困難です。今でもわかりません。履歴書を見てもわかりません。ハッカーを判断する唯一の方法は、一緒に何かに取り組んでみることだと思われます。

そして、これがハイテク産業が大学周辺にしか存在しない理由です。ここでの主役は教授ではなく学生です。大学周辺でスタートアップが成長するのは、大学が将来有望な若者を集め、同じプロジェクトに取り組ませるからです。優秀な若者は他の優秀な若者が誰であるかを知り、一緒に新しいプロジェクトを作り上げます。

一緒に仕事をしてみなければ、優れたハッカーかどうかは分からないため、ハッカー自身も自分がどれだけ優れているかは分からない。これは、ある程度、ほとんどの分野で当てはまる。何かに秀でている人は、自分の偉大さを確信しているというよりは、なぜ他の人は皆、それほど無能に見えるのかと不思議に思っていることが分かった。

しかし、ハッカーにとって、自分の能力がどの程度かを知ることは特に難しい。なぜなら、自分の仕事を比較するのが難しいからだ。これは、他のほとんどの分野ではもっと簡単だ。100メートルでは、10秒で誰が一番速いかわかる。数学でさえ、どの問題が解決しにくいか、何が良い解決策であるかについては、一般的な合意があるようだ。しかし、ハッキングは執筆に似ている。2つの小説のどちらが優れているかを誰が言えるだろうか。もちろん、著者にはわからない。

少なくともハッカーの場合、他のハッカーはそれを見抜くことができます。それは、小説家と違って、ハッカーは共同でプロジェクトに取り組むからです。ネット上で誰かに難しい問題をいくつかぶつけると、相手がどれだけ激しく反撃してくるかがすぐにわかります。しかし、ハッカーは自分の仕事ぶりを見ることができません。ですから、優秀なハッカーに自分の能力を尋ねれば、ほぼ間違いなく「わかりません」と答えるでしょう。謙遜しているだけではありません。本当にわからないのです。

そして、実際に一緒に働いたことのある人以外は、誰も知りません。そのため、私たちは奇妙な状況に陥っています。つまり、誰が私たちのヒーローになるべきなのかがわからないのです。有名になるハッカーは、PR の偶然の偶然で有名になる傾向があります。時々、偉大なハッカーの例を挙げる必要があるのですが、誰を挙げればよいのかわかりません。最初に思い浮かぶ名前はいつも、個人的に知っている人ですが、その名前を挙げるのはダサい気がします。だから、リチャード・ストールマン、リーナス・トーバルズ、アラン・ケイ、あるいはそのくらいの有名人を挙げるべきなのかもしれないと思います。しかし、これらの人が偉大なハッカーであるかどうかはわかりません。私は彼らと何か一緒に働いたことはありません。

ハッキング界のマイケル・ジョーダンが存在するかどうかは、彼自身を含めて誰も知らない。

栽培

最後に、ハッカーがずっと疑問に思っている質問です。どうすれば優秀なハッカーになれるのでしょうか? 自分で優秀なハッカーになれるかどうかはわかりません。しかし、自分をバカにするようなことをするのは確かに可能です。そして、自分をバカにすることができれば、おそらく自分を賢くすることもできるでしょう。

優れたハッカーになるための鍵は、好きなことに取り組むことかもしれません。私が知っている優れたハッカーについて考えると、彼らに共通していることの 1 つは、やりたくないことに取り組ませるのが非常に難しいことです。これが原因なのか結果なのかはわかりませんが、両方かもしれません。

何かを上手に行うには、それを好きでなければなりません。ですから、ハッキングを好きなものとして維持できる限り、上手にできる可能性は高いでしょう。14 歳のときにプログラミングに対して抱いた驚きの感覚を持ち続けるようにしてください。現在の仕事で脳が腐っているのではないかと心配しているなら、おそらくそうなっているでしょう。

もちろん、最高のハッカーは頭が良い傾向にありますが、それは多くの分野で当てはまります。ハッカーに特有の資質はあるのでしょうか。何人かの友人に尋ねたところ、一番に挙げられたのは好奇心でした。私は、賢い人はみんな好奇心が強い、つまり好奇心は知識の一次導関数に過ぎない、とずっと思っていました。しかし、どうやらハッカーは特に好奇心が強く、特に物事の仕組みについて好奇心が強いようです。それは理にかなっています。なぜなら、プログラムは事実上、物事の仕組みの巨大な説明だからです。

何人かの友人がハッカーの集中力について言及していました。ある友人は、彼らの能力は「自分の頭の外にあるものをすべて無視する」能力だと言いました。私は確かにこれに気付きました。また、ビールを半分飲んだだけでもプログラミングがまったくできなくなると何人かのハッカーが言うのを聞いたことがあります。ですから、ハッキングには集中するための特別な能力が必要なのかもしれません。おそらく、優れたハッカーは大量のコンテキストを頭の中にロードできるので、コード行を見るときに、その行だけでなく、その周りのプログラム全体を見ることができるのです。ジョン・マクフィーは、ビル・ブラッドリーがバスケットボール選手として成功したのは、彼の並外れた周辺視力によるところが大きいと書いています。「完璧な」視力とは、垂直周辺視力が約 47 度であることを意味します。ビル・ブラッドリーは 70 度で、床を見ながらバスケットを見ることができました。おそらく、優れたハッカーには、同様の生来の能力があるのでしょう。(私は、コートを狭める非常に密度の高い言語を使ってごまかしています。)

これで、キュービクルをめぐる断絶を説明できるかもしれない。集中力を乱すようなことがなく、施設の責任者は、キュービクルで働くことがハッカーにとって脳をミキサーにかけられているような気分になることに気付いていないのかもしれない。(一方、ビルは、自閉症の噂が本当なら、それをよく知っている。)

優れたハッカーと一般の賢い人々との間に私が気づいた違いの 1 つは、ハッカーの方が政治的に正しくないということです。優れたハッカーの間で秘密の握手が行われるのは、一般大衆から石打ちにされるような意見を表明できるほどお互いをよく知っている場合です。そして、政治的に正しくないことがプログラミングにおいて役立つ理由もわかります。プログラムは非常に複雑で、少なくとも優れたプログラマーの手にかかると非常に流動的になります。このような状況では、仮定に疑問を抱く習慣があると役立ちます。

これらの資質を養うことができるでしょうか? わかりません。しかし、少なくとも抑圧しないようにすることはできます。そこで、私が試した最高のレシピをご紹介します。自分を偉大なハッカーにできるとしたら、その方法は、自分自身と次のような約束を交わすことかもしれません。退屈なプロジェクトには決して取り組まなくてよい (さもなければ家族が飢えてしまう場合を除く)。その代わりに、中途半端な仕事をすることは決して許さない。私が知る偉大なハッカーは皆、この約束を交わしているようですが、おそらく誰もその点について選択の余地がなかったのでしょう。

注記

[1] 公平に言えば、IBMはまともなハードウェアを作っていると言わざるを得ません。私はこれをIBMのラップトップで書きました。

[2] 結局、彼らは破滅し、数か月後に閉鎖した。

[3] 人々が「人生の意味」について語るとき、これが意味するところだと思います。一見すると、これは奇妙な考えに思えます。人生は表現ではありません。どうして意味があるのでしょうか? しかし、意味のように感じられる性質を持つことができます。コンパイラのようなプロジェクトでは、多くの問題を解決する必要がありますが、問題はすべて、信号のようにパターン化されます。一方、解決しなければならない問題がランダムである場合、それはノイズのように見えます。

[4] アインシュタインはかつて冷蔵庫の設計に携わっていた。(彼には株式があった。)

[5] コンピュータの世界では研究とは何かを正確に言うのは難しいですが、大まかに言えば、ユーザーのいないソフトウェアです。

最高のハッカーが研究部門で働きたがるのは、出版のためではないと思います。主な理由は、Word 13.27 の韓国語版としゃべるペーパークリップの統合に関する問題について、製品マネージャーと 3 時間も会議をしなくて済むからだと思います。

[6] 建設業界では、同じようなことが長い間起こっています。200年前に家を建てたとき、地元の建設業者が家の中のすべてを建てていました。しかし、建設業者が行うことは、他の誰かが設計し製造した部品を組み立てることが増えています。これは、デスクトップパブリッシングの登場と同様に、人々に悲惨な方法で実験する自由を与えましたが、確かにより効率的です。

[7] Google は、Netscape よりも Microsoft にとってはるかに危険です。おそらく、他のどの会社よりも危険です。少なくとも、Google は戦う決意をしているからです。Google の求人情報のページには、Google の「基本理念」の 1 つとして「邪悪にならない」と書かれています。大豆油や採掘設備を販売している会社がこのような発言をするのは、単に風変わりなだけです。しかし、コンピュータの世界にいる私たち全員が、これが誰に対する宣戦布告であるかを認識していると思います。

この講演の以前のバージョンを読んでくださった Jessica Livingston、Robert Morris、Sarah Harlin に感謝します