これは、Paul Graham:Great Hackers を、原著者の許可を得て翻訳・公開するものです。
<版権表示>
本和訳テキストの複製、変更、再配布は、この版権表示を残す限り、自由に行って結構です。
(「この版権表示」には上の文も含まれます。すなわち、再配布を禁止してはいけません)。
Copyright 2004 by Paul Graham
原文: http://www.paulgraham.com/gh.html
日本語訳:Shiro Kawai (shiro @ acm.org)
<版権表示終り>
Paul Graham氏のエッセイをまとめた『ハッカーと画家』の
邦訳版が出版されました。
出版社の案内ページ
Amazon.co.jp
サポートページ
2004/07/29 翻訳公開
2004/08/01 Yoshinori Okujiさんより誤記の訂正を反映
2004/08/02 武井伸光さんより誤記の訂正を反映
2004/08/17 原文にある文中リンクを反映
(この記事はOSCON 2004での基調講演を基にしたものである)
私は数ヵ月前に新しい 本 を出版したんだが、「挑発的」だとか「論議を呼ぶ」だとかいう書評が やけに目立った。「大馬鹿だ」という評については何も言わないでおこう。あの本を敢えて議論を呼ぶように書いたつもりはない。 むしろ、効率的にしたかったんだ。読者がもう知っていることをまたくどくど 説いてみんなの時間を無駄にしたくはなかった。知られてることとの差分だけ 示すほうが効率的じゃないか。だが、どうやらこの方法は危ない本を 産み出してしまうようだ。
どれが最も論議を呼ぶアイディアかという点に関しては、さして 論議が無かったようだ。富の格差は広く思われているほどには 大きな問題ではない、と言ったやつだ[訳註1]。
私は本の中で、富の格差がそれ自体として良いものだと言ったわけじゃない。 私が言ったのは、ある状況下では、富の格差は良いものを示すサインだということだ。 頭がずきんずきんと痛むというのは、それ自体は良いことではないが、 良いことを示すサインではあり得る。例えば、頭を強く打った後で、 意識を取り戻しつつある場合なんかだ。
富の格差は、生産性の格差を示している可能性がある (一人だけからなる社会では、両者は等しい)。 だとしたら、それ自身はほぼ確実に良いことだと言える。 生産性に格差が無い社会があったとしたら、それは皆がトーマス・エジソンである 社会であるよりは、トーマス・エジソンがいない社会である可能性の方が高い。
技術が低い社会では生産性の格差はそれほど見られない。 遊牧民の一族が焚火のために枝を集めているとしよう。 一番薪集めがうまい人と一番下手な人の差はどれくらいのものだろう? せいぜい2倍くらいだろうか。だが、人々がコンピュータのような複雑な道具を手にしたなら、 それでできることの差は極めて大きいものになる。
これは新しいアイディアではない。フレッド・ブルックスはこのことを1974年に 書いているし、そこで彼が引用している研究は1968年に発表されたものだ。 ただ、彼はプログラマ間の差を低く見積っていると私は思う。 彼は生産性を、コードの行数で測って、一番のプログラマは与えられた問題を 10分の1の時間で解くとした。でも、問題が与えられていなかったとしたら? 他の多くの分野でも同じだが、プログラミングでも、難しいのは 問題を解くことではなく、どの問題を解くかを決めることだ。 想像力を測るのは難しい。が、現実にはそれはコードの行数で測られるような 生産性をはるかに凌駕するだろう。
どんな分野でも生産性の差はあるが、それが非常に大きい分野というのは 限られる。プログラマ間の差はあまりに大きく、そのため上の方と下の方では 別の種類のプログラマと言っても良いくらいだ。 だが、これはプログラミングに固有のものではないと思う。 どの分野でも、技術は生産性の差を拡大する。 プログラミングの世界で起こっているのは、単に技術による梃の効果が 非常に大きく効いているってことだ。あらゆる分野でこの梃は次第に長くなっており、 したがって時が経つにつれ、より多くの分野でこのような差が見られるように なってゆくだろう。そして、会社や国の成功も、この効果をどう 扱うかにより大きく依存するようになってゆくだろう。
技術に伴って生産性の差が開いて行くとしたら、 最も生産性の高い個人の貢献は、それが全体の中で不釣合いに大きなだけではなく、 さらに大きくなってゆくだろう。集団の出力の90%が、1%のメンバーによって 作られる点にまで達したら、彼らの生産性を何か(海賊の襲撃でも、 中央集権管理でも)によって平均まで引きずり降ろすことは、巨大な損失を 意味することになる。
これらの特に生産的な人々から最も多くを得るには、彼らを理解する必要がある。 彼らはどういう動機を持っているんだろう。 仕事をするのに必要なものは何だろう。 そういう人々をどうやって見つけられるだろう。 そういう人々に仕事をしてもらうにはどうすればいいだろう。 そしてもちろん、これも大事な質問だ:どうしたらそういう人になれるだろう?
私は数人のスーパーハッカーを知っているので、 彼らが共通に持っているものは何かを考えてみた。 彼らを特徴づけている資質は、おそらく、プログラミングを本当に愛しているという ことだ。普通のプログラマは生活のためにコードを書く。 素晴らしいハッカーにとっては、コード書きは楽しみのためにするもので、 それに金を払ってくれるという人がいれば大いに喜ぶのだ。
偉大なプログラマは金に関心が無い、と言われることもある。 これは必ずしも正確ではない。彼らが本当に関心があるのは確かに面白い仕事をする ということだ。そして、十分に金を儲ければ、やりたい仕事がやれる。 この理由から、ハッカーは大きな財をなすことに惹かれるんだ。 でも、どうせ毎日出勤しなければならないのだとしたら、 どれだけ給与をもらえるかよりは、そこで何をするかの方がハッカーにとっては 大事なことだ。
経済的には、この事実は重要な意味を持つ。 素晴らしいハッカーに、彼の価値相応のものを支払う必要が無いということだからだ。 凄腕のプログラマは普通のプログラマの10倍から100倍生産的かもしれないが、 普通のプログラマの3倍も給料をもらえばラッキーだと思ってくれるだろう。 後で説明するように、凄いハッカーは自分がどれだけ 凄いのか自分ではわからない、ということも、その理由のひとつだ。 だが、彼らの本当に欲しいものが金ではない、ということもまたその理由だろう。
ハッカーが欲しがるものは何だろう? 他のものつくりの人々と同じように、 ハッカーは良い道具が好きだ。いや、これは控えめに過ぎるかもしれない。 良いハッカーは、悪い道具を使うことに耐えられない。彼らは、 間違ったインフラストラクチャを使うプロジェクトで働くことを、 単に拒絶するだろう。
私が以前働いていたベンチャーでは、掲示板にIBMの広告がピンで止めてあった。 それはAS400の写真で、その上に付けられていた表題は確か、 「ハッカーはこれを嫌悪する」だったと思う[1]。
プロジェクトに使うインフラを決定するということは、 単なる技術的な決定ではない。それは社会的な決定でもあり、 両者のうちではむしろ後者のほうが重要かもしれない。 例えば、あなたの会社がソフトウェアを書こうとした時、 Javaを選ぶのが、分別ある態度に思えるかもしれない。 しかし、言語を選ぶというのは、同時にコミュニティを選んでいることにも なる。Javaのプロジェクトで働くために雇われるプログラマは、 Pythonを使うプロジェクトで雇えるプログラマほど 賢くはないだろう[2]。 そして、雇えるハッカーの質は、たぶん言語の選択よりもずっと重要だ。 もっとも、正直に言えば、良いハッカーはJavaよりPythonを好むという事実が、 これらの言語の相対的な利点について何かを暗示していると思う。
ビジネスの連中は、最も人気のある言語を好む。言語は標準みたいなものだと 思っているからだ。Betamaxに社運を賭けたくはないだろうからね。 でも、言語に関する問題は、それが単なる標準ではないということだ。 今、ネットワーク上でビットをやりとりするなら、何はさておきTCP/IPを 使うべきだろう。だが、プログラミング言語は単なるフォーマットではない。 プログラミング言語は表現の媒体なんだ。
Javaは最も人気のある言語としてCobolを追い抜いた、という記事を読んだ。 標準としては、それ以上望むことはないだろう。だが、表現手段としては、 まだまだ改善の余地があるはずだ。私が思い付く全ての偉大なプログラマの うち、進んでJavaを書いている人物は一人しかいない。そして 私が思い付く全ての偉大なプログラマで、Sunで働いていなくて、Javaで 書いている人物というのは、一人もいない。
素晴らしいハッカーはまた、一般的に、オープンソースソフトウェアを使うことを主張する。 そちらの方が良質だというだけでなく、自分で多くをコントロールできるからだ。 良いハッカーはコントロールしたがる。それが彼らを良いハッカーたらしめている 理由のひとつだ。何かが壊れたら、自分で直したいんだ。 あなたがハッカーにプログラムを書いてもらっているとすれば、もちろん、 そのプログラムが壊れたらハッカー自身に直してもらいたいだろう。 でも、ハッカーはオペレーティングシステムにさえ、全く同様に感じていると 聞いても驚いてはいけない。
2年ほど前、友人のベンチャーキャピタリストが、彼が関わっている 新しいベンチャーについて話してくれた。その時は、それはかなり有望に思えた。 次に彼と会った時、そのベンチャーはソフトウェアをWindows NT上で 開発することを決定し、経験豊かなNT開発者を技術最高責任者として招いたと 彼は話した。これを聞いて私は、ああそのベンチャーの運命は決まったと 思ったものだ。第一に、その技術最高責任者は一級のハッカーではありえない。 だって素晴らしいNT開発者になるためには、NTを何度も何度も、自分から進んで 使わなくちゃならないだろう。偉大なハッカーがそんなことをするなんて 想像も出来ない。第二に、もし彼が優秀だったとしても、 プロジェクトがNT上に構築されるなら、優秀な人物を集めることが 困難だろうからだ[3]。
ハッカーにとって、ソフトウェアの次に大事な道具はおそらく仕事場だ。 大企業は、オフィス空間の機能は地位を示すことだと考えている。 だがハッカーにとって、仕事場はそれ以上のものだ。 オフィスは、その中で考えるためのものなんだ。 技術を売る会社にとって、ハッカーの考えることは会社の製品そのものだと言える。 ハッカーを、ざわついて気が散る環境で働かせるのは、ペンキ工場を 煤だらけにしておくようなものだ。
Dilbertにはオフィスのブースについてたくさんのエピソードがあるが、 それにはもっともな理由があるわけだ。私の知っているハッカーは皆ブースを 嫌っている。考えを中断されるかもしれないという可能性だけで、 難しい問題を考えようという気が起こらなくなる。仕切りだけのオフィスで まともな仕事をしようと思うなら、選択肢はふたつしかない。 家で働くか、早朝、深夜、週末といった時間外で誰もいない時に出社するかだ。 会社は、プログラマがそういうことをしだしたら、それが何かがおかしいサインだと 気づかないんだろうか。オフィス環境というのは、その中で仕事をするための ものであって、そういう環境にもかかわらず仕事をする、というものじゃないはずだ。
Ciscoのような会社は、全員が、最高経営責任者も含めて、仕切りだけのブースで 仕事をしていることを誇りにしている。だが、そういう会社は彼らが自分で 考えているほど進んでいるわけじゃない。オフィス空間は階級バッジみたいな ものだという考えから抜け出せてないからだ。Ciscoは社内でほとんど開発を 行っていないことで有名だということも思い出して欲しい。新しい技術は、 それをつくり出したベンチャーを買収することで手に入れている。 そういうベンチャーでは、たぶんハッカーは静かな労働環境を持っていただろう。
ハッカーが欲するものを理解している大企業がひとつある。 マイクロソフトだ。大きなドアが書かれた、マイクロソフトのリクルート広告を 見たことがある。それはこう言っていた。「ここに来て働きませんか。 私達は、仕事がちゃんとできる環境を用意しています」。実際、マイクロソフトは、 大企業でありながら社内でソフトウェアが開発できているという点で非常に特殊だ。 素晴らしくはないかもしれないが、十分なだけのソフトは作り出せている。
会社がハッカーに生産的になって欲しいと思うなら、 ハッカーが家でどうしているかを見るべきだ。 家では、ハッカーは仕事が捗るように自分でレイアウトを決められる。 ハッカーは家で働く時、騒がしいあけっぴろげの空間では仕事をしていないだろう。 ドア付きの部屋で仕事をしているはずだ。広大な駐車場の真ん中のガラス箱みたいな ところじゃなく、こじんまりして人が近くにいて、何かを考えたい時はちょっと 歩き回ることができるような場所で仕事をしているはずだ。 疲れた時は机に向かって働いてるふりをして気を失うんじゃなく、 ちょっと昼寝が出来るソファがあったりしてね。 一番ハックがのってきた夕方に五月蝿い掃除機を使う掃除スタッフもいない。 ミーティングだの、会社の合宿だの(うげぇ)、チームビルディングエクササイズだの はもちろんない。そういう環境にいるハッカーの画面を見てみれば、 私が上で道具について言ったことが確認できるだろう。 そういうハッカーは会社ではJavaとWindowsを使っているかもしれないが、 家では、自分が選べる環境では、PerlとLinuxを使っていることが多いはずだ。
実際、CobolやJavaが最も人気ある言語だというような統計は誤解のもとでさえある。 何が最高の道具かを知りたいなら、我々が見なければならないのは、 ハッカーが自由に選べる際に、つまり、彼ら自身のプロジェクトに、 何を選ぶかということだ。この質問をしてみれば、既にオープンソースのOSが 圧倒的なシェアを占めており、一番の言語はたぶんPerlだということに気づくだろう。
ハッカーは、良い道具とともに、おもしろいプロジェクトを欲する。 何がプロジェクトを面白くするだろう? もちろん、とびぬけてセクシーな アプリケーション、ステルス飛行機だとか特殊効果のソフトウェアだとかは、 やって面白いプロジェクトだろう。でも、新しい技術的な挑戦があれば、 どんなアプリケーションだって面白くなり得る。 だから、ハッカーがどういう問題を好むかを予想することは難しい。 その問題に取り組んでみて、新しい種類の解法を見つけ出してはじめて、 面白くなる、というものもあるからだ。Orbitzで使われているソフトウェアをITAが 書くまでは、航空機の料金検索ソフトウェアを書いている人々は、 たぶん考え得る限りで一番退屈なソフトを書いていると思っていたんじゃ ないだろうか。だがITAは問題をずっと野心的な方法で 再定義することで、 それを面白いものにしたんだ。
同じことがGoogleでも起こったんだと思う。 Googleが創立された時、いわゆるポータルについては、検索という部分は 退屈でさして重要でないものだというのが一般的な認識だった。 だがGoogleは検索は退屈なものだとは思わなかった。それが、 彼らが検索を非常にうまくやってのけた理由だ。
ここは、マネージャーで差をつけられる領域だ。 親が子供に言い聞かせるように、部屋を10分で綺麗にかたづけることは できないかもしれないけれど、良いマネージャーは問題をより面白いものに 再定義してやることができる。スティーブ・ジョブスはこの点が特に長けている。 高いスタンダードを持つというのもその一部だ。Macの前にも、 たくさんの、小さく安いコンピュータがあった。彼は問題をこう 再定義したんだ:美しいコンピュータを作ろう。それこそが、 他のどんな鼻先のニンジンよりも、開発者達を駆り立てたんじゃないだろうか。
そして、彼らは確かにそれに成功した。Macが初めて現れた時、あなたは それが良いものだと知るのに、電源を入れてみる必要さえ無かったはずだ。 ケースを見るだけでわかった。何週間か前に、私はケンブリッジの道端を歩いていて、 誰かの捨てたごみの中にMacのキャリングケースみたいなものを見つけた。 中を覗いて見たら、果たせるかな、Mac SEが鎮座していた。 私はそれを抱えて帰って、電源を入れてブートしてみた。Macintoshの笑った顔が 現れて、ファインダーが現れた。ああ、なんてシンプルなんだ。 これはまさに…Googleのようだ。
ハッカーは高い基準を持っている人々と働きたがる。 それも、ただ正確にやるだけじゃ十分じゃない。 正しいことを主張しなければならない。 このことは通常、ハッカーと働く人自身もハッカーでなければならないということを意味する。 プログラマをどう管理すべきかを論じた記事をしばしば目にしてきた。 実際は、そういう記事は2つしか要らないはずだ。一つは、あなた自身がプログラマで ある場合にハッカーたちをどう扱うかというもの。そしてもう一つは、 あなたがそうではない場合のもの。そして、2番目の記事は一言に要約できるだろう: 「あきらめろ」。
毎日の管理はさほど問題ではない。本当に優秀なハッカーは自己管理が ちゃんとできるからだ。本当の問題は、もしあなたがハッカーでなかったとしたら、 誰が良いハッカーかを知ることが出来ないということだ。 似たような問題は、アメリカの車が非常に醜いことの理由にもある。 私はこれをデザインのパラドックスと呼んでいる。 素晴らしいデザイナーを雇ってデザインさせれば、素晴らしい製品が出来ると 思うかもしれない。でも、自分自身が良いセンスを 持っていなかったら、 どうやって素晴らしいデザイナーを見つけられる? 定義により、デザイナーの 作品をあなたが見ても分からないよね。デザイナーの取った賞だとか これまでの経歴を見てもあまり役に立たない。デザインの世界では、 他の多くの分野でも同じだが、賞や地位というものは流行と評判によるものが 非常に大きく、実際の能力は遥かに離れた3番目の影響力しか持たないからだ。 この問題を避ける方法はない。美とは何かを知らずして、 美しいものをつくり出すプロセスを管理することは出来ないんだ。 アメリカの車が醜いのは、アメリカの車会社がセンスの無い人々によって 運営されているからだ。
この国の多くの人々は、センスというものを何かつかみどころのないものか、 取るに足らないものと考えている。どちらも間違いだ。デザインを進めるには、 マネージャーは会社の製品についてもっとも五月蝿いユーザでなければならない。 そしてあなたが、スティーブ・ジョブスのように本当に良いセンスを持っている なら、優秀な人々が働きたがるような問題を見つけることで自分自身を 満足させることができるだろう。
どんな問題がつまらないかを言うのはとても簡単だ。 少数の大きく明確に定義された問題を解く替わりに、細かくいやらしい問題を たくさん解かねばならないようなものだ。最悪のプロジェクトのひとつは、 バグだらけのソフトウェアのインタフェースを書くことだ。あるいはまた、 それぞれの顧客の複雑で定義が曖昧な要求に応じてカスタマイズを行う ようなものもそうだ。ハッカーにとって、この手のプロジェクトは 死ぬまで少しづつ切り刻まれるようなものだ。
こういう嫌な細かい問題の何が嫌らしいかというと、 それから学べることが何もないということだ。 コンパイラを書くのは面白い。それによって、コンパイラとは何かが学べるからだ。 バグだらけのソフトのインタフェースを書くことからは何も学べない。 バグはランダムだからだ。ハッカーは単に気難しいから嫌な細かい問題を避けるんじゃない。 それは、むしろ自己防衛の問題なんだ。嫌な細かい問題に関わっていると、バカになる。 良いハッカーがそれを避けるのは、 ファッションモデルがチーズバーガーを避けるのと同じ理由だ。
(これは人々が「人生の意味」について語る時にまさに 頭にあることだと私は思う。表面的には、人生の意味ってのは妙な考えだ。 人生は数式じゃない。それが意味を持つとは? 実際は、人生は、意味にとても良く似たある種の質を持っている。 コンパイラのプロジェクトでは、たくさんの問題を解くことになるが、 それらの問題は一つのパターンを形作ってゆく。信号のように。 一方、解くべき問題がランダムであれば、それはノイズのように知覚されるだろう)。
いくつかの問題は本質的にそういう性質を持っている。そして需要と供給の 関係から、そういう問題に対しては高い報酬が支払われる。 だから、偉大なハッカーをひどい問題に取り組ませる方法を見つけた 会社は大成功するだろう。どうしたらそれが可能だろうか。
そういう状況が起きる場所のひとつはベンチャー企業だ。 私達が立ち上げたベンチャーでは、ロバート・モリスがシステム管理者をやっていた。 これはまるで、お誕生会のバックバンドにローリングストーンズを 呼ぶみたいなものだ[訳註2]。普通はそんなことのために 雇える才能ではない。ただ、人は自分が設立した会社のためなら、 どんな苦労も惜しまないものだ [4]。
大企業ではこの問題を、会社を分割することで解いている。 分離した研究開発部門を作って優秀な人々をそこに集め、彼らが顧客の 嫌な細かい問題に直接煩わされずに済むようにする[5]。 このモデルでは、研究部門は鉱山のようなものだ。そこは新しいアイディアを 産出する。会社の残りの部分は、それを使って何かできるかもしれない。
ここまで極端にやらなくても良いかもしれない。 ボトムアッププログラミングは 会社を分割する別の方法に使える。 優秀な人々に道具を作らせるんだ。会社がxをするソフトウェアを書くとすると、 まずひとつのグループにその種のソフトウェアを書くのに適した道具を 作らせ、別のグループにそれを使ってアプリケーションを作らせるんだ。 こうすれば、優秀な人々が99%のコードを書きつつ、伝統的な研究部門と同じように 彼らを守っておくことができる。道具の製作者にもユーザーがいるが、 それはその会社の開発者たちだけ、ということになる[6]。
マイクロソフトがこの方法をとれば、彼らのソフトウェアは こんなにセキュリティホールだらけにはならないだろう。実際の アプリケーションを開発している、特別に優秀でない人々は、メモリを アロケートするといった低レベルの階層に触らなくて済むだろうからだ。 WordをCで直接書くかわりに、彼らはWord記述言語をレゴブロックのように 組み合わせてゆくことになるだろう (技術用語では、Duploと呼ばれているものだと思う)。
興味深い問題のほかに、良いハッカーが好むのは、他の良いハッカーだ。 素晴らしいハッカーは寄り集まる傾向がある。ときには信じられないほど---例えば Xerox Parcのように。だから、ハッカーにとって良い環境を作ったとしても、 その良さに比例して良いハッカーが集まって来るわけではない。 寄り集まる傾向のために、むしろ環境の良さの二乗に比例するだろう。 これはすなわち、勝者が総取りしてしまうということだ。 どの時点でも、おそらくハッカーが是非働きたいと思うような場所はせいぜい 10か20くらいしかない。それ以外の場所では、素晴らしいハッカーは少ないという のではなく、全くいないんだ。
素晴らしいハッカーを雇っておくことだけでは、会社の成功には十分ではない。 GoogleとITAでは---これは現在のホットスポットのうちの2つだが---うまくいったが、 Thinking Machines社やXeroxではうまくいかなかった。Sunはしばらくの間 うまくやっていたが、彼らのビジネスモデルはいまや下降するエレベータだ。 そのような状況では、最も素晴らしいハッカーであっても会社を救うことはできないだろう。
けれども、他の条件が全て同じなら、偉大なハッカーを引き付ける会社には 巨大なアドバンテージがある。これに同意しない人々もいるだろう。 私達が1990年代にベンチャーファームから資金集めをしていた時に、 いくつかのファームはこう言ったものだ。ソフトウェア会社は 凄いソフトを書くことで勝つんじゃない、ブランドと独占チャネルと、 うまい取り引きで勝つんだ、とね。
彼らは本当にそれを信じているようだった。 その理由を私はわかると思う。ベンチャーキャピタルの多くが、少なくとも 無意識のうちに求めているのは、次のマイクロソフトなのだろう。 マイクロソフトがモデルなら、もちろんすごいソフトを書いて勝とうなんて 考えている会社を探しちゃだめだ。でも、次のマイクロソフトを 探すベンチャーキャピタルは間違っているんだ。あるベンチャーが次のマイクロソフトに なるためには、ちょうどいい時期に沈んで、次のIBMになってくれる会社が 不可欠だからだ。
マイクロソフトの文化は、その幸運なチャンスをものにしたところから全て始まって いるから、それをモデルにするのは間違っている。マイクロソフトは データ上の特異点なんだ。それを捨ててしまえば、良い製品を作っているところが マーケットで勝っているのを確かに見ることができるだろう。 ベンチャーキャピタルが探すべきなのは、次のAppleであり、次のGoogleであるべきなんだ。
ビル・ゲイツはこのことを知っていると思う。 彼がGoogleを恐れるのは、彼らのブランドではない。Googleの方に 良いハッカーがいるという事実だ[7]。
では、誰が偉大なハッカーなんだろうか。 そういう人と出会った時に、そのことをどうやって知ればいいのだろう。 実は、これは難しい。ハッカーでさえもわからない。 私は、友人のトレバー・ブラックウェルが偉大なハッカーであるということを ほぼ確信している。 彼が自分でセグウェイを作ってしまった 話を、 あなたはスラッシュドットで読んだことがあるかもしれない。そのプロジェクトの 凄いところは、彼は全てのソフトウェアを一日で書いてしまったということだ (ちなみに彼はPythonを使っていた)。トレバーにとっては、それは ごく普通のことだった。でも私は彼と初めて会った時、彼のことを まぬけだと思っていたんだ。彼はロバート・モリスのオフィスに突っ立ってて 何やらごにょごにょと話していて、私はトレバーの後ろに立って、 手ぶり見ぶりでロバートにこのまぬけをさっさと追い出してランチに行こうぜ、 と伝えようとしていた。ロバートも最初はトレバーのことを 誤解したと言っている。ロバートが最初に彼と会った時、 トレバーは、いつもどこへでも持ち歩いているカードに、 彼の人生の全ての面を書き出す、という作業に没頭しはじめたところだった。 彼はまたカナダからやってきたばかりで、強いカナダなまりで、髪を長く伸ばしていた。
ハッカーが、社交に疎いという評判にもかかわらず、自分を賢く見せようと 努力するという事実が、さらに問題を複雑にする。私は大学院にいた頃、 よくMIT AIラボに遊びに行っていたのだが、最初はちょっとおっかなかったものだ。 なにしろ皆おそろしいほど速く喋っていたからだ。でもしばらくしたら、 私も速く喋るトリックを身につけることができた。 速く考える必要はないんだ。ただ何を言うにも2倍の言葉を使えばいい。
これだけのノイズにシグナルが埋もれていると、誰かに出会った時に それが良いハッカーかどうかを知るのはとても難しい。私は、今でさえ、 わからない。履歴書を見たって役に立たない。ハッカーを判断する唯一の 方法は、何かのプロジェクトで一緒に仕事をしてみることしかないような気がする。
それが、ハイテク企業の集合が大学の周辺にしか現れない理由かもしれない。 教授がたくさんいることよりも、学生がたくさんいることが重要な要素なんだ。 ベンチャーが大学の周辺で育つのは、大学が才能ある若い人々を集めて 同じプロジェクトで作業させるからだ。優秀な人間は他の優秀な人間から学び、 一緒に自分達の新しいプロジェクトを立ち上げる。
一緒に仕事をしない限り偉大なハッカーかどうか分からない、ということは、 ハッカー自身が自分がどれだけ優秀かわからない、ということにもなる。 これはどの分野でも、ある程度までは真実だ。何かについて非常に優秀な人は、 自分の素晴らしさをそれほど信じていなくて、他の人がなんで同じように出来ない のか不思議に思うものだ。私が会ったことのある、偉大な仕事を為した人は、 ほとんどの場合、自分が偉大な仕事をしているとは思っていなかった。 彼らはたいていいつも自分のことを、まぬけで怠け者で、頭がまともに動くのは 10日に1日しかなくて、きっと世間がそれにいつかは気づくだろう、なんて思っている。
だがハッカーの場合、どれだけ優秀かを知るのはとりわけ難しい。 作品を比較するのが難しいからだ。他の分野ではそれが簡単なことが多い。 100メートル走なら、10秒のうちに誰が一番速いかわかる。 数学のような世界でも、どの問題が解くのが難しく、どういう解が良い解か ということについて一般的な合意があるようだ。でもハッキングは、 小説を書くみたいなものだ。ふたつの小説のどちらが良い、なんて 誰が比較できるだろう。少なくとも著者には無理だ。
ハッカーの間では、少なくとも、他のハッカーがそれを知ることができる。 小説家と違って、ハッカーはプロジェクトで協力するからだ。 ネット越しに誰かにいくつかの難しい問題を投げてみれば、 彼らはたちまち別の問題を投げ返してくるだろう。 ハッカーは、しかし、自分自身が仕事をしているところを見ることはできない。 だから、偉大なハッカーに、自分はどれくらいすごいと思うかと聞いたら、 まずこういう答えが返って来るだろう。わからないよ、と。 謙遜しているんじゃない。本当にわからないんだ。
そして、他のハッカーにしたって、自分が直接一緒に仕事をした相手じゃないと わからない。このことから、ハッカー界には奇妙な状況が生じる。 我々のヒーローは誰なのか、誰にもわからないんだ。 有名になったハッカーというのは、偶然の宣伝の事故みたいなもののせいで 有名になることが多いようだ。時々、素晴らしいハッカーの例を挙げる必要に せまられることがあるが、私は誰を挙げたらいいのか、わかったためしがない。 すぐに頭に浮かぶのは、個人的に直接知っている人達だが、なんだか それを例として挙げるのも不遜なような気がする。それよりは、 リチャード・ストールマンだとか、リーヌス・トーバルスだとか、 アラン・ケイだとか、有名人を挙げるほうが良さそうな気がする。 でも、彼らが本当に素晴らしいハッカーなのか、正直なところ私には知る術がない。 一緒に何か仕事をしたことがないからだ。
ハッカー界のマイケル・ジョーダンがいるとしたら、それは彼自身も含めて、 誰にも知られることがないだろう。
最後に、ハッカーが皆考えている質問を扱おう。 どうやったら素晴らしいハッカーになれる? 誰かを素晴らしいハッカーにする方法ってのがあるのかどうか、私は知らない。 けれど、これをしていれば自分はまぬけになるだろう、ということは確かにある。 自分をまぬけにする方法があるなら、自分を賢くする方法もあるかもしれない。
良いハッカーになる鍵は、たぶん、自分がやりたいことをやることだ。 私が知っている素晴らしいハッカーを考えてみると、彼らに共通することの 一つは、彼らが自分から望まないことをやらせるのは極めて難しいだろう ということだ。これが原因なのか、結果なのかは定かではない。もしかすると両方かも しれない。
何かをうまくやるためには、それを愛していなければならない。 ハッキングがあなたがやりたくてたまらないことである限りは、 それがうまくできるようになる可能性が高いだろう。14才の時に感じた、 プログラミングに対するセンス・オブ・ワンダーを忘れないようにしよう。 今の仕事で脳味噌が腐っていってるんじゃないかと心配しているとしたら、 たぶん腐っているよ。
最高のハッカーはもちろん賢いけれど、それは他のいろいろな分野でも 同じだ。ハッカーについてだけ特有な資質というのはあるだろうか。 何人かの友人に尋ねてみた。最初にあがって来る答えは、好奇心だった。 賢い人はみな、好奇心が強いと私は思っている。好奇心は単に知識の 一階微分だからだ。それでも、ハッカーはとりわけ好奇心が強いようだ。 特に、ものが動くしくみに関しては。 ある意味それは当然かもしれない。プログラムというもの自体、 実質的に、ものが動くしくみの巨大な記述だからだ。
友人の幾人かは、ハッカーの集中力に関して言及した。 一人の言葉を借りれば、「他の全てのことを頭から追い出せる」能力だ。 私も確かにそれには気づいていた。また、何人かのハッカーが、 ビールを半杯でも飲んだら全くプログラムできなくなると言っているのも 聞いたことがある。ハッキングは、ある種の特殊な集中能力を必要とする のかもしれない。素晴らしいハッカーはたぶん、非常に大きなコンテキストを 頭の中にロードすることが出来て、したがってコードを一行眺めている時にも、 その行だけでなくそれを取り巻くプログラム全てを見ているのかもしれない。 ジョン・マクフィーはビル・ブラッドレイのバスケットボール選手としての成功は、 彼の並外れた周辺視に依っていたと書いていた。通常、完全な視力は、 だいたい47度の垂直周辺視角を持っている。ビル・ブラッドレイは70度の視角を 持っていた。彼は床を見つめていながら、バスケットを観ることが出来たのだ。 素晴らしいハッカーは、そのような生まれつきの能力を持っているのかもしれない。 (私は密度の高い言語を使うことでずるをしている。 それは実質的にコートを狭める効果を持っているからだ)。
このことは、仕切りのブースに対する態度の違いを説明できるかもしれない。 オフィスのデザインをする人は、邪魔されたら台無しになるような集中をしないから、 仕切りブースで仕事をするのがハッカーにとっては脳味噌をミキサーにかけられる ように感じられるなんてことが想像もできないんだ。 (一方で、ビルは、彼が自閉症だという噂が本当なら、このことを痛いほど わかっているだろう)。
素晴らしいハッカーと、一般的に賢い人々との間の違いとして 私が気づいたのは、ハッカーはより「政治的に正しく」ないということだ。 良いハッカーの間での、秘密の握手みたいなものがあるくらいだ。 ハッカー同士が十分に親しくなると、一般の人が聞いたら唖然としすぎて 死んでしまうくらい恐ろしいことを平気で言い出し始めるのがそれだ。 そして、政治的に正しくないことがプログラミングにおいて有用な資質である ことも私にはわかる。プログラムというものは極めて複雑なもので、 しかも少なくとも良いプログラマの手にあっては、極めて流動的なものだ。 そんな状況では、前提を常に疑う習慣は役に立つ。
これらの資質を育てることができるだろうか。私にはわからない。 でも、少なくとも、それらを抑え付けないようにすることはできるだろう。 だから、私に言える一番のレシピはこうだ。 自分を素晴らしいハッカーにすることが出来るとしたら、 その方法とは、自分自身に対して次の契約を結ぶことだ: 以降、退屈なプロジェクトの仕事は一切しなくて良い(家族が餓死しそうでない限りは)、 そのかわりに、絶対に中途半端な仕事は受けない。 私が知っている全ての素晴らしきハッカー達は、皆その契約を結んだように 思える。もっとも彼らにとっては、それはわざわざ選ぶようなことではなかっただろうけれど。
公平のために記しておくと、IBMのハードウェアは素晴らしい。 私もこの原稿をIBMのラップトップで書いている。
Googleは、Javaプログラミングの求人広告を出すとき、 賢明にもPythonの経験を要求している。
そして、確かに彼らは亡びる運命であった。数ヵ月後に彼らは会社を たたんだのだ。
アインシュタインは、一時期、冷蔵庫を設計する仕事をしていたことがあった。 (彼は資産を持っていたのにだ)。
コンピュータの世界では何をもって研究とするかをはっきり言うのは 難しいが、一次近似としては、ユーザのいないソフトを書くことだと言える。
最高のハッカーが研究部門で働きたがる理由が、論文を出版できるからという ことだとは思えない。私が思うに、それは多分、 Word 13.27の韓国語バージョンとおしゃべりなクリップを統合するために プロダクトマネージャと3時間にわたるミーティングをしなくてすむからだろう。
建築業界でも、似たようなことが長い間起きていた。 200年程前は、家を建てるとなったら、その地域の業者が何から何まで 全てを作っていたものだ。だが次第に、業者は他の誰かによって設計され製造された 部品を組み立てるように変わってきた。この傾向は、 ちょうどデスクトップパブリッシングの到来と同様に、 人々にひどいものを作る実験を行う自由を与えたが、確かに効率は良い方法だ。
GoogleはマイクロソフトにとってNetscapeよりも遥かに危険だろう。 おそらく、いままでに存在したどの会社よりも脅威なのではないか。 少なくとも、Googleは戦う気でいる。彼らの求人広告ページに、 彼ら自身の「コア・バリュー」として、「邪悪にはならない(Don't be evil)」 という標語が掲げてある。大豆油とか切削工具を売っている会社がそう 言ったとしたら、単に変わった会社でしかないだろう。しかし、 コンピュータの業界にいる人間なら誰でも、それが誰への宣戦布告なのか、 たちどころに理解できると思う。
この講演の草稿に目を通してくれたJessica Livingston、Robert Morris、Sarah Harlin に感謝します。
"Hackers and Painters" 収録の、"Mind the Gap" のこと。 なお、書籍版"Hackers and Painters"の邦訳はオーム社より本年後半に刊行予定。
お誕生会:原文ではbar mitzvah。ユダヤ教で、子供は13になった時に大人に なったものとみなされること。その際にお祝いをするのが習慣になっている。 ここでは状況と才能の対比がポイントなので、身近なイベントに置き換えてみた。