優れた開発者を見つけるには

From The Joel on Software Translation Project

Jump to: navigation, search

Joel Spolsky / 青木靖 訳
2006年9月6日 水曜


優れた開発者というのはいったいどこにいるんだ?

空いたポストを埋めるために誰かを採用しようとしたとき、多くの人がするのは、広告を出し、おそらくは大きなオンライン掲示板を見て回り、履歴書を山ほど取り寄せるということだ。

そこにある履歴書を、「フム、これはいいかもしれない」とか、「お話にならない」とか、「この人がバッファローに越してきてくれるならいいんだけど」などと考えながら見ていく。しかし、請け合ってもいいが、そのときに決して起こらないだろうことは、「すごい、この人は素晴らしい! ぜひとも雇わなくちゃ!」ということだ。実際何千という履歴書に目を通し、そして履歴書の見方がちゃんと分かっていたとしても(これは簡単なことではない。そのことについては金曜日に書くつもりだ)、何千という応募の中に、率直に言って優れたソフトウェア開発者が1人もいない。ただの1人もだ。

Ggth02.jpg

どうしてそんなことになるのか説明しよう。

優れたソフトウェア開発者というのは、実際のところ他の分野でも最高の人材というのは、単にマーケットには出てこないものなのだ。

優れたソフトウェア開発者は、その全職歴を通して、たぶん平均で4回くらいしか職に応募しない。

優れた大学の卒業生は、業界とコネのある教授の引き合いでインターンシップに加わり、その会社から早い段階で内定を受けて、わざわざ他の会社に応募しようとはしない。彼らが会社を辞めるときには、友達とスタートアップに入るか、優秀な上司について他の会社に移るか、あるいはどうしてもある仕事を、たとえばEclipseの仕事をしたくなって、だってEclipseはクールだから、それでBEAかIBMでEclipseの仕事ができないか探すのだが、もちろん優れた彼らはその職を得ることになる。

あなたが幸運なら、それもすごく幸運であるなら、そういう優れた人がマーケットに現れるのに出会えるかもしれないが、それは彼らの連れ合いがアンカレッジの病院のインターンシップを受けることにして、アンカレッジでやってもいいと思えるわずかの仕事に応募することにしたというような場合だ。

しかしほとんどの場合、優れた開発者というのは(これはほとんどトートロジーだが)、その、優れているものだ(っていうかトートロジーだね)。そして通常、雇う側でも彼らの優れていることはすぐに見て取れるので、基本的に彼らは働きたいところで働くことになり、彼らが方々に履歴書を送ったり、たくさんの職に応募したりすることはない。

あなたが雇いたいのは、そういう人なんじゃない? そうであるはずだ。

Ggth01.jpg

この、「優れた人々はマーケットには現れない」という法則の系として言えるのは、まずい人たち——ひどく資質を欠いた人たち——は、マーケットにすごくたくさんいるということだ。彼らは仕事ができないためにしょっちゅう解雇されている。彼らの会社は倒産しており、それは彼らを採用するような会社はおそらく資質を欠いたプログラマをたくさん雇っているためで、それが積み重なって潰れることになるのだけど、時には彼らのあまりの資質のなさのために会社が駄目になる。そう、そういうことだってあるのだ。

病的に資質を欠いた人たちは、ありがたいことに、滅多に採用されることがないが、そのため彼らは職に応募し続けることになり、彼らが応募するときにはMonster.comに行って300個から1000個の職を一度にチェックして、宝くじみたいに当選するのを当てにするのだ。

数値的に言えば、優れた人々はごく少なく、彼らは決して求人市場に現れない。無能な人々は、たとえ彼らが同じように数少なかったとしても、その職歴を通して何千という職に応募する。だからねスパーキー、Craigslistの履歴書の山を見直してごらん。そのほとんどが雇う気にならないような人だったとしても、それは驚くようなことだろうか?

目ざとい読者は、私がまだ一番大きなグループに触れていないことを指摘するだろうと思う。しっかりした能力のある人たちだ。彼らはマーケットにおいて優れた人々よりは多いが、無能な人たちよりは少ない。結果として彼らは1000通の履歴書の山の中にわずかだけ顔を出す。しかし山の大部分はというと、机の上に1000通の履歴書を載せたパロアルトの採用マネージャたちはみんな、まったく同じ970通の履歴書を手にしており、それは同じ970人の無能な少数派がパロアルト中の職に応募し続けているからだ。おそらく一生そうしているのだ。そしてわずか30通の履歴書だけが、検討するに値するのだ。その中に優れたプログラマは1人いるかいないかだろう。おそらくは1人もいない。そして干し草の山からこれらの針を見つ出すことは、これから見ていくように、可能なことなのだ。簡単ではないが。


そもそも彼らを手に入れることはできるのだろうか?

できる!

まあ、たぶん!

…できるかも。場合によるよ!

採用を、「履歴書を集め、より分ける」という手順で考えるのでなく、「勝者を突き止め、接してくるようにし向ける」という手順で考える必要がある

私がこれをやるために使っている基本的な方法が3つある。

  1. こちらから出向く
  2. インターンシップ
  3. 自分のコミュニティを作る*

(自分のコミュニティを作るというのに小さな星印が付けてあるのは「難しい」ことを意味している。ジョージ・ダンツィークが解いた有名な数学の問題みたいに難しい。彼は授業に遅れてきたために、その問題が解決不能とされているというのを聞いていなかったのだ。)

あなたもたぶん自分なりのアイデアを見つけ出せるだろう。私はただ自分でやってうまくいっている3つの方法について話しているだけだ。


こちらから出向く

Ggth03.jpg

あなたが雇いたいと思う人たちが集まる場所を考えてみよう。彼らはどんなカンファレンスに行くだろう? 彼らはどこに住んでいるだろう? どんな組織に属しているのだろう? どんなWebサイトを見ているだろう? Monster.comで大きな網を投げる代りにJoel on Softwareの求人広告を使い、このサイトに来る出来のいい人たちに範囲を狭める。本当に興味深いテクニカルカンファレンスに行く。優れたMacの開発者ならAppleのWWDCに来ているだろう。優れたWindowsプログラマなら、MicrosoftのPDCにいるだろう。オープンソースのカンファレンスもたくさんある。

現在のホットな新技術に注目する。去年はPythonがホットだった。今年はRubyだ。これらのカンファレンスに行けば、新しいものに興味を持ち、常に向上する気持ちを持った先端的な人たちを見つけられるだろう。

廊下をぶらぶらして会う人会う人に話しかけ、テクニカルセッションに参加してスピーカーを飲みに誘い、誰か切れる人を見つけたなら、パキーン、全力の口説きモードに突入する。「ワオ、それは興味深い! 君は信じられないくらい頭がいいね。それにルックスもいいし。どこで働いてるって言ってたっけ? ほんと? へえー。もっといい仕事ができるとは思わないの? たしか私の会社で採用をしてたと思ったけど…」

このルールの系は、大きく汎用的な求人サイトでの広告は避けるということだ。以前、私は不用意にサマーインターンの募集をMonsterTRAKでやったことがあって、そこでは少し余分に支払うとアメリカ中の大学の学生にインターンシップについて知らせることができた。この結果として文字通り何百という履歴書を受け取ることになったが、その中には最初のふるい分けを通る者すらいなかった。たくさんの金を使って履歴書の山を手にしても、そこから私たちが雇いたいと思うような人を見つけられる可能性はほとんどない。ほんの数日で、MonsterTRAKが履歴書の供給元として私たち向けのものでないと悟った。同様に、Craigslistが最初現れたときには、そこを訪れるのはインターネットの世界のアーリーアダプターたちだけだったため、Craigslistへの広告で優れた人を見つけることができたが、しかし今日では、人並みにコンピュータの使える人は誰でもCraigslistを使うようになったので、針/干し草比があまりに低い膨大な履歴書の山しか手に入らなくなった。


インターンシップ

求人マーケットに現れることのない優れた人々をつかみ取るためのいい方法は、彼らが求人マーケットなどというものがあることに気付く前に手に入れることだ。彼らが大学にいるときに。

Ggth04.jpg

採用マネージャによっては、インターンを雇うというアイデアを嫌っている。彼らはインターンが未熟で、十分なスキルを持っていないと思っている。ある意味でそれは正しい。インターンは経験を積んだ社員のように経験を積んではいない(そうでもないって? 本当?!) 彼らには少し余計に投資する必要があるだろうし、彼らが上手く仕事がこなせるようになるにはしばらくかかるだろう。いいニュースは、私たちの分野では、本当に優れたプログラマはしばしばプログラミングを10歳のときに始めるということだ。同じ年代の子供たちが外で走り回って「サッカー」と呼ばれるもの(これはプログラミングのできない子どもたちの多くが興じるゲームの一種で、「ボール」と呼ばれる球状の物体を自分の足で蹴ることを基本としている(変な説明なのは分かってるよ))をしているとき、彼らは自宅にある父親のオフィスでLinuxカーネルをコンパイルしようとする。遊び場で女の子たちを追いかけ回す代りに、Haskellスタイルの型推論を実装していないプログラミング言語がいかに堕落しているかと、Usenet上でフレーム戦争をしている。ガレージでバンドをはじめる代りに、クールなハックをして、自分の家のWIFIのアクセスポイントから隣の住人が帯域を盗んだときに、Webの画像が逆さまになるようにしてやる。ヘヘン、ざまー見ろ!

だから、法律や医学といった分野とは違い、このソフトウェア開発という分野では、大学の2年か3年になる頃には、彼らは非常に優れたプログラマになっているのだ。

たいがいの人は1つの職に応募する。最初に応募する職にだ。そしてほとんどの若者は大学最後の年までそのことについて心配しなくても大丈夫だと思っている。実際ほとんどの若者というのはそんなに創意がなく、大学内で行われる求人イベントで見つけた職に応募して済ませてしまう。いい大学に行っている若者には、大学にやって来る会社からだけでも、いい職の選択肢は十分にあり、大学に来ない会社にわざわざ応募しようとはしない。

あなたはこのお祭り騒ぎに加わって大学で求人することもできる。悪く取らないで。これはそんなにまずいことというわけでもない。あるいは抜け駆けして、優れた学生を卒業の1年か2年前に捕まえようとすることもできる。

Fog Creekではこの方法でとてもうまくいっている。このプロセスを毎年9月に始め、私の持つすべてのリソースを使って、この国の最高のコンピュータサイエンスの学生を見つけ出す。200ほどのコンピュータサイエンス学科に手紙を出す。その時点で卒業を2年後に控えたコンピュータサイエンス専攻の学生を調べる(このリストを手に入れるためには、通常学科の教授か学生に知り合いがいる必要がある)。それからコンピュータサイエンス専攻の学生の1人ひとりに、個人的な手紙を出す。eメールでなく、Fog Creekのレターヘッドのついた本物の紙の手紙だ。これにインクを使って自筆の署名をする。こういうのは明らかに珍しいことらしく、多くの注意を引くことになる。私は彼らにインターンシップをやっていることを知らせ、応募することを個人的に勧める。コンピュータサイエンスを専攻する人たちを対象とするメーリングリストを運営している教授や卒業生にメールを送り、メーリングリストに転送してもらう。

Ggth05.jpg

その結果としてインターンシップにたくさんの応募が寄せられ、そこから収穫をすることになる。この2年ほどは、インターンシップごとに200ほどの応募が来ている。私たちはこの山をふるいにかけて、(インターン1人につき)10人くらいに絞り込み、その人たちに電話で面接を行う。電話による面接を通った2人か3人の人を、ニューヨークに呼んで直接面談する。

実地の面接をする時点では、私たちがその人を採用したいと思う確率は非常に高くなっているので、私たちは全力の採用モードに突入する。空港ではユニフォームに身を包んだリムジンのドライバーが彼らを出迎え、荷物を持ってホテルへと送り届ける。そのホテルはおそらく彼らが生まれてこの方見たことがないようなクールなホテルで、しょっちゅうモデルと出くわすファッション地区の中心にあり、客室のバスルームにある込み入った設備は、おそらく現代美術館の永久所蔵品になっているのだろうが、どうやって歯を磨けばいいのかしばらく悩むことになるだろう。客室には、私たちからのお土産が置かれていて、Tシャツとか、Fog Creekのスタッフの書いたニューヨークの散歩案内とか、2005年のインターンたちのドキュメンタリーDVDが入っている。客室にはDVDプレーヤーがあるので、彼らの多くは以前のインターンたちがいかに楽しい思いをしたか見ることになる。

面接の後は、ニューヨークのことをもっと知りたいという人のために、私たちの費用持ちで何日か滞在してもらう。それからリムジンがホテルまで彼らを拾いに来て帰途の空港まで送り届ける。

私たちの面接官たちの行う実地の面接ステージを通る人が3人のうちの1人だけだったとしても、その通った人がいい印象を持つことが本当に重要なのだ。そして通らなかった人も、Fog Creekがいい会社だと思いながら大学に戻り、ニューヨークの高級ホテルに滞在してどんなに楽しかったかを友達に話し、それを聞いた人たちはその旅行をするためだけにでも来年のインターンシップに応募しようという気になる。

インターンシップでは、学生たちは始めは「これは夏の仕事としていかしてるし、いい経験になる。それにもしかしたら正社員になれるかもしれない」と考えている。私たちは一歩先を行っている。私たちはこの夏を使って彼らを正社員として雇いたいか判断しているのであり、彼らもまた、この夏を使って私たちのところで働きたいか判断することになるのだ。

だから私たちは彼らに本物の仕事を与えている。きつい仕事をだ。インターンたちにはいつも製品コードを扱わせている。ときには会社の中でも最もクールな最新製品の開発をしており、正社員が少し嫉妬するくらいなのだが、人生とはそういうものだ。ある夏には、4人のインターンに新製品をまるまる、一から開発させた。このインターンシップはほんの数ヶ月で元が取れることになった。新製品を開発しない場合でも、彼らは本物の出荷コードを作ることになる。大きな機能エリアを個人的に完全に任されるのだ(もちろん経験豊かなメンターが助けはするが)。

Ggth06.jpg

そして彼らが素晴らしい時を過ごせるように気を使っている。私たちはパーティやオープンハウスを開く。彼らには地元のかなりいい寄宿舎に無料で住まわせており、そこで彼らは他の会社や学校から来ている人たちと友達になれる。また、ある種の特別課外活動や見学旅行を毎週やっている。ブロードウェーのミュージカル(今年はアベニューQにみんな夢中になった)、映画のオープニング、美術館ツアー、船でのマンハッタン巡り、ヤンキースの試合、それに信じるかどうかわからないけど、今年の一番人気はロックフェラーセンターの"Top of the Rock"への遠足だった。つまり、マンハッタンの真ん中の高いビルの屋上に出られるってやつだ。そんなのすごい体験とは思わないかもしれないけど、実際すごいんだ。Fog Creek社員も何人かがそれぞれのアクティビティについて行っている。

そして夏の終わりには、いつでもインターンたちの何人かは本当に優れたプログラマであるところを見せてくれ、私たちは絶対雇わなきゃと思う。全員というわけではない。念のため。優れたプログラマだけど遠慮しておこうと思う人や、他所ではやっていけるだろうけどFog Creekでは無理という人もいる。たとえば私たちの会社ではみな自主性が非常に高く、中間管理職というのがほとんどいないので、みんな完全に主体的に行動することが期待されている。これまでに2回ほど、指導があれば非常にうまくやれるというサマーインターンがいたが、しかしFog Creekではあまり指示は与えられないので、どうしていいか分からなくなってしまうだろう。

何にせよ、私たちが本当に雇いたいと思う人については、待つことに意味はない。私たちは卒業後のフルタイムの仕事を早い段階で提示する。すごくいい条件でだ。私たちは彼らが大学に戻って友達と情報交換したときに、他の誰よりも初任給が高いことを知るようにしたいのだ。

これは私たちが払いすぎていることを意味するのだろうか? 全然。平均的な初任給は一定の割合の新入社員がうまくいかないリスクが考慮に入れられている。しかし私たちはすでに若者たちをオーディションにかけており、彼らが実は優秀でなかったというようなリスクはない。私たちは彼らに何ができるのか知っている。だから私たちが彼らを雇うときには、面接しかしていない会社と比べ、ずっと多くの情報を持っている。それだから私たちは彼らにより多くの金を出すことができる。いい情報を持っているからこそ、情報を持たない会社よりも多くの額を喜んで支払えるのだ。

私たちが適切に役割を果たしたなら、そして通常適切に果たしてきたのだが、この時点でインターンはすっかり降参して私たちの提示を受け入れてくれる。時にはもう少し説得が必要になることもある。彼らが選択肢を残しておきたいと思うこともあるが、しかしFog Creekの飛び抜けた提示内容によって、Oracleの面接のために朝8時に起きてスーツを着なきゃいけないというとき、アラームを止めながら、「Fog Creekで素晴らしい仕事が待っているというのに、どうしてOracleの面接のために朝の8時に起きてスーツを着なきゃいけないんだ?」と思う可能性が高くなるのだ。そして私の期待するのは、彼らがわざわざ面接を受けに行ったりしないということだ。

ところで、先に進む前に、コンピュータサイエンスとソフトウェア開発におけるインターンシップについて、1つはっきりさせておかなければならないことがある。現在、アメリカにおける、この業界のインターンシップには給料が支払われるものとされている。そして通常その給料はかなりいい。出版や音楽業界では給料の出ないインターンシップが一般的かもしれないが、私たちは週750ドルの給与に加え、住居、昼食、それに地下鉄のフリーパスを支給している。移転費用や種種の手当を出しているのは言うまでもない。金額自体は平均より若干低めだが、居住費が無料になるので結果としては平均より若干高くなる。この話をしているのは、インターンシップについてWebサイトで書くと、必ず誰か混乱した人が、私が奴隷労働させていると思い込むからだ。おい、そこの生意気な若造! よく冷えたオレンジジュースを持ってこい! 手で絞るんだ。さっさとしろ!

Ggth07.jpg

インターンシッププログラムは優れた社員を得るためのパイプラインを作り出す。しかしこのパイプラインはとても長く、途中で多くの人が失われる。私たちは基本的にフルタイムの社員を1人得るために、2人のインターンを雇う必要がある。そして大学があと1年あるインターンを雇うなら、採用の準備を始めてから彼らがフルタイムの仕事をしに現れるまでに2年のパイプラインがあることになる。そのため、私たちは夏ごとにオフィスに入れる限りたくさんのインターンを雇っている。最初の3回は大学の残りがあと1年の学生に限定していたが、今年になってようやく、もっと若い優れた学生を見落としていることに気付き、インターンシップを大学の何年生でも参加できるようにした。信じないかもしれないが、私は高校生をどうにか雇えないかとさえ考えている。学資を稼ぐための放課後の仕事にコンピュータのセットアップのようなことをしてもらう。これは次世代の優れたプログラマとのコネクションを築くためなのだ。たとえそれが6年のパイプラインになろうとも。私は遠くまで展望を抱いている。


コミュニティを作る(*難しい)

ここでのアイデアは、同じ考えを持った頭の切れる開発者たちの大きなコミュニティを、あなたの会社の周りにどうにかして作り上げるということだ。そうすれば、ポストに空きができるたび、手の届くところに候補者がいることになる。

実を言うと、これはFog Creekが優れたスタッフを見出してきた方法なのだ。私の個人的なWebサイト、あなたが今読んでいるこのサイトを通してやったのだ。このサイトの主なアーティクルは、百万もの人に読まれており、彼らのほとんどは多かれ少なかれソフトウェア開発をしている人たちだ。大勢の自主的な聴衆がいるなら、ホームページでこんな人を探していると書きさえすれば、非常にいい履歴書の大きな山を受け取ることになる。

これに「難しい」ことを意味する星印が付いている理由は、自分でもこんなアドバイスをしているように感じているからだ。「美人コンテストで勝とうと思うなら、(a)美を手に入れ、(b)コンテストに行け」。何しろ私はこのサイトがどうしてこんなに人気になったのか分からないし、このサイトを見ている人たちが優れたソフトウェア開発者である理由も分からないのだ。

私がもっとうまく力になれたならと思う。Derek Powazekはこのテーマについていい本を書いている(Design for Community)。多くの会社が様々なブログ戦略を試しているが、あいにくとその多くはどのような種類の聴衆を作り出すことにも失敗している。私たちにうまくいっていることは、あなたにもうまくいくかもしれないし、あるいはうまくいかないかもしれないとしか言えないし、それについてあなたにできることが何なのかもよく分からない。私はちょうどこのサイトに求人掲示板をオープンしたところで(jobs.joelonsoftware.com)、350ドルで求人広告をJoel on Softwareの読者の目に触れるようにすることができる。


社員による推薦: 濡れると滑りやすくなります

優れたソフトウェア開発者を見つけるためのよくあるアドバイスは、会社にいる開発者に聞けというものだ。その理屈は、彼らはあんなにできのいい開発者なんだから、他のできのいい開発者を知っているに違いない、ということだ。

彼らは他の優れた開発者を知っているかもしれないが、同時にそれほど優れていない開発者の友達も持っている。そしてそこにはたくさんの地雷が埋まっているのだ。本当のことを言って、私は社員による推薦というのは新規採用のソースとしては最も弱いものだと考えている。

1つ大きなリスクとして、非競合契約がある。これが問題にならないと思っているなら、Crossgainのケースを考えるといい。Microsoftが訴訟を起こすと脅したとき、Crossgainは全従業員の1/4にもなる元Microsoft社員を解雇しなければならなかった。正気なプログラマなら非競合契約になんかサインすべきではないが、プログラマの多くがサインするのは、強制力があると思わなかったためか、契約を読む習慣を持たないためか、すでに提示を受け入れ、家族とともに大陸を渡って越してきて、仕事の最初の日に始めて契約を見せられ、交渉するにはちょっとばかり遅すぎたためなのだ。だからサインすることになるのだが、これは雇用に関してもっとも嫌らしい慣習のひとつであり、強制力があって、しばしば行使されている。

社員の紹介にあまりに多く頼っていて、以前同じ会社(これはそもそも彼らが他のスタープログラマと知り合う場所だ)にいた人たちをたくさん採用している場合、非競合契約によって非常に大きなリスクを負うことになるかもしれない。

もうひとつの問題は、採用プロセスで何らかの選別を行っているなら、社員に誰か紹介するように言っても、彼らは本当の友達を紹介しはしないということだ。友達に自分の会社の求人に応募するように勧め、それで不採用になったりしたら、友人関係にひびが入ってしまうからだ。

社員が友達を紹介せず、一緒に働いていた人たちを雇うこともできないとしたら、残るものはあまりないだろう。

Ggth08.jpg

しかし社員による推薦の本当の問題は、経済学の初歩をかじった採用マネージャが、紹介に対してボーナスを支給しようと決めた場合だ。これは非常に一般的に行われている。理屈はこうだ。ヘッドハンターや外部のリクルーターを使って優れた人を採用すると、30,000ドルから50,000ドルかかる。社員に対して、紹介した人が採用されたときに、たとえば5000ドルのボーナスか、あるいは10人の紹介で高級スポーツカーを支給することにしたなら、どれだけお金の節約になるだろう? そして5000ドルというのはサラリーマンには大金に見えるし、実際大金だ。だからこれは誰にとってもうまい話に見える。

問題は、突然ギアが切り替わることになるということだ。社員は誰彼見境なしに面接に連れてくる。彼らはその人たちが採用されることに対して非常に強いインセンティブを持つため、面接の受け方のコーチをしてやり、会議室で面接官と密かな話し合いをし、誰かの大学時代のルームメイトだった役立たずな人間を採用させようとして、社員みんなが動き出す。

これはうまくいかないのだ。ArsDigitaはフェラーリを買って駐車場に置き、10人推薦した人に与えるとアナウンスしたことで有名になった。誰も親しくはならず、新規採用の質は下がり、会社はバラバラになった。しかしフェラーリのためではない。フェラーリはレンタルで、広告のためでしかなかったのだ。

Fog Creekの社員が、うちの仕事に最適だと誰かを推薦するとき、最初の電話でのスクリーニングは省略されるだろうが、それだけのことだ。彼らは他の人と同じ面接をくぐり抜ける必要があり、基準の高さも変わらない。


開発者観察ガイド

開発者は仕事に何を求めるのか? ある仕事が、他の仕事よりも魅力的になるのは何によってなのか? どうすれば選ばれる会社になることができるのか? 続きを読もう!


(オリジナル: Finding Great Developers)

戻る

Personal tools