ハッカーという言葉の意味

ハッカーと画家を読んで「ハッカー」という言葉の意味を今まで異なる解釈を持っていたことを実感しました。今まで自分はハッカー=優れたプログラマ=優れたエンジニア、という認識を持っていました。昔@mamorukさんのハッカーを育てるを読んだ時は「ふーん」という感じでしたけど、ハッカーと画家をよんで「ハッカー」の持つ意味を違う風に解釈していたことに気がつきました。ただこの「エンジニア」と「ハッカー」の持つ用語の意味合いが違うらしいです。
(余談ですがこの方の他のエッセイに目を通したことないのですが、中々面白そうです)

以下「ハッカーと画家」で用いられている各用語の意味をリストアップしてみました。本曰く研究者、ハッカー、エンジニア、という3つのくくりが存在します。

ハッカー =絵を描く=美しいソフトウェアをデザインする人
研究者  =新しい絵の具を生み出す
エンジニア=どうやって目的を達成するかを考え、実行する人(=ソフトウェアを実装する人)

つまりエンジニアは「デザインをしないハッカー」という風に解釈しました。「ハッカー一人にソフトウェアをデザインさせるように、コミュニティによってデザインして、企業のハッカー(ここではエンジニアのニュアンスになります)は実装のみする」。coding monkeyに近いイメージでしょうか。このソフトウェアをデザイン、という言葉もソフトウェアの実装上のデザイン(どこからどこまでを同じクラスにするか等)ではなくソフトウェアの方針のデザインということでしょうか。例えば改善要求が山ほどあるソフトウェアでしたら、ここからここまでの要望は聞くけど、こことここの要望は聞かない、ということも方針のデザインの一つ、ということかと思います。

またエッセイのスタンスとしては個人的な解釈ですが、研究者、ハッカーは共有している要素はあるが、ほとんど別、特に目的意識が違うという認識です。これは研究と開発、何が違うのか?ということに関連してきます。とりあえず動くものであり既存のものでも有益であればよいのが開発、新しい分野や手法を切り拓くのが研究というのがざっくりした自分の認識です。(そもそも研究がなんなのか、というのは永遠のテーマかと思いますが)。そしておそらく企業における研究と開発、大学における研究と開発というくくりでも大分内容が変わってくると思います。この辺は企業での経験が少ないので割愛して他の予稿に譲ります。
参考リンク:企業の研究者として働くことの魅力

Paul Grahamのいう「コンピュータサイエンスは色んなものを一緒くたにしすぎている」というのは賛成です。例えば、時々同じ自分と同じコンピュータサイエンスの方なのに、数学の能力が雲泥の差があることがよくあります。一方で圏論に基づく関数型言語があって、一方でWebがある。人に比較的近く泥臭い分野もあれば、計算量理論など純粋な理論によって形成されている分野もあります。

ハッカーを育てるを読んだ時の話に戻りますが、こういった背景知識の差で同じインプットに対しても認識することが違うことがあることを再度実感しました。