新人プログラマーが使えない理由

次の記事

「Tumblrで共有」ボタン、ウェブサイト運営者向けに提供開始

誰もがその悪夢を経験している。新人の開発者がやってきて、歓迎しようとしても、彼1はこちらのペースについてこられないようだ。彼の発する質問からは根本的無知が暴かれ、ようやく出来あがった作品は、ひどすぎて、結局経験者が一から書き直すことになる。しかし、彼の面接官や人事部は ― もしあなたの会社がそんな官僚的パラサイトに寄生されているならば ― 平均以上、Aクラス、上位1%の人しか採用していないと主張する。

これは大きな問題だ、特に今。景気は上向きだ。毎日リクルーターから嫌がらせメールが来る。誰もが開発者を雇おうと必死だ ― しかし、開発者は代替可能ではない。優れたプログラマーの生産性は、容易に「並」の50倍になるし、ダメなプログラマーの生産性は最終的に「マイナス」にもなる。そんなのを雇うことは、どの会社にとっても悲惨な失敗だが、スタートアップにとっては致命的な会社キラーになり得る。では何故、それほどしょっちゅう起きるのか。

近代ソフトウェア工学に付きまとう多くの後遺症と同じく、結局これはMicrosoftの責任だ2。 彼らと誰もが秘かに仕事をしたがる悪の帝国だった頃、彼らの面接では「頭の体操」的質問が出されることが知られていた ― マンホールのふたはなぜ丸い? 。そして、もちろん大学の新卒者にはコンピューターサイエンス理論に関する質問をした。「二分探索[プログラム]を書きなさい」。

誰もがMicrosoftのようになりなかった。Googleでさえ、誰もがGoogleのようになりたいと思うまで(最近まで)はそうだった。そして、あの面接の伝説は続いている。Hacker News提供による面接に関する最近の記事を2本見てほしい。一つは入社内定者から、もう一つはGoogleの面接官によるもの。後者から目立ったものを引用する。「私は必ずしもこれがよい評価基準だとは言っていない」、「慰めになるかどうか、少なくとも今はナゾナゾ質問をしていない。あれは、特に侮辱的だった」

Googleが、彼らの採用アルゴリズムに問題があると気付いたらしいことは喜ばしい。修正されないのは残念だが。Jean Hsuの「技術面接に意味はあるか?」もご一読あれ。根本的問題は、今日の業界標準ソフトウェア面接に通るのに必要なスキルは、良いソフトウェア開発者に必要なスキルではないことだ。おっと、〈多少〉の相関はある、ただしそれはオークランド・レイダーズが毎年一番足の速い選手をドラフトしては、NFLが徒競争ではないという永遠の失望にかられるのと似ている。

実際にはもっとひどい。少なくともワイドレシーバーは走らなくてはならない、しかし、私は反論を恐れず保証するが、ソフトウェアエンジニアが入社後、二分探索のコードを書かなくてはならない場面は来ない。これは、石炭と鉄と炉とふいごを使って、鋼鉄の焼き入れと鋳造をするやり方を知っているという理由で、工事業者を選ぶようなもので、実際に知るべきなのは 1)最寄りのホームセンターの場所と、2)買ってきた鋼鉄ですべきことだ。

以前Joel Spolskyは、一般に会社は社員に二つの物を求めていることを正しく説明した。Smart and Gets Things Done[仮訳「頭と実行力」、訳書『ソフトウェア開発者採用ガイド』](学界にあふれているのは前者の持ち主であって後者ではない)。しかし、それ以前に一つ必要なことがある「全くの無能ではないこと」。みなさんは、技術系面接に全く能力のない人物が多勢現れることに驚くだろう。Googleの二分探索は、彼らにとってのFizzBuzz ― 低く設定された足切り用ハードル ― なのかもしれない。しかし、FizzBuzzには、面接本番が始まる前に5分間必要だ。

では、本物の面接はどうあるべきか。私から謹んで提案をさせていただく。「業績のない人物を面接してはいけない。絶対に」資格や学歴は業績ではない。つまり、現実のユーザーのいる現実のプロジェクトのことだ。Google App EngineとAmazon Web Serviceの無料版があり、$25出せばAndroidデベロッパーに登録してAndroid Marketでアプリを配布できる今、ソフトウェア開発者がサイトやアプリやサービスを指して「私がこれを作りました、全部一人で!」と言えない〈言い訳〉はない。

旧来のシステムは、限られた情報に基づいていた ― 応募者についてわかるのは履歴書だけだった。しかし、業績のある人だけを面接すれば、ずっと広い範囲から人を選べる。FizzBuzzなどやめ、面接者に自分のコードと設計思想を説明させ、今だったらどう作るかを聞く。目の前で1つか2つ機能を実装させて、実際にどう動くか、どのように考えて作業しているかを見る。それこそが技術面接で知りたいことだ。古典的アルゴリズムやデータ構造をどう理解しているかではない。世界は前進しているのだ。

1私はここでは意識的に性差別者になっている。なぜなら、私の経験上コードを書く女性は一貫して優秀だから。

2Bill Gatesがメガ億万長者であることは気にしていない。彼は本当に面白いことや革新的なことをたくさん成し遂げてきた。私が気にするのは、多くの取るに足りない人たちが彼の威を借りてミニ億万長者の地位を得ていることだ。例えば、ハンガリアン記法の発明者。おそらくあれは、この分野で広く普及したものの中で史上最悪のアイディアだ

[原文へ]

(翻訳:Nob Takahashi)
Featured Image: scyther5/Shutterstock