優れたハッカーたち
Original2004年7月
(このエッセイは、Oscon 2004での講演から抜粋したものです。)
数か月前に新しい 本 を出版しました。レビューを読むたびに 「挑発的」や「物議を醸す」といった言葉が目につきます。 「ばかげている」という声も耳にすることは言うまでもありません。
私はこの本を物議を醸すために書いたわけではありません。効率的に書こうとしたのです。すでに知っていることをわざわざ説明して、読者の時間を無駄にしたくありませんでした。差分だけを伝えれば、より効率的です。しかし、そうすると、当然ながら、人々を不安にさせるような本になるでしょう。
エジソンたち
どのアイデアが最も物議を醸すかについては、議論の余地はありません。それは、富の格差が私たちが考えているほど大きな問題ではないかもしれないという主張です。
私はこの本の中で、富の格差そのものが良いことだとは書いていません。私は、ある状況では、富の格差は良いことの兆候である可能性があると述べています。頭痛は良いことではありませんが、良いことの兆候である可能性があります。たとえば、頭を打った後に意識を取り戻しているという兆候です。
富の格差は、生産性の格差の兆候である可能性があります。(1人だけの社会では、生産性は同じです。)そして、それはほぼ間違いなく良いことです。もし、あなたの社会に生産性の格差がなければ、それはすべての人がトーマス・エジソンであるからではありません。おそらく、トーマス・エジソンがいないからです。
低技術社会では、生産性の格差はあまり見られません。もし、火を起こすための棒を集めている遊牧民の部族がいるとしたら、最も優れた棒集め人は、最も劣った棒集め人よりもどれほど生産的でしょうか?2倍でしょうか?しかし、人々にコンピュータのような複雑な道具を与えると、その道具を使ってできることの格差は途方もないものになります。
これは新しいアイデアではありません。フレッド・ブルックスは1974年にこのことについて書いており、彼が引用した研究は1968年に発表されました。しかし、私は彼がプログラマー間の格差を過小評価していたと思います。彼はコード行数で生産性について書いていました。最も優れたプログラマーは、与えられた問題を10分の1の時間で解決することができます。しかし、問題が与えられていない場合はどうでしょうか?プログラミングでは、多くの分野と同様に、難しいのは問題を解決することではなく、どのような問題を解決するかを決めることです。想像力は測定するのが難しいですが、実際には、コード行数で測定されるような生産性を支配しています。
どの分野でも生産性は異なりますが、それほど大きく異なる分野はほとんどありません。プログラマー間の格差は非常に大きいため、種類の違いになります。私は、これはプログラミングに固有のものだとは思っていません。どの分野でも、テクノロジーは生産性の違いを拡大します。プログラミングで起こっていることは、単に私たちが多くの技術的なレバレッジを持っているだけだと思います。しかし、どの分野でもレバーは長くなっているので、私たちが見る格差は、時間が経つにつれてますます多くの分野で見られるようになるでしょう。そして、企業や国の成功は、その格差に対処する方法にますます依存するようになるでしょう。
もし、生産性の格差がテクノロジーとともに増加するならば、最も生産的な個人の貢献は、単に不均衡に大きくなるだけでなく、実際には時間の経過とともに大きくなるでしょう。グループの出力の90%がメンバーの1%によって生み出されるようになったとき、何か(バイキングの襲撃であろうと中央計画であろうと)によって彼らの生産性が平均にまで低下すると、大きな損失を被ります。
彼らの能力を最大限に引き出すためには、これらの特に生産的な人々を理解する必要があります。彼らを動機付けるものは何でしょうか?彼らは仕事をするために何が必要でしょうか?どのようにして彼らを認識できるでしょうか?どのようにして彼らを雇うことができるでしょうか?そしてもちろん、どのようにして彼らの一人になることができるのでしょうか?
お金以上のもの
私は、ほんの一握りのスーパーハッカーを知っています。そこで、私は彼らに共通するものを考えてみました。彼らの特徴は、おそらく、プログラミングが本当に好きだということです。普通のプログラマーは、生活費を稼ぐためにコードを書きます。優れたハッカーは、それを楽しみとして考えており、人々がその対価を支払ってくれることに喜びを感じています。
優れたプログラマーは、お金に無関心であると言われることがあります。これは、完全に正しいとは言えません。彼らが本当に気にしているのは、興味深い仕事をすることだけです。しかし、十分なお金を稼げば、好きなことを好きなだけすることができます。そのため、ハッカーは、莫大な金額を稼ぐという考えに惹きつけられます。しかし、毎日仕事に行く必要がある限り、彼らはそこで何をするかよりも、その対価としていくらもらえるかをより気にします。
経済的には、これは非常に重要な事実です。なぜなら、優れたハッカーに、彼らの価値に見合った金額を支払う必要がないからです。優れたプログラマーは、普通のプログラマーの10倍、あるいは100倍の生産性を持つかもしれませんが、3倍の給料をもらえれば幸運だと考えるでしょう。後で説明しますが、これは、優れたハッカーが自分の能力に気づいていないため、ある程度はそうなのです。しかし、それはまた、お金が彼らが欲しい主なものではないからです。
ハッカーは何が欲しいのでしょうか?すべての職人と同じように、ハッカーは良い道具が好きです。実際、それは控えめな表現です。優れたハッカーは、悪い道具を使うことを耐えられません。彼らは、間違ったインフラストラクチャでプロジェクトに取り組むことを拒否するでしょう。
私がかつて働いていたスタートアップでは、掲示板にIBMの広告が貼られていました。それはAS400の写真で、見出しには、「ハッカーはこれを嫌う」と書いてありました。[1]
プロジェクトにどのようなインフラストラクチャを使用するかを決めることは、単なる技術的な決定ではありません。それはまた、社会的な決定であり、この2つのうち、より重要なのは後者かもしれません。たとえば、あなたの会社がソフトウェアを開発したいと考えている場合、Javaで開発することは賢明な選択のように思えるかもしれません。しかし、言語を選ぶということは、コミュニティを選ぶということでもあります。Javaプロジェクトで雇うことができるプログラマーは、Pythonで書かれたプロジェクトで雇うことができるプログラマーほど 賢く はありません。 そして、あなたのハッカーの質は、あなたが選択する言語よりも重要である可能性があります。しかし、率直に言って、優れたハッカーがJavaよりもPythonを好むという事実は、それらの言語の相対的なメリットについて何かを語っています。
ビジネスマンは、言語を標準と見なしているため、最も人気のある言語を好みます。彼らは、会社をベータマックスに賭けることは望んでいません。しかし、言語の重要な点は、単なる標準ではないということです。もし、ネットワークを介してビットを移動する必要があるなら、TCP/IPを使用してください。しかし、プログラミング言語は単なるフォーマットではありません。プログラミング言語は、表現の媒体です。
私は、JavaがCobolを抜いて最も人気のある言語になったと読んだことがあります。標準としては、これ以上望むものはありません。しかし、表現の媒体としては、もっと良いものがあります。私が知っている優れたプログラマーの中で、Javaで喜んでプログラミングする人は、たった一人しかいません。そして、私が知っている優れたプログラマーの中で、SunやJavaで働いていない人は、一人もいません。
優れたハッカーは、一般的にオープンソースソフトウェアの使用を主張します。それは、オープンソースソフトウェアが優れているからだけでなく、彼らにさらなる制御を与えるからです。優れたハッカーは、制御を主張します。これが、彼らを優れたハッカーたらしめている理由の一部です。何かが壊れたとき、彼らはそれを修正する必要があります。あなたは、彼らがあなたのために書いているソフトウェアについて、このように感じてほしいのです。彼らがオペレーティングシステムについても、同じように感じても驚かないでください。
数年前、ベンチャーキャピタリストの友人が、彼が関わっている新しいスタートアップについて話してくれました。それは有望に見えました。しかし、次に彼と話したとき、彼は、彼らはソフトウェアをWindows NT上に構築することを決めたと話し、彼らの最高技術責任者として、非常に経験豊富なNT開発者を雇ったばかりだと語りました。これを聞いたとき、私は、この会社は終わりだと思いました。第一に、CTOは一流のハッカーではあり得ません。なぜなら、著名なNT開発者になるためには、NTを自発的に、何度も使用しなければならず、優れたハッカーがそれをやっていることは想像できないからです。第二に、たとえ彼が優秀であったとしても、プロジェクトがNT上に構築されなければならない場合、彼のために働く優秀な人を雇うのは難しいでしょう。[2]
最後のフロンティア
ソフトウェアに次いで、ハッカーにとって最も重要な道具は、おそらく彼のオフィスでしょう。大企業は、オフィススペースの役割は、地位を表すことだと考えています。しかし、ハッカーは、オフィスをそれ以上のものとして使用しています。彼らは、オフィスを思考するための場所として使用しています。そして、あなたがテクノロジー企業である場合、彼らの思考はあなたの製品です。そのため、ハッカーを騒がしく、気を散らすような環境で働かせることは、煙が充満した空気の中でペイント工場を運営するようなものです。
漫画の「Dilbert」は、キュービクルについて多くのことを語っていますが、それはもっともなことです。私が知っているハッカーは、皆、キュービクルを嫌っています。邪魔される可能性があるだけで、ハッカーは難しい問題に取り組むことができなくなります。キュービクルのあるオフィスで本当に仕事をするには、2つの選択肢があります。自宅で仕事をするか、誰もいない早朝や深夜、または週末にオフィスに出勤することです。企業は、これが何かが壊れている兆候であることに気づいていないのでしょうか?オフィス環境は、仕事を助けるものであり、仕事を続けるにもかかわらず存在するものではありません。
シスコのような企業は、CEOでさえ、全員がキュービクルを持っていることを誇りに思っています。しかし、彼らは自分が思っているほど進歩していません。明らかに、彼らはまだオフィススペースを地位の象徴と見なしています。また、シスコは、社内で製品開発をほとんど行っていないことで有名です。彼らは、新しいテクノロジーを、それを生み出したスタートアップを買収することで手に入れています。そこでは、ハッカーは静かな場所で仕事をすることができたはずです。
ハッカーが必要とするものを理解している大企業の1つは、マイクロソフトです。私はかつて、マイクロソフトの採用広告で、大きなドアの写真を見たことがあります。私たちのために働いてください、という前提で、私たちはあなたに、実際に仕事ができる場所を提供します。そして、マイクロソフトは、大企業の中で、社内でソフトウェアを開発できるという点で、注目すべきです。うまくいっているとは言えませんが、十分にうまくいっています。
企業がハッカーの生産性を高めたいのであれば、彼らが自宅で何をしているかを見るべきです。自宅では、ハッカーは自分の好きなようにものを配置して、最大限の成果を上げることができます。そして、自宅で仕事をする場合、ハッカーは騒がしく、開かれた空間で仕事をするのではなく、ドアのある部屋で仕事をするのです。彼らは、人々がいて、何かをじっくり考える必要があるときに歩くことができる、居心地の良い、近所にある場所で仕事をするのです。ガラス張りの箱で、広大な駐車場の中に置かれているような場所ではありません。彼らは、疲れたときに昼寝をすることができるソファを持っています。デスクに座って、意識不明の状態になり、仕事をしているふりをするのではなく。毎晩、ハッキングのピーク時に、掃除機を持った人々が騒音を立てて通り過ぎることはありません。会議や、天に祈るような企業の研修やチームビルディングの演習はありません。そして、あなたが彼らのコンピュータで何をしているかを見ると、それは私が前に道具について言ったことを裏付けるでしょう。彼らは仕事ではJavaやWindowsを使用しなければならないかもしれませんが、自宅では、自分で選択できるため、PerlやLinuxを使用している可能性が高いでしょう。
実際、CobolやJavaが最も人気のある言語であるという統計は、誤解を招く可能性があります。私たちが、どの道具が最適なのかを知りたいのであれば、注目すべきは、ハッカーが自由に選択できる場合、つまり、自分のプロジェクトで選択する場合に、彼らが何を選択するかです。その質問をすると、オープンソースのオペレーティングシステムはすでに支配的な市場シェアを持っており、最も人気のある言語は、おそらくPerlであることがわかります。
興味深い
優れた道具に加えて、ハッカーは興味深いプロジェクトを望んでいます。どのようなプロジェクトが興味深いのでしょうか?まあ、明らかに、ステルス機や特殊効果ソフトウェアのような、明らかにセクシーなアプリケーションは、興味深いものになるでしょう。しかし、どんなアプリケーションでも、新しい技術的な課題を提示すれば、興味深いものになる可能性があります。そのため、ハッカーがどのような問題を好むかを予測するのは難しいです。なぜなら、ある問題が興味深いものになるのは、その問題に取り組んでいる人々が新しい種類の解決策を発見したときだけだからです。ITA(Orbitzの内部ソフトウェアを開発した会社)が設立される前は、航空運賃検索に取り組んでいた人々は、それが考えられる限り最も退屈なアプリケーションの1つだと考えていたでしょう。しかし、ITAは、 再定義 することで、その問題をより野心的なものにしました。
Googleでも同じことが起こったと思います。Googleが設立されたとき、いわゆるポータルサイトの間では、検索は退屈で重要ではないという常識がありました。しかし、Googleの連中は、検索が退屈だとは思っておらず、だからこそ、彼らは検索をうまくやっているのです。
これは、マネージャーが違いを生み出すことができる分野です。親が子供に、「10分間で部屋を全部片付けられるか賭けだ」と言うように、優れたマネージャーは、問題をより興味深いものとして再定義することができることがあります。スティーブ・ジョブズは、特にこの点で優れているように思えます。それは、彼が単に高い基準を持っているためです。Macが登場する前に、小さく安価なコンピュータはたくさんありました。彼は、問題を「美しいコンピュータを作る」という問題として再定義しました。そして、それは、どんなニンジンやムチよりも、開発者を駆り立てたでしょう。
彼らは確かに成果を上げました。Macが初めて登場したとき、電源を入れるまでもなく、それが良いものであることはわかりました。ケースを見ればわかりました。数週間前、私はケンブリッジの街を歩いていて、誰かのゴミ箱に、Macのキャリングケースと思われるものを見つけました。中を見てみると、Mac SEが入っていました。私はそれを持ち帰って、電源を入れたところ、起動しました。幸せなマッキントッシュの顔、そしてファインダー。なんてシンプルなんだ。まるで...Googleみたいだ。
ハッカーは、高い基準を持つ人のために働きたいと思っています。しかし、単に厳格であるだけでは十分ではありません。あなたは、正しいことを主張しなければなりません。それは、通常、あなたが自分自身もハッカーである必要があることを意味します。私は、プログラマーの管理方法について書かれた記事を時々見かけます。実際には、2つの記事があるべきです。1つは、あなたが自分自身もプログラマーである場合の対処法について、もう1つは、あなたがプログラマーではない場合の対処法についてです。そして、2番目の記事は、おそらく2つの言葉に要約できるでしょう。諦める。
問題は、日々の管理ではありません。本当に優れたハッカーは、実質的に自己管理できます。問題は、あなたがハッカーではない場合、誰が優れたハッカーなのかを判断できないということです。アメリカ車の醜さが説明できるのも、同じような問題です。私はそれをデザインのパラドックスと呼んでいます。あなたは、優れたデザイナーを雇って製品をデザインさせることで、製品を美しくすることができると考えるかもしれません。しかし、あなたが自分自身で良いセンス を持っていない場合、どのようにして優れたデザイナーを認識できるでしょうか?定義上、あなたは彼のポートフォリオから判断することはできません。そして、彼が受賞した賞や経験した仕事から判断することもできません。なぜなら、デザインでは、多くの分野と同様に、それらはファッションや社交によって推進され、実際の能力は遠くの3番手だからです。それを回避する方法はありません。美しいものを生み出すプロセスを管理するには、何が美しいのかを知っていなければなりません。アメリカ車は、アメリカ車の会社がセンスの悪い人々に経営されているために、醜いのです。
この国では、多くの人がセンスを、捉えどころのないもの、あるいは取るに足りないものと考えています。それはどちらも違います。デザインを推進するためには、マネージャーは、会社の製品の最も厳しいユーザーでなければなりません。そして、あなたが本当に良いセンスを持っているなら、あなたは、スティーブ・ジョブズのように、あなたを満足させることを、優れた人々が喜んで取り組むような問題にすることができます。
厄介な小さな問題
どのような問題が興味深いものではないかを言うのは、非常に簡単です。それは、いくつかの大きく、明確な問題を解決するのではなく、多くの厄介な小さな問題を解決しなければならない問題です。最悪のプロジェクトの1つは、バグだらけのソフトウェアへのインターフェースを書くことです。もう1つは、個々のクライアントの複雑で定義の曖昧なニーズに合わせて、何かをカスタマイズしなければならない場合です。ハッカーにとって、このようなプロジェクトは、千の切り傷による死です。
厄介な小さな問題の特徴は、それらから何も学べないことです。コンパイラを書くことは、コンパイラが何かを学ぶので、興味深いことです。しかし、バグだらけのソフトウェアへのインターフェースを書くことは、何も教えてくれません。なぜなら、バグはランダムだからです。[3]そのため、優れたハッカーが厄介な小さな問題を避けるのは、単なる几帳面さだけではありません。それは、むしろ自己防衛の問題です。厄介な小さな問題に取り組むと、あなたは愚かになります。優れたハッカーは、モデルがチーズバーガーを避けるのと同じ理由で、それを避けます。
もちろん、一部の問題は、本質的にこのような性質を持っています。そして、需要と供給の関係から、それらは特に高い報酬を得ています。そのため、優れたハッカーに退屈な問題に取り組ませる方法を見つけた会社は、非常に成功するでしょう。どのようにすればよいのでしょうか?
これが起こる場所の1つは、スタートアップです。私たちのスタートアップでは、ロバート・モリスがシステム管理者として働いていました。それは、ローリング・ストーンズがバル・ミッツワーで演奏するようなものです。あなたは、そのような才能を雇うことはできません。しかし、人々は、自分たちが創設者である会社の仕事なら、どんな苦役でも喜んで行います。[4]
より大きな企業は、会社を分割することで、この問題を解決しています。彼らは、従業員が顧客の厄介な小さな問題に直接取り組む必要がない、独立した研究開発部門を設立することで、優秀な人材を雇っています。[5]このモデルでは、研究部門は鉱山のような役割を果たします。彼らは新しいアイデアを生み出します。もしかしたら、会社の他の部門がそれらを使用できるかもしれません。
あなたは、そこまで極端なことをする必要はありません。 ボトムアッププログラミング は、会社を分割する別の方法を提案しています。それは、優秀な人材をツールメーカーとして働かせることです。もし、あなたの会社がxを行うためのソフトウェアを作っているなら、そのタイプのソフトウェアを書くためのツールを構築するグループと、これらのツールを使ってアプリケーションを書くグループの2つに分けてください。このようにすれば、優秀な人材にコードの99%を書かせることができ、それでも、従来の研究部門にいるような、ユーザーからほぼ隔離された状態に保つことができます。ツールメーカーはユーザーを持つことになりますが、それは会社の開発者だけになります。[6]
もし、マイクロソフトがこのアプローチを採用していたら、彼らのソフトウェアはそれほど多くのセキュリティホールを抱えていなかったでしょう。なぜなら、実際のアプリケーションを書く、それほど賢くない人々は、メモリ割り当てのような低レベルの作業を行っていなかったからです。彼らは、Cで直接Wordを書くのではなく、Word言語の大きなレゴブロックを組み合わせていたでしょう。(技術用語では、デュプロだと思います。)
集積
興味深い問題に加えて、優れたハッカーが好きなのは、他の優れたハッカーです。優れたハッカーは、一緒に集まる傾向があります。時には、ゼロックス・パロアルト研究所のように、驚くほど集まります。そのため、あなたは、彼らにとってどれだけ良い環境を作っても、優れたハッカーを線形に比例して引き付けることはできません。集積する傾向は、環境の2乗に近いです。そのため、勝者総取りです。いつでも、ハッカーが最も働きたい場所は、約10〜20カ所しかありません。そして、あなたがそのうちの1つでなければ、あなたは単に優れたハッカーが少なくなるのではなく、ゼロになります。
優れたハッカーがいることは、それ自体では、会社を成功させるのに十分ではありません。それは、現在ホットスポットの2つであるGoogleやITAではうまくいっていますが、シンキング・マシーンズやゼロックスではうまくいきませんでした。Sunはしばらくの間、好調でしたが、彼らのビジネスモデルは下降エレベーターです。そのような状況では、たとえ最高のハッカーであっても、あなたを救うことはできません。
しかし、私は、他のすべての条件が同じであれば、優れたハッカーを引き付けることができる会社は、大きな優位性を持つと考えています。これには異議を唱える人もいるでしょう。1990年代にベンチャーキャピタルファンドを回っていたとき、何人かのVCが、ソフトウェア会社は、優れたソフトウェアを書くことで勝つのではなく、ブランド、チャネルの支配、適切な取引をすることで勝つと私たちに言いました。
彼らは本当にそう信じているようでした。そして、私はその理由がわかると思います。私は、多くのVCが、少なくとも無意識に、次のマイクロソフトを探していると思います。そして、もちろん、マイクロソフトがあなたのモデルであるなら、あなたは、優れたソフトウェアを書くことで勝つことを期待している会社を探すべきではありません。しかし、VCは、次のマイクロソフトを探すのは間違いです。なぜなら、他の会社が適切なタイミングで屈服して、次のIBMになる準備ができていない限り、スタートアップは次のマイクロソフトになることはできないからです。
マイクロソフトをモデルとして使用するのは間違いです。なぜなら、彼らの文化全体は、その1つの幸運な出来事から生まれているからです。マイクロソフトは、悪いデータポイントです。マイクロソフトを排除すると、良い製品は市場で勝つ傾向があることがわかります。VCが探すべきなのは、次のアップル、あるいは次のGoogleです。
私は、ビル・ゲイツもそれを知っていると思います。彼がGoogleについて心配しているのは、彼らのブランドの力ではなく、彼らがより優れたハッカーを持っているということです。[7]
認識
では、優れたハッカーとは誰でしょうか?どのようにして、優れたハッカーに出会ったとわかるのでしょうか?それは、非常に難しいことがわかりました。ハッカーでさえ、判断できません。私は、私の友人であるトレバー・ブラックウェルが、優れたハッカーであると確信しています。あなたは、彼が 自分のセグウェイ を作ったことをSlashdotで読んだかもしれません。このプロジェクトで注目すべき点は、彼がすべてのソフトウェアを1日で書いたことです(ちなみに、Pythonで)。
トレバーにとっては、それは当たり前のことです。しかし、私が彼に初めて会ったとき、私は彼が完全なバカだと思いました。彼は、ロバート・モリスのオフィスに立って、何かについて彼にまくし立てていました。そして、私は彼の後ろに立って、ロバートに、この狂人をオフィスから追い出して、ランチに行こうと、必死に合図していたのを覚えています。ロバートは、彼にもトレバーを最初に見誤ったと言っています。ロバートが彼に初めて会ったとき、トレバーは、人生のあらゆる側面についてすべてをインデックスカードに書き留めるという新しい計画を始めたばかりでした。彼は、そのカードをどこにでも持ち歩いていました。彼はまた、カナダから来たばかりで、強いカナダ訛りとモヒカン刈りをしていました。
問題は、ハッカーは、社会的に無頓着であるという評判にもかかわらず、時には賢く見えるように、かなりの努力を払っているという事実によって、さらに複雑になっています。私が大学院にいた頃、私は時々MITの人工知能研究所に出入りしていました。最初は、少し怖かったです。そこにいる人は、みんなとても速く話していました。しかし、しばらくすると、速く話すコツを覚えました。あなたは、何も速く考える必要はありません。ただ、すべてを言うために、2倍の単語を使用するだけです。
信号にこれだけのノイズがあると、優れたハッカーに出会っても、判断するのは難しいです。私は、今でも判断できません。履歴書からも判断できません。ハッカーを判断する唯一の方法は、彼と一緒に何かをすることのようです。
そして、これが、ハイテク分野が大学周辺でしか起こらない理由です。ここでの有効成分は、教授というよりも、学生です。スタートアップは、大学周辺で成長します。なぜなら、大学は、有望な若者を一堂に集め、同じプロジェクトに取り組ませるからです。賢い者は、他の賢い者が誰であるかを学び、一緒に独自の新しいプロジェクトを考案します。
優れたハッカーは、彼と一緒に仕事をすることでしか判断できないため、ハッカー自身は、自分の能力がどれほど優れているのかを判断できません。これは、ほとんどの分野で、ある程度は当てはまります。私は、何かをうまくできる人は、自分の能力に確信を持っているというよりも、なぜ他のすべての人がそれほど無能に見えるのかに困惑していることに気づきました。
しかし、ハッカーが自分の能力がどれほど優れているのかを知ることは、特に難しいです。なぜなら、彼らの仕事を比較するのが難しいからです。これは、他のほとんどの分野では、より簡単です。100メートル走では、10秒で誰が最も速いかわかります。数学でさえ、どの問題が解くのが難しいのか、そして良い解決策とは何かについて、一般的なコンセンサスがあるようです。しかし、ハッキングは、書くようなものです。2つの小説のどちらが優れていると言えるでしょうか?確かに、作者ではありません。
少なくとも、ハッカーに関しては、他のハッカーは判断できます。なぜなら、小説家とは異なり、ハッカーはプロジェクトで協力するからです。あなたが、誰かとネット上でいくつかの難しい問題を解決するまで、あなたは、彼らがどれほど強く反論するのかをすぐに学びます。しかし、ハッカーは、自分たちが仕事をしているところを見ることはできません。そのため、優れたハッカーに、自分の能力がどれほど優れているのかを尋ねると、彼はほとんどの場合、「わかりません」と答えるでしょう。彼は単に謙虚なだけではありません。彼は本当にわかりません。
そして、私たち誰も、実際に一緒に仕事をした人以外については、わかりません。それは、私たちを奇妙な状況に置きます。私たちは、自分のヒーローが誰であるかを知りません。有名になるハッカーは、PRの偶然の出来事によって有名になります。時々、私は優れたハッカーの例を挙げなければなりませんが、誰を使うべきか、いつもわかりません。最初に思い浮かぶ名前は、いつも個人的な知り合いの名前ですが、それを使うのは、つまらないように思えます。そこで、私は、リチャード・ストールマン、あるいはリヌス・トーバルズ、あるいはアラン・ケイ、あるいはそのような有名な人を挙げればいいのかな、と思います。しかし、私は、これらの男が優れたハッカーかどうか、わかりません。私は、彼らと一緒に何かをしたことがありません。
もし、ハッキングのマイケル・ジョーダンがいるなら、彼自身を含めて、誰も知りません。
育成
最後に、ハッカー全員が疑問に思っている質問です。どのようにして、優れたハッカーになるのでしょうか?私は、自分自身を優れたハッカーに作り変えることができるかどうか、わかりません。しかし、自分自身を愚かにすることは確かに可能です。そして、自分自身を愚かにすることができるなら、おそらく自分自身を賢くすることもできるでしょう。
優れたハッカーになるための鍵は、好きなことをすることかもしれません。私が知っている優れたハッカーについて考えると、彼らに共通していることの1つは、彼らが 嫌がる ことを、彼らにやらせることの極端な難しさです。これが原因か結果か、わかりません。両方かもしれません。
何かをうまくやるには、それを愛する 必要があります。 そのため、あなたがハッキングを、あなたが愛するものであるとして維持することができれば、あなたはそれをうまくやる可能性が高いでしょう。14歳のときにプログラミングについて持っていた驚異感を保ちましょう。もし、あなたが現在の仕事があなたの脳を腐らせているのではないかと心配しているなら、おそらくそうでしょう。
最高のハッカーは、もちろん、賢い傾向がありますが、それは多くの分野で当てはまります。ハッカーに特有の資質は何かありますか?私は、何人かの友人に尋ねたところ、彼らが最も多く挙げたのは、好奇心でした。 私は、すべての賢い人は好奇心旺盛であると常々思っていました。好奇心は、単に知識の1次導関数であると。しかし、どうやら、ハッカーは、特に物事の仕組みについて、特に好奇心旺盛なようです。それは、プログラムは、実際には物事の仕組みについての巨大な説明だから、理にかなっています。
何人かの友人は、ハッカーの集中力、つまり、ある友人が言ったように、「自分の頭の外にあるすべてのものを遮断する」能力について言及しました。私は確かに、このことに気づきました。そして、私は、何人かのハッカーが、ビールを半分でも飲んだら、全くプログラミングできなくなると言っているのを聞いたことがあります。そのため、ハッキングには、何らかの特別な集中力が必要なのかもしれません。おそらく、優れたハッカーは、大量のコンテキストを頭の中にロードすることができるので、コードの1行を見ると、その行だけでなく、その周りのプログラム全体が見えるのかもしれません。ジョン・マクフィーは、ビル・ブラッドリーがバスケットボール選手として成功したのは、彼の並外れた周辺視力のおかげであると書いています。 「完璧な」視力は、約47度の垂直方向の周辺視力を意味します。ビル・ブラッドリーは70度ありました。彼は、床を見ているときに、バスケットを見ることができました。もしかしたら、優れたハッカーは、そのような生まれつきの能力を持っているのかもしれません。(私は、非常に密度の高い 言語を使用することで、不正行為をしています。それは、コートを小さくします。)
これは、キュービクルに対する認識のずれを説明するかもしれません。もしかしたら、施設の責任者は、集中力を粉砕するようなものがないため、キュービクルで働くことが、ハッカーにとって脳をミキサーに入れているようなものだと、全く知らないのかもしれません。(一方、ビルは、自閉症の噂が本当なら、よく知っています。)
私が気づいた、優れたハッカーと一般的に賢い人との違いの1つは、ハッカーはより 政治的に不正確 であるということです。優れたハッカーの間には、秘密の握手がある程度存在するなら、それは、彼らが互いに十分に知り合って、一般の人々から石打ちにされるような意見を表明できるようになったときです。そして、私は、政治的に不正確であることが、プログラミングにおいて有用な資質である理由がわかります。プログラムは非常に複雑であり、少なくとも優れたプログラマーの手の中では、非常に流動的です。そのような状況では、仮定に疑問を呈する習慣を持つことが役立ちます。
これらの資質を育むことができるでしょうか?私はわかりません。しかし、少なくとも、それらを抑圧することはできます。そこで、私の最高のレシピを紹介します。もし、自分自身を優れたハッカーに作り変えることが可能であるなら、その方法は、自分自身と次の契約を結ぶことかもしれません。あなたは、退屈なプロジェクトに取り組む必要はありません(家族が飢える以外の場合)。そして、その見返りに、あなたは自分自身に、中途半端な仕事をすることを許しません。私が知っている優れたハッカーは、皆、その契約を結んでいるように思えます。しかし、おそらく、彼らの中に、その契約を結ぶ選択肢があった人はいません。
注記
[1] 公平を期すために、IBMはまともなハードウェアを作っていると言わなければなりません。私は、IBMのラップトップでこれを書いています。
[2] 彼らは、実際に破滅しました。彼らは、数か月後に閉鎖しました。
[3] 私は、これが人々が「人生の意味」について話すときに意味していることだと思います。一見、これは奇妙な考えです。人生は表現ではありません。どのようにして意味を持つことができるのでしょうか?しかし、それは、意味に非常に近い品質を持つことができます。コンパイラのようなプロジェクトでは、多くの問題を解決する必要がありますが、問題はいずれも、信号のように、パターンに沿っています。一方、解決しなければならない問題がランダムな場合、それらはノイズのように感じられます。
[4] アインシュタインは、ある時期に冷蔵庫の設計をしていました。(彼は株式を持っていました。)
[5] コンピュータの世界で、何が研究を構成するのかを正確に言うのは難しいですが、最初の近似として、それはユーザーを持たないソフトウェアです。
私は、最高のハッカーが研究部門で働きたいと思うのは、出版が理由だとは思っていません。それは、主に、製品マネージャーと3時間の会議をして、Word 13.27の韓国語版を話すクリップと統合する問題について議論する必要がないからだと思います。
[6] 建設業界では、長い間、同様のことが起こっています。数百年前、家を建てるときは、地元の建設業者がすべてを建てていました。しかし、建設業者が行うことは、ますます、他の人が設計・製造した部品を組み立てることになっています。これは、デスクトップパブリッシングの登場と同様に、人々に壊滅的な方法で実験する自由を与えていますが、確かにより効率的です。
[7] Googleは、マイクロソフトにとって、Netscapeよりもはるかに危険です。おそらく、他のどの会社よりも危険です。彼らは、戦うことを決意しているからです。彼らの求人ページには、「私たちの「コアバリュー」の1つは、「悪にならないこと」です」と書いてあります。大豆油や鉱山機械を販売している会社からすれば、そのような声明は単に風変わりなだけでしょう。しかし、私は、コンピュータの世界にいる私たち全員が、それが誰に対する宣戦布告であるかを認識していると思います。
謝辞 ジェシカ・リビングストン、ロバート・モリス、サラ・ハーリンに、この講演の以前のバージョンを読んでくれたことに感謝します。