アメリカ西海岸におけるプログラマの採用は一般的に以下のような流れになります
- まずリクルータと電話をして応募条件にマッチしている人材かチェックされます。
- 1.を通過すると、エンジニアと電話でCoding Interviewというものを行います。Coding Interviewは、コンピュータサイエンスの教養があるかをチェックするためのテストで、Google Docsのようなブラウザ上でテキストを共有できるサービスを使って、電話で会話をしながらプログラムを書かされます。
- 2.を通過すると、実際に会社に行き2.と同じプロセスを4、5人のエンジニアと繰り返します。違いはGoogle Docsの代わりにホワイトボードを使うだけです。
- 3.を通過すると、採用になります。
Coding Interviewの出来が99%で学歴は関係ない
私が出席したことのある採用決定の会議で、出身大学や博士号の有無が話題にあがったことはありません。
私も過去に何人も面接をしましたが、彼、彼女らの学歴が採用の決定に影響を及ぼしたことはありません。
すべてCoding Interviewの出来不出来が採用かどうかを決めます。
つまりCoding Interviewをそつなくこなすことは、採用されるための十分条件です。
したがってここさえしっかりすれば、学歴など過去のバックグラウンドに関わらず採用してもらうことができます。
逆に言えば、(個人的には悪しき習慣だと思いますが)優秀なプログラマであっても、Coding Interviewがうまくこなせないと採用されないとも言えます。
Coding Interviewの具体的な対策
ある意味バカバカしい感じがしなくもないですが、受験勉強と同じと考えた方がやりやすいと思います。
つまり能力の高いプログラマでも、どのような問題が出るか傾向を知っていないといい結果を残すことは難しいということです。
特にGoogleやFacebookなどの人材をえり好みできるソフトウェア大手は、採用において機械学習や自然言語処理などの特定スキルよりも、ジェネラリストであること重視するので、コンピュータサイエンスの基礎的な知識をテストをしてくる傾向にあります。(逆に特定のスキルを売りに就職したい場合は、即戦力を求める傾向のあるスタートアップの方が向いているかもしれません。)
これはコンピュータサイエンスと工学の基礎的な知識がある人は、どんな新しい分野が登場してもそれらに対応できるという考え方からです。
実際にGoogleやFacebookは、リクルータとの電話面接を通過すると、Coding Interviewに使われる問題が多数掲載されたウェブサイトを紹介してきます。
そして「これらを勉強し、準備ができたと思ったら改めて連絡してください」と伝えてきます。
つまり対策をしてきていることを前提に面接をするので、準備なしで面接に臨んでもいい結果にはつながらない可能性が高いです。
準備に関してですが、それら無料で提供されるウェブサイトよりも以下の本が断然おすすめです。
(なか見!検索で、Coding Interviewの具体的な問題をチェックしてみてください)
似たような本は何冊かあるのですが、掲載されている問題が簡単すぎるものが多く、逆にこちらの本は実際には面接で聞かれないような難しい問題も並んでいるのがいい点です。他の本は必要ありません。
私は以前はCoding interviewをうまくこなすことができなかったのですが、こちらの本に載っている問題を全て解けるようになるまで練習したところ、どの面接に言っても問題なく対応できるようになりました。
またこちらの本は、コンピュータサイエンスの学位を持っている人が知っているべき内容が網羅されているので、プログラマになりたい人の独学用の本としてもおすすめです。
こちらに載っている問題がすべて解けるようになれば、あなたはコンピュータサイエンスの修士号取得レベルの知識があると堂々と言って構わないと私は思います。
こちらの本はC++だけでなくPythonやJavaのバージョンもあるようなので、C++よりもこれらの言語の方が得意な方はこちらの方がいいでしょう。
(まあまあのCoding Interviewの出来 + 既に働いているエンジニアの推薦)でも採用される
すべての面接官の出題するCoding Interviewを文字通り制圧すれば、あなたは採用されるでしょう。
しかし採用かどうかのボーダーラインの場合は、既にその会社で働いている人の推薦が非常に効いてきます。
Coding Interviewは実務とは異なった状況下でのテストなので、実務能力やコラボレーションができる人かどうかの見極めはあまりできません。
そこで知り合いの推薦が採用の鍵となります。
そのような知り合いの多くは元同僚なので、職場では友好的かつ協力的に日々真面目に仕事をこなすことが将来のいいポジションにつながります。
そういう意味では日々の地道な積み重ねもとても大事です。