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