電話でのふるい分け
From The Joel on Software Translation Project
Joel Spolsky / 青木靖 訳
2006年10月24日 火曜
こういうのがしょっちゅう起きている。私たちのところへ、誰もが興奮するような履歴書が送られてくる。ものすごく高い成績。あらゆる種類の目を見張るような職歴。豊かな経験。17カ国語を話せる。そして10,000匹以上の子猫を助けた!
見て! 子猫だ!
それで彼らに電話するのだが、私は彼らと話しているのが耐えられなくなる。10分ともたない。私には彼らがプログラマとしてうまく行かないだろうことがわかる。すごい履歴書を持つ人が、ポインタは1バイトに収まるのだと言う。ときに、彼らはもっとも簡単な質問にさえ答えられない。あるいは彼らと取っ組み合いして答えを引っぱり出さなきゃならないように感じる。
私たちは通常、本格的な実地の面接に移る前に電話でのふるい分けをしており、お話にならないくらい頭の良くない人のために時間と金を無駄にさせられることがないようにしている。
電話でのふるい分けには、通常の実地の面接とはまた違った利点がある。まず安上がりなこと。45分から1時間かければ、履歴書の上では実にすばらしいと思える人の半分を削ることができる。
さらに重要なのは、それがよりフェアだということだ。
電話での面接では相手が見えないため、見た目や緊張具合といった、仕事に関係しない外的な要因を排除して彼らの答え自体の質に集中するのが容易になる。マルコム・グラッドウェルのBlinkを読んで以来、私は先入観というのを恐れるようになった。仕事の能力とは関係のないことに基づいて候補者をあまりに早く判断してしまっているのかもしれない——見かけや、自信や、背の高さや、漠然としたナード的な態度のために、面接の間に起こるその他すべてのことをバラ色の色眼鏡を通して見ているのかもしれないのだ。
電話での面接のいいところは、そういう類の瞬間的な判断がずっとしにくくなるということだ。あなたはその人が何を言っているのか実際に聞き取って、それが頭のいい人が言うだろうことに合致するか判断する必要がある。そのように言うのはもちろん100%正しいわけではない。あなたはおそらくある種のアクセントや方言に対して先入観を持っているだろう。しかし少なくとも、見かけによる先入観の影響は抑えられる。
私の電話面接は3つのパートからなっている。最初のパートでは、候補者に職歴について説明してもらう。そして自分自身のことについて話してくれるようにと頼む。ここでの意図は、主として彼らをくつろがせ、気分を楽にして緊張を取り除き、そして彼らが自分を表現したいような仕方で表現させるということだ。このステージの間、面接者は候補者が問題解決者、すなわち物事を成し遂げるタイプの人であることを示すものを探す。それからまた情熱も探す。あなたは自分のやることを気にかけている人を望んでいるはずだ。
このパートでは、私は2つの方面に掘り下げていく。テクノロジーと政治だ。
- テクノロジー。候補者が自分はこれこれのプロジェクトを実装したと言う場合、私は彼らが使ったテクノロジーと、それをどう使ったのかについて詳しく質問する。それから彼らが具体的に果たした役割についても聞く。1人でやったの? チームの開発者の1人? 私はこれらの質問をすごく細かいところまで聞いていくが、それというのもここが、自分で何をやっているかわかってない人や、話を作っている人や、自分の役割を誇張している人を見破れるところだからだ。たとえば誰かの履歴書がPythonで2年間のコーディング経験があると仄めかしていた場合、彼らには本当に2年間のPythonの経験があるらしいとはっきり確信が持てるまで私は掘り下げていく。
- ひっかけ問題を使うのをためらうことはない。私は「Pythonの嫌いなところは、変数をいちいち宣言するのが面倒なところだ。その点で私はCの方が好きだ」みたいなことを言う。Pythonは変数宣言させたりはしない(そしてCはさせる)。面接者の間違った主張に同意するよう候補者がプレッシャーを感じるだろうことを懸念する必要はない。頭のいいプログラマというのは真実に対するある種の親近感を持っているもので、きっとあなたをたしなめることだろう。デイブ・ワイナーが言うように、「コンパイラに嘘をつくことはできない」のだ。彼らが本当に優れているなら、そういったことを如才なく扱う方法を心得ているだろう。しかしそれ以前に彼らは情熱のあまり面接を受けているということをほとんど忘れてしまうかもしれない。そういうのはいい兆候だ。
- 政治。履歴書にある過去に勤めた会社の退屈なリストの裏には、つねに物語があるものだ。私が知りたいのは、候補者が過去に挑戦をどう処理してきたかという物語だ。抵抗に直面しても物事を成し遂げてきたような人を私は探している。体制に挑戦し、反対を乗り越え、何かを実現したような人を私は探している。だから履歴書に「.NETの採用を推進した」とあれば、私はその「推進」が何を意味するのかを知りたい。それも詳しく。履歴書に「会社を設立した」とあれば、私はそのすべてについて聞きたい。それは誰のアイデアだったのか? 誰が誰を説得したのか? 誰が何をやったのか? それはうまく行ったのか? なぜうまく行かなかったのか?
電話での面接の2番目のパートは、技術的な質問だ。私は通常何年も同じ質問を使い続けている。その方が候補者を比較するのが容易になるからだ。その質問は、大きな範囲の設計についての自由解答式の質問だ。xを実現するデータ構造やコードブロックをどう設計するか? ここでxは大きく複雑な何かだ。これはすごく大きな問なので、私は候補者がこのデータ構造やコードブロックを設計していく道筋を導いていくための一連の質問を用意している。そして一定の時間の中でその道筋をどこまで進めるかによって、しばしば候補者の頭の良さを言い当てることができる。
手始めに使えるアイデアをいくつか挙げておこう。
- インターネット越しにモノポリーができるプログラムをどうデザインするか?
- デジタルフォトエディタのためのいいデータ構造はどんなものだろうか?
- 高層ビルのエレベータを操作するプログラムをどういう風に実装するか?
- Webブラウザのレンダリングエンジンをどう実装するか?
理想的な質問は、候補者が使った経験があってどういうものなのかは良く知っているが、自分で実装したことはありそうにないようなものだ。あまり書くことなく、電話で話ができるようなものがいい。この場合「クイックソートのコードをどう書くか?」というのはまずい質問で、私たちはプログラマに電話越しにコードを暗唱できることを別に期待してはいないからだ。あなたはプログラミングの根本部分である、アルゴリズムとデータ構造について会話したいと思うだろう。目的としているのは必ずしも可能な最良の答えを見つけ出すことではない。ただコードについて会話する機会を与えてくれればいいのだ。時間と空間のトレードオフとか、コードのパフォーマンス特性とかについて話し、それらすべての積み重ねから、話している相手がいいプログラマなのかどうか、そして頭がいいかどうかということについて、かなりいい情報が得られるはずだ。もしあなたがすべてのことを3度ずつ繰り返して説明しているようなら、あなたが物事を説明するのがはなはだ下手なのか、それともあなたの話している相手はあまり頭が良くないかのどちらかだ。
私の面接テクニックは結局のところ、頭のいい人は一般に難しい話題や高度に技術的な話題について会話することで、相手が頭のいい人なのか言い当てることができるということだ。面接の質問というのは実のところ難しい話題について会話するための単なる口実にすぎず、それによって相手が頭がいいかどうか面接者が判断するためにある。
面接の最後となる3番目のパートでは、候補者に自分のことを面接させる。私の採用のシステム全体が基づいている考えは、頭のいい候補者はどこで働くかについて選択肢を持っているもの、ということだ。それが正しいなら、面接プロセスは私たちが候補者を採用したいと思うか判断する場であるだけでなく、候補者が私たちのところで働きたいと思うか判断する場でもあるのだ。「Fog Creekのことや、Fog Creekでの仕事のことや、そのほか何でも私に聞きたいことはない?」
面接のこのパートで、ときどき候補者がびっくりするくらい準備を欠いているのが明らかになることがある。「じゃあ、Fog Creekって、実際のところ何をやってるんですか? 場所はどこにあるんですか?」 私たちのWebサイトで5分も調べればわかることなのに、そんなごく基本的なことの下調べさえ面接前にしていないというのは、候補者の頭の良さや物事を成し遂げる能力に対する信用を損なうことになる。
この時点では、私はその人が実地の面接に進むのに十分頭がいいかすでに判断している。だから電話面接の3番目のパートでは私の方が面接され、候補者はFog Creekを売り込まれる人であるかのようにして進めている。そして実際彼らは売り込まれことになる。
電話面接を通っただけでは採用されない。これは単に実地の面接をする時間と費用を節約するためにデザインされたフィルタにすぎない。そうやって候補者に国を横断して飛んできてもらい高級ホテルに滞在してもらう前に、決して採用されることのない人を取り除いておくのだ。しかしそれでもなお、電話面接を通った人のだいたい3人に1人の候補者しか、実地の面接を通り抜けることはできない。
(オリジナル: The Phone Screen)