Loading...

偉大なハッカー

Original

2004年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で自発的にプログラミングをする人は1人しか知りません。そして、Sunで働いていない偉大なプログラマーの中で、Javaで働いている人はゼロです。

偉大なハッカーは一般的にオープンソースソフトウェアの使用を主張します。それは単にそれがより良いからだけでなく、彼らにより多くのコントロールを与えるからです。良いハッカーはコントロールを主張します。これは彼らが良いハッカーである理由の一部です:何かが壊れたとき、彼らはそれを修正する必要があります。あなたは彼らがあなたのために書いているソフトウェアについてこのように感じることを望んでいます。彼らがオペレーティングシステムについて同じように感じるとき、驚くべきことではありません。

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

最終フロンティア

ソフトウェアの次に、ハッカーにとって最も重要な道具はおそらく彼のオフィスです。大企業はオフィススペースの機能をランクを表現することだと考えています。しかし、ハッカーはそれ以上の目的でオフィスを使用します:彼らはオフィスを考える場所として使用します。そして、もしあなたがテクノロジー企業であれば、彼らの考えはあなたの製品です。したがって、ハッカーを騒がしくて気を散らす環境で働かせることは、塗料工場で空気がすすでいっぱいであるようなものです。

漫画のストリップ「ディルバート」はキュービクルについて多くのことを語っており、良い理由があります。私が知っているすべてのハッカーはそれを軽蔑しています。中断される可能性があるだけで、ハッカーは難しい問題に取り組むことができなくなります。キュービクルのあるオフィスで本当に仕事をするには、2つの選択肢があります:家で働くか、早く来るか遅く来るか、週末に誰もいないときに来るかです。企業はこれが何かが壊れている兆候であることに気づかないのでしょうか?オフィス環境は、あなたが働くのを助けるものであるべきであり、あなたがそれにもかかわらず働くものではありません。

シスコのような企業は、CEOでさえもすべての人がキュービクルを持っていることを誇りに思っています。しかし、彼らは自分たちが思っているほど進んでいません。明らかに、彼らはまだオフィススペースをランクのバッジとして見ています。また、シスコは社内で非常に少ない製品開発を行っていることで有名です。彼らは新しい技術を、それを創造したスタートアップを買うことで手に入れます。おそらく、そこでハッカーたちは静かな場所で働くことができたのでしょう。

ハッカーが必要なことを理解している大企業の1つはマイクロソフトです。私はかつて、マイクロソフトのリクルーティング広告で大きなドアの写真を見たことがあります。私たちのために働いてくれれば、実際に仕事ができる場所を提供します、というのが前提でした。そして、マイクロソフトは大企業の中で、社内でソフトウェアを開発できる点で際立っています。おそらくうまくはないですが、十分にうまくやっています。

企業がハッカーに生産的であってほしいなら、彼らが自宅で何をしているかを見てみるべきです。自宅では、ハッカーは自分たちが最も多くのことを成し遂げられるように物事を自分で整えることができます。そして、彼らが自宅で働くとき、ハッカーは騒がしいオープンスペースで働くのではなく、ドアのある部屋で働きます。彼らは、何かを考え直す必要があるときに歩く場所がある、居心地の良い近所の場所で働きます。ガラスの箱の中で、駐車場の広大な面積に囲まれているのではなく。彼らは疲れたときに昼寝をするためのソファを持っており、デスクで昏睡状態になっているのではなく、働いているふりをしています。毎晩、主要なハッキング時間中に掃除機のクルーが通り過ぎることはありません。会議や、神に禁じられた企業のリトリートやチームビルディングの演習もありません。そして、彼らがそのコンピュータで何をしているかを見ると、彼らが使用している道具について私が以前に言ったことを強化することがわかります。彼らは職場でJavaやWindowsを使用しなければならないかもしれませんが、自宅では自分で選ぶことができるため、PerlやLinuxを使用している可能性が高いです。

実際、CobolやJavaが最も人気のある言語であるという統計は誤解を招く可能性があります。私たちがどの道具が最適かを知りたい場合、自由に選べるときにハッカーが選ぶものを見なければなりません。つまり、彼ら自身のプロジェクトでです。その質問をすると、オープンソースのオペレーティングシステムがすでに支配的な市場シェアを持っており、最も人気のある言語はおそらくPerlであることがわかります。

興味深い

良い道具とともに、ハッカーは興味深いプロジェクトを望んでいます。プロジェクトを興味深くするものは何でしょうか?明らかに、ステルス機や特殊効果ソフトウェアのような明らかにセクシーなアプリケーションは、取り組むのが興味深いでしょう。しかし、どんなアプリケーションでも、新しい技術的な課題を提示すれば興味深くなります。したがって、ハッカーがどの問題を好むかを予測するのは難しいです。なぜなら、ある問題は、取り組んでいる人々が新しい解決策を発見するまで興味深くならないからです。ITA(Orbitzの内部ソフトウェアを作成した会社)の前、航空運賃検索に取り組んでいた人々は、おそらくそれが想像できる中で最も退屈なアプリケーションの1つだと思っていたでしょう。しかし、ITAは問題をより野心的な方法で再定義することで、それを興味深いものにしました。

Googleでも同じことが起こったと思います。Googleが設立されたとき、いわゆるポータルの間での一般的な考えは、検索は退屈で重要ではないというものでした。しかし、Googleの人々は検索が退屈だとは思わず、それが彼らがそれを非常にうまく行う理由です。

これはマネージャーが違いを生むことができる分野です。親が子供に「10分で部屋を全部片付けられないだろう」と言うように、良いマネージャーは時々問題をより興味深いものとして再定義することができます。スティーブ・ジョブズは、特に高い基準を持っているため、これが得意なようです。マックの前には、小さくて安価なコンピュータがたくさんありました。彼は問題を「美しいものを作る」と再定義しました。そして、それはおそらく、どんな人参や鞭よりも開発者を奮い立たせたでしょう。

彼らは確かに成果を上げました。マックが初めて登場したとき、あなたはそれをオンにしなくても良いことがわかりました。ケースからそれが良いことがわかりました。数週間前、私はケンブリッジの通りを歩いていて、誰かのゴミの中にマックのキャリングケースのようなものを見つけました。中を覗くと、マックSEがありました。私はそれを家に持ち帰り、プラグを差し込みました。ハッピー・マッキントッシュの顔、そしてその後ファインダー。なんてシンプルなんだ。まるで... Googleのようでした。

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

問題は、日々の管理ではなく、実際に優れたハッカーはほぼ自己管理的であることです。問題は、あなたがハッカーでない場合、良いハッカーが誰であるかを見分けることができないことです。似たような問題は、アメリカの車がなぜそんなに醜いのかを説明します。私はこれをデザインの逆説と呼んでいます。あなたは、優れたデザイナーを雇うことで製品を美しくすることができると思うかもしれません。しかし、あなた自身が良いセンスを持っていなければ、良いデザイナーを認識することはできません。定義上、彼のポートフォリオからは判断できません。そして、彼が受賞した賞や持っていた仕事を基にすることもできません。なぜなら、デザインの分野では、ほとんどの分野と同様に、それらはファッションや社交によって駆動され、実際の能力は遠くにあるからです。美しいものを生み出すプロセスを管理するには、美しさが何であるかを知らなければなりません。アメリカの車が醜いのは、アメリカの自動車会社が悪いセンスの持ち主によって運営されているからです。

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

厄介な小さな問題

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

厄介な小さな問題の特徴は、それから何も学ばないことです。コンパイラを書くことは興味深いです。なぜなら、それはコンパイラが何であるかを教えてくれるからです。しかし、バグのあるソフトウェアにインターフェースを書くことは何も教えてくれません。なぜなら、バグはランダムだからです。[3]したがって、良いハッカーが厄介な小さな問題を避けるのは、単なる几帳面さではありません。自己防衛の問題です。厄介な小さな問題に取り組むことは、あなたを愚かにします。良いハッカーは、モデルがチーズバーガーを避けるのと同じ理由でそれを避けます。

もちろん、いくつかの問題は本質的にこの特性を持っています。そして、供給と需要のために、特に高い報酬を得ます。したがって、偉大なハッカーを退屈な問題に取り組ませる方法を見つけた会社は非常に成功するでしょう。どうやってそれを実現しますか?

これがスタートアップで起こる場所の1つです。私たちのスタートアップでは、ロバート・モリスがシステム管理者として働いていました。それは、バル・ミツバでローリング・ストーンズが演奏するようなものです。そのような才能を雇うことはできません。しかし、彼らの創設者である会社のためには、どんな量の単調な仕事でも人々は行います。[4]

大企業は、会社を分割することでこの問題を解決します。彼らは、従業員が顧客の厄介な小さな問題に直接取り組む必要がない別のR&D部門を設立することで、賢い人々を雇います。[5]このモデルでは、研究部門は鉱山のように機能します。彼らは新しいアイデアを生み出します。おそらく、会社の残りの部分がそれを利用できるでしょう。

あなたはこの極端なことをする必要はないかもしれません。 ボトムアッププログラミングは、会社を分割する別の方法を示唆しています:賢い人々を道具製作者として働かせることです。あなたの会社がxを行うソフトウェアを作る場合、そのタイプのソフトウェアを書くための道具を構築するグループと、これらの道具を使用してアプリケーションを書くグループを持つことです。この方法で、賢い人々に99%のコードを書かせることができるかもしれませんが、彼らを従来の研究部門にいるのとほぼ同じようにユーザーから隔離することができます。道具製作者はユーザーを持ちますが、それは会社の開発者だけです。[6]

もしマイクロソフトがこのアプローチを使用していたら、彼らのソフトウェアはそんなにセキュリティホールが多くなかったでしょう。なぜなら、実際のアプリケーションを書くあまり賢くない人々が、メモリを割り当てるような低レベルのことを行っていなかったからです。彼らはCでWordを直接書くのではなく、Word言語の大きなレゴブロックを組み合わせているでしょう。(デュプロが技術用語だと思います。)

クランプ

興味深い問題とともに、良いハッカーが好きなのは他の良いハッカーです。偉大なハッカーは集まる傾向があります。時には、Xerox Parcのように壮観に集まります。したがって、あなたが彼らのためにどれだけ良い環境を作っても、良いハッカーを引き寄せることは直線的な比例関係にはなりません。集まる傾向は、環境の二乗のようなものです。したがって、勝者がすべてを取ります。特定の時点で、ハッカーが最も働きたい場所は約10か20か所しかなく、もしあなたがその1つでないなら、偉大なハッカーが少なくなるだけでなく、ゼロになります。

偉大なハッカーを持つことは、それ自体では会社を成功させるには不十分です。これは、現在のホットスポットの2つであるGoogleとITAにはうまくいっていますが、Thinking MachinesやXeroxには役立ちませんでした。Sunはしばらくの間良い成績を収めましたが、彼らのビジネスモデルは下降エレベーターです。その状況では、最も優れたハッカーでさえもあなたを救うことはできません。

しかし、他のすべてのことが等しい場合、偉大なハッカーを引き寄せることができる会社は大きな利点を持つと思います。これに反対する人々もいます。1990年代にベンチャーキャピタル会社を回っていたとき、いくつかの会社は、ソフトウェア会社は優れたソフトウェアを書くことで勝つのではなく、ブランドやチャネルを支配し、適切な取引を行うことで勝つと言いました。

彼らは本当にこれを信じているようで、なぜそう思うのか分かります。多くのVCが無意識のうちに探しているのは次のマイクロソフトです。そして、もちろん、もしマイクロソフトがあなたのモデルであれば、優れたソフトウェアを書くことで勝とうとしている会社を探すべきではありません。しかし、VCが次のマイクロソフトを探すのは間違いです。なぜなら、他の会社がちょうど適切な瞬間に屈服して次のIBMになる準備ができていない限り、スタートアップは次のマイクロソフトにはなれないからです。

マイクロソフトをモデルとして使用するのは間違いです。なぜなら、彼らの文化全体がその1回の幸運なブレークから派生しているからです。マイクロソフトは悪いデータポイントです。彼らを除外すると、良い製品が市場で勝つ傾向があることがわかります。VCが探すべきは次のAppleや次のGoogleです。

ビル・ゲイツはこれを知っていると思います。彼がGoogleについて心配しているのは、彼らのブランドの力ではなく、彼らがより優れたハッカーを持っているという事実です。[7]

認識

では、偉大なハッカーとは誰でしょうか?彼に会ったとき、どうやってそれを知るのでしょうか?それは非常に難しいことがわかります。ハッカー自身もそれを見分けることができません。私は今、友人のトレバー・ブラックウェルが偉大なハッカーであることをかなり確信しています。あなたは彼が自分のセグウェイを作ったことをSlashdotで読んだかもしれません。このプロジェクトの驚くべき点は、彼がすべてのソフトウェアを1日で書いたことです(ちなみにPythonで)。

トレバーにとって、それは日常茶飯事です。しかし、私が彼に初めて会ったとき、私は彼が完全な愚か者だと思いました。彼はロバート・モリスのオフィスで何かについて彼に喋りかけていて、私は彼の後ろでロバートにこの変人を追い出すように必死にジェスチャーをしていたのを覚えています。ロバートも最初にトレバーを誤解したと言っています。どうやら、ロバートが最初に彼に会ったとき、トレバーは自分の生活のすべての側面についてのすべてをインデックスカードの束に書き留め、それをどこにでも持ち歩く新しい計画を始めたばかりだったそうです。彼はまたカナダから来たばかりで、強いカナダのアクセントとモヒカンを持っていました。

この問題は、ハッカーが社会的な無関心の評判にもかかわらず、時々賢く見えるためにかなりの努力をすることによって複雑になります。私は大学院生のとき、MIT AIラボに時々出入りしていました。最初は少し威圧的でした。そこにいるすべての人がとても早口で話していました。しかし、しばらくすると、早口で話すコツを学びました。あなたは何も早く考える必要はありません。ただ、すべてを言うために2倍の言葉を使うだけです。

この信号の中のノイズの量では、良いハッカーを見分けるのは難しいです。今でも見分けられません。また、彼らの履歴書からも判断できません。ハッカーを評価する唯一の方法は、彼と何かを一緒に働くことのようです。

そして、これがハイテク地域が大学の周りでしか発生しない理由です。ここでの活性成分は、教授ではなく学生です。スタートアップは大学の周りで成長します。なぜなら、大学は有望な若者を集め、同じプロジェクトに取り組ませるからです。賢い人々は他の賢い人々が誰であるかを学び、一緒に自分たちの新しいプロジェクトを考案します。

偉大なハッカーを見分けることができないため、ハッカー自身も自分がどれほど優れているかを知ることができません。これはほとんどの分野である程度真実です。私は、何かに優れた人々は、自分の偉大さを確信しているのではなく、他の人々がなぜそんなに無能に見えるのかを不思議に思っていることが多いと感じています。

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

少なくともハッカー同士は見分けることができます。なぜなら、作家とは異なり、ハッカーはプロジェクトで協力するからです。誰かにネット越しにいくつかの難しい問題を解決させると、彼らがどれだけそれに対して強く打ち返すかをすぐに学びます。しかし、ハッカーは自分の仕事を観察することができません。したがって、偉大なハッカーに自分がどれほど優れているかを尋ねると、彼はほぼ確実に「わからない」と答えます。彼は単に控えめであるわけではありません。彼は本当にわからないのです。

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

もしハッキングのマイケル・ジョーダンがいるとしたら、誰もそれを知らないでしょう。彼自身も含めて。

育成

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

良いハッカーになるための鍵は、自分が好きなことに取り組むことかもしれません。私が知っている偉大なハッカーについて考えると、彼らに共通する1つのことは、彼らが望まないことに取り組むことの極端な困難です。これは原因か結果かはわかりません。両方かもしれません。

何かをうまくやるためには、それをさなければなりません。したがって、ハッキングを愛する何かとして保持できる限り、あなたはそれをうまくやる可能性が高いです。14歳のときにプログラミングについて持っていた驚きの感覚を保つようにしてください。現在の仕事があなたの脳を腐らせているのではないかと心配しているなら、おそらくそうです。

最高のハッカーは当然賢い傾向がありますが、それは多くの分野でも当てはまります。ハッカーに特有の何かの特質はあるのでしょうか?私は友人に尋ねましたが、彼らが挙げた最も重要なことは好奇心でした。私は常に、すべての賢い人々が好奇心を持っていると思っていました。好奇心は知識の最初の導関数に過ぎないと。しかし、どうやらハッカーは特に好奇心が強く、特に物事の仕組みに関心を持っています。それは理にかなっています。なぜなら、プログラムは実質的に物事の仕組みを説明する巨大な記述だからです。

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

これがキュービクルに関する不一致を説明するかもしれません。おそらく、集中力を壊すものがない施設の責任者は、キュービクルで働くことがハッカーにとって脳をブレンダーに入れるような感覚であることを理解していないのかもしれません。(ビルが自閉症の噂が本当であれば、彼はそれをよく知っているでしょう。)

私が偉大なハッカーと一般的な賢い人々の間で気づいた1つの違いは、ハッカーがより政治的に不正確であることです。良いハッカーの間に秘密の握手があるとすれば、それは彼らが互いに十分に親しいときに、一般の人々によって石打ちにされるような意見を表現することです。そして、プログラミングにおいて政治的に不正確であることが有用な特質である理由がわかります。プログラムは非常に複雑で、少なくとも良いプログラマーの手においては非常に流動的です。そのような状況では、仮定を疑う習慣を持つことが役立ちます。

これらの特質を育成できますか?わかりません。しかし、少なくともそれらを抑圧しないことはできます。だから、私の最善のレシピを示します。もし自分自身を偉大なハッカーにすることが可能であるなら、それを実現する方法は、次のような取引を自分自身と結ぶことかもしれません:退屈なプロジェクトに取り組む必要はありません(さもなければ家族が飢えます)、その代わりに、あなたは決して中途半端な仕事をすることを許可しません。私が知っている偉大なハッカーは皆、その取引を結んでいるようですが、おそらく彼らの中にはその問題に選択の余地がなかった人もいるでしょう。

ノート

[1] 公平を期すために、IBMはまともなハードウェアを作っていると言わなければなりません。私はIBMのノートパソコンでこれを書きました。

[2] 彼らは運命にあることが判明しました。数ヶ月後に閉鎖されました。

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

[4] アインシュタインはある時点で冷蔵庫の設計に関わっていました。(彼は株式を持っていました。)

[5] コンピュータの世界で研究が何を構成するかを正確に言うのは難しいですが、最初の近似としては、ユーザーがいないソフトウェアです。

私は、最高のハッカーが研究部門で働きたい理由は出版ではないと思います。主に、Word 13.27の韓国版を統合する問題について製品マネージャーと3時間の会議を持たなくて済むからです。

[6] 似たようなことが建設業界でも長い間起こっています。数百年前に家を建てたとき、地元の建設業者はその中のすべてを建てました。しかし、ますます、建設業者が行うことは、他の誰かによって設計され製造されたコンポーネントを組み立てることです。これは、デスクトップパブリッシングの到来のように、人々に災害的な方法で実験する自由を与えましたが、確かにより効率的です。

[7] Googleは、Netscapeよりもマイクロソフトにとってはるかに危険です。おそらく、他のどの会社よりも危険です。彼らが戦うことを決意しているからです。彼らの求人情報ページでは、「コアバリュー」の1つが「悪事を働かない」と言っています。大豆油や鉱山機器を販売する会社からのそのような声明は、単に風変わりなものです。しかし、私たちコンピュータの世界にいるすべての人々は、それが誰に対する宣戦布告であるかを認識しています。

感謝 ジェシカ・リビングストン、ロバート・モリス、サラ・ハーリンに、この講演の以前のバージョンを読んでいただき感謝します。