Googleの採用面接から学ぶ、コーディング面接の重要性とは

筆者プロフィール

井上 真大(いのうえ まさひろ)

株式会社ミライセルフ 代表取締役技術者。

京都大学を卒業し、日本人として初めて、Google本社で新卒Software Engineerとして勤務。Software Engineerの面接官も経験。

エンジニア出身でない経営者や人事担当者の方に向けて、優秀なソフトウェアエンジニア(以下、エンジニア)の採用にどのように取り組むべきか、少しでも手助けになればと思い、この記事を執筆しました。

優秀なエンジニアを採用するべきなのか?

そもそも優秀なエンジニアとは?

優秀なエンジニアは普通のエンジニアの十倍、あるいは、百倍仕事ができると言われます。実際私自身も、エンジニアとして働く中で様々なエンジニアを見てきて、百倍はやや極端な例と思うものの、十倍、数十倍の差は優にあると感じます。

優秀なエンジニアは実現可能なことが多いです。優秀なエンジニアというのは単に何かしらの専門的な知識や技術を持ってるだけではなく、仮に自身の知らない技術や領域であっても、必要であれば勉強・理解して形にする、その遂行力と早さに長けています。

例えば「シンプルなホームページを作ってくれ」と言われてできないプロのエンジニアは少ないと思いますが、「ミーティングを録音するからそれを自動で文字に起こすソフトウェアを作ってくれ」と言われると、実現できるエンジニアというのは格段に少なくなることでしょう。

優秀なエンジニアを採用する理由とは?

仕事が早いことと実現可能なことが多いことだけが、優秀なエンジニアを採用するべき理由なのでしょうか。

私は、それだけが理由ではないと思います。もしそれだけの理由なら、必要なエンジニアを一部の優秀な人で構成し、残りは最低限できる人で開発チームを構成しても問題ないはずです。しかし、例えばGoogleもエンジニアが常に不足しているにも関わらず、厳格な採用基準を定め、それを崩さないでいるように見えます。

優秀なエンジニアを採用する理由として、ソフトウェア開発は本質的にチームワークであることが影響していると私は考えます。

ソフトウェア開発は、一部の人が開発する部分が完璧であったとしても、最終製品が動きすらしないということが当たり前に起こりえます。加えて、自分の仕事が他の人の仕事に影響されやすく、他の人の仕事を確認する必要もあります。そのため、一つのソフトウェアを分担して作る、というよりもメンバーと協同して作る必要があるため、チームワークが非常に重要です。

言うなれば、一文字でも誤字・脱字があれば開きすらしなくなるパワーポイントを多人数で同時に作成しているようなもの、とイメージしてもらっても差し支えありません。

そのような性質があるため、採用・管理する側としても、実際に現場で共に働くエンジニアとしても、単に向上心を持って自分より優秀な人と働きたいというだけでなく、できることなら自分とあまりかけ離れないレベルの人と働きたい、という思いがあります。この思いがよく言われる、優秀なエンジニアは優秀なエンジニアと一緒に働きたいという言葉につながるのではないでしょうか。

ソフトウェアにある僅かなほころびが、ソフトウェア全体に影響を与えてしまいかねないというソフトウェア開発の本質的な難しさがあります。そのため、エンジニアの採用には、若干名のスーパーエンジニアを採用すれば良いのではなく、全員のクオリティを担保する事がより重要になってくると考えています。

優秀なエンジニアを採用する方法とは

その答えは『コーディング面接をすること』だと考えています。

コーディング面接は、短時間で効率的により確実にエンジニアの実力を見抜く最良の方法でしょう。今までの開発経験や勤務年数、持っている資格などより、遥かに正しく実力を見抜くことができるのがコーディング面接です。例えば、野球の優秀なピッチャーを採用したいのに、実際に目の前で球を投げてもらわずに、出身高校や経験年数ばかり聞くということはないでしょう。

実際、Googleをはじめとした優秀なエンジニアを採用しているシリコンバレーの会社でコーディング面接をしていないところを私は知りません。それどころか、エンジニアの面接と言えばコーディング面接のみ、といった企業の方が多いくらいでしょう。

コーディング面接のもう一つの大きな利点は、コーディング面接をしているというその事実自体が、エンジニアにとって喜ばしいということです。

コーディング面接を実施している会社に対して、エンジニアは安心感を得られます。エンジニアの実力を見抜く最も良い手段がコーディング面接だということを会社が認識しており、エンジニアの技術力を重視している、きちんと実力で選ばれたメンバーが揃っているのだろうというメッセージとして、エンジニアは受け取ります。

エンジニアの採用のためには、ディスプレイや椅子などの環境を整えることが大切だとよく言われています。もちろん大切で重要だとは思いますが、優秀なエンジニアであればあるほど、そのような環境より、前の節で述べた理由で、共に働く仲間がどういったエンジニアであるかを気にかけることでしょう。

きちんとコーディング面接を通じて選ばれた仲間だ、というのであればそれ以上に心強いことはありません。一緒に働く仲間に比べれば、ディスプレイや椅子などは、決裁者にお願いする、最悪自腹で購入するなど、いつでもお金で解決できる、些細で重要度の低い問題に過ぎません。

繰り返しになりますが、コーディング面接をすることは、単にエンジニアの実力判断に最も適した方法であるだけでなく、実施しているということ自体が、エンジニアに対しての良いメッセージとなります。

選考方法は採用ブランディングにもなる

ソフトウェアエンジニアに限ったことではないと思いますが、特にソフトウェアエンジニアは経験年数や経験した業務だけで、真の実力を推し量るのが難しい職業だと思います。

しかし、コーディング面接はかなり高い精度で実力を推し量ることを可能にします。
優秀なエンジニアに対して、安心感を与えることも出来ます。

シリコンバレーのIT企業ではコーディング面接は常識となっており、私が知る範囲でも、日本で優秀なエンジニアを集められている企業の多くはコーディング面接を実施しているように見受けられます。

本記事を通して、少しでもコーディング面接の重要性が採用を担当・管理されている方々に伝われば幸いです。

スポンサーリンク