HireRoot

ここからはじまる、エンジニア採用

失敗しないエンジニア採用その⑦:Google選考事例(海外編)

こんにちは。株式会社ハイヤールー代表の葛岡(@kkosukeee)です。毎週、失敗しないエンジニア採用についてオウンドメディアに記事を投稿しています。第七弾は優秀なエンジニアを採用する際に欠かせない選考手法の海外事例を、筆者の体験に基づき社内ノウハウ集よりご紹介します。

本記事ではテックジャイアントであるGoogleの選考事例について、筆者の2019年の体験談をもとにご紹介します。次記事ではFacebook(現Meta)の選考をこちらも体験をもとにご紹介するので乞うご期待下さい。

エンジニア採用に関わる人事の方、これからエンジニア組織を作っていく経営者の方などに参考となる記事になっていますので是非ご一読下さい。

(これまでの記事はコチラ👇)

Googleの採用プロセス

Google logo
誰もが知っているテクノロジー最強企業Google。憧れますよね

Googleのエンジニアリングポジションにおける採用選考は、ポジション問わず構造化されており、内容は候補者のバックグラウンドによって少し変わるものの、一貫としたプロセスとなっています。優秀なエンジニアを採用することを目的にしているのはもちろんですが、それ以上に優秀じゃないエンジニアを誤って採用(False Positives)しないことに徹底的に注力しています(エリック・シュミット著「How Google Works」より)。

もちろん技術には一切の妥協なしで、選考も大半がコーディング試験を占めています。選考にかかる期間は約2〜3ヶ月と、一般的な選考プロセスと比較すると非常に長く(ビッグテックでは一般的な長さ)、選考も後に説明するがかなりの時間を要します。以下、筆者が2019年時点で実際に受けたGoogle Japanのソフトウェアエンジニアポジションにおける選考をノウハウ集より抜粋いたします。

(以下ノウハウ集抜粋)

応募プロセス

LinkedInで直接リクルーターに連絡するか、それとも知り合いがいる場合はリファラルをもらう、またはリクルーティングサイトから応募することも可能(倍率は非常に高いので次のプロセスに行ける可能性が非常に低い点に注意)。紹介の場合等はそのまま次のプロセスに、リクルーティングサイトから応募するケースは運が良ければ次のプロセスに行けるという感じ。

Recruiter Interview

技術的なディスカッションは無し。リクルーターの人とこれから受けるであろうポジション(今回はソフトウェアエンジニアを例に取り説明)でどんなことをやるかなどのお話をする。ここで落ちる人はおらず、選考に進むか否かを候補者の人が決める。Hangoutで1回程度、必要に応じてフォローアップでもう一度行う。

Phone Interview

技術的なディスカッション。HangoutでGoogleのエンジニアと45分ほどGoogle Docs上で問題を解く。ここでかなりの数の人が落ちるが、それは後述するOnsite Interviewは候補者、面接官共に高負荷なため、この選考である程度スクリーニングする必要があるためである。海外の採用ではよくPhone Screeningと呼ばれており、アルゴリズムやデータ構造に関する問題が出題される。

Onsite Interview

Googleの最寄りのオフィスに行って丸一日(5〜6時間ほど)面談を行う。ランチを実際のGoogleのエンジニアと食べて雑談を交わしながら、Googleのカルチャーに触れつつ、4〜5セッションほどコーディング試験、システムデザイン、行動面接などを行い技術力やカルチャーマッチなどを評価する。

Hiring Committee Review

採用・不採用を判断する組織でHiring Committeeと呼ばれる組織が各部署にある(詳細はオフィシャルを参照)。4〜5名からなる組織であり、同じ部門のマネージャーレベルの人であればなれる。Phone InterviewとOnsite Interviewを通して各面接官のフィードバックや履歴書、職務経歴書や、リファラルの場合は社員の口コミなどをもとに送られるパケットをもとに多数決でなく、総意で採用を決める。面接などはなく、基本的には連絡を待つだけ。

以上抜粋でした。大枠は上記のようになっており、例えば機械学習のポジションであれば多少Onsite Interviewの内容が一般的なソフトウェアエンジニアの内容と異なるものの、選考プロセスは大きく変わりません。このような一貫して同じプロセスを通し属人化を防ぐ選考手法を構造化面接と呼びます。

Google面接体験談

筆者は2019年、LinkedIn経由でGoogleのリクルーターから声をかけられ、興味を持ち実際にGoogle JapanのソフトウェアエンジニアのポジションにApplyしました。その際の面接体験は非常に新鮮なものがあり、日本企業とは大きく異なるものでした(日本企業の事例は後記事でします)。ここでは筆者の実際の体験談をノウハウ集より抜粋しご紹介します。

(以下ノウハウ集抜粋)

応募プロセス

LinkedInからGoogle Japanのポジションに対するスカウトがあった。紹介されたポジションは自分にはあまりあっていない(MLエンジニアでありながら、インフラ系ポジションだったので)と思い、今回はパスでとの旨を伝えたが別のポジション(Software Engineer, Machine Learning)を紹介されそのポジションには興味があると伝えたところ別のリクルーターの方に繋いでもらえた。以下は繋いでもらった際のやり取り。

Googleリクルーターからの連絡
Googleのリクルーターからの連絡。ワクワクしたのを今でも覚えています

Recruiter Interview

Google JapanのリクルーターとHangout上で30〜45分ほど話した。内容は以下:

  • Google Japanでどのようなプロジェクトが動いてるか
  • 選考のプロセスと必要な準備の説明(とにかくコーディング試験の準備を促される

リクルーターの方は非常に協力的で、準備には時間がかかることをわかっているので、自分のタイミングで準備ができ次第連絡下さいと言ってくれた。おおまかなタイムラインは共有(準備のどのくらい時間がかかる、本業との兼ね合いなど)した上終了した。

その後具体的なタイムラインを共有し、選考に進む旨を伝えると選考の案内がリクルーターから送られてくる。驚くほどのボリュームであったが選考への負荷はかなりあるので、Googleの調べによるとこのくらいしないと高いCX(Candidate Experience)は実現できないとのこと。

Googleリクルーターからの試験準備メール
Googleのリクルーターから送られたPreparation Material。非常に充実していて助かった

Phone Interview

Googleコーディネーターからの連絡
グローバル企業のため、タイムゾーンなどを考慮した上日程調整してくれる人をコーディネーターという

LeetCodeで出てくるような問題が2つ出題された。1つは文字列を操作する簡単な問題。もう一つはある動作を最適化するためのクラス設計問題が出題された。どちらとも基礎を理解していたら解けるレベルで、ヒントをもらいながら2問とも解答した。

面接をしたGoogleのエンジニアはGoogle Japan?のエンジニアで英語で面接を行う。ヒントに対するレスポンスの速度や、リアルタイムに書いてるコードを見ながらメモをとって評価していた。Google docs上で行うため、採点などはなく、解く過程やコミュニケーションを元に評価していた模様。

全体のおおまかな流れは以下:

  1. 互いに自己紹介(約5分ちょっと)
  2. アイスブレイクの一問目(10分~15分ほど)
  3. 本題の二問目(15分~20分ほど)
  4. 候補者から面接官に質問(約5分ちょっと)

Hangoutでの面接が終わってから数時間後にリクルーターから連絡があり、合否が伝えられる。筆者は問題なく通過したため、今後のプロセスを話すために改めて一度Hangoutで15分ほど話し、Onsite Interviewの流れを説明してもらった。

Google phone interview preparation material
Phone Interview後の案内メール。これまたPreparation Materialが非常に充実している

Onsite Interview

Google onsite interview preparation material
Googleは一貫して情報の開示に徹底している非常に好印象なCXであった

当時最寄りのオフィスは六本木ヒルズだったため、一日有給を取り朝の10時頃に六本木ヒルズに到着し、コーディング試験3セッション、システムデザイン1セッション、Googlinessという行動面接1セッションを行った。

コーディング試験の内容はいずれもそこまで難しくはないPhone Interview同様の形式の問題だったが、システムデザインの問題でコミュニケーションに苦労した。以下に各種別の試験をざっくりまとめる:

  1. コーディング試験①
    1. 日本人のGoogleエンジニアと日本語でのオンラインコーディング試験
    2. 内容はさほど難しくなかったが、LeetCodeでは見ないような自作した問題が出題された
  2. コーディング試験②
    1. 海外のGoogleエンジニアとの英語でのオンラインコーディング試験
    2. 内容はさほど難しくないが、機械学習のポジションということもあり、少しML系のグラフ系の問題が出た
  3. コーディング試験③
    1. 日本人のGoogleエンジニアと日本語でのオンラインコーディング試験
    2. 少し難し目の問題で、LeetCodeでは見ない自作問題感がある問題が出題された
  4. システムデザイン
    1. 日本人のGoogleエンジニアと英語でのセッション(コミュニケーションがなぜか難しかった)
    2. よくあるオープンな問題(明確な正解がない)で、Googleの一部を作ると言った様な課題
  5. Googliness
    1. 日本人のGoogleエンジニアリングマネージャーの方との日本語での面接
    2. 行動面接なので過去の経験などに対する質問が多く、仮設的な質問はなかった
Hiring Committee Review

Onsite Interview後、数週間経った頃にリクルーターから以下のような連絡が来たため、別途15分ほどのPhone Callを設定。基本的に候補者は何もやることはない。リクルーターから最新のResume等を求められ、共有した後は待つのみ。電話の後、今回は期待に添えなかったとの旨を伝えられ次回是非半年、一年後にApplyしてほしい等とコミュニケーションをとり選考プロセスが終了した。

Google onsite interview failure
Onsite Interviewから数週間経った時点での連絡。この後落ちた旨を伝えられたがその後の対応も非常に紳士的でトータルして非常に高いCXだった

以上が筆者が実際に経験したGoogleの選考プロセスでした。トータルで約3ヶ月、非常に長いプロセスでしたが、それぞれ親切なリクルーターの方やコーディネーターの方のサポート、フレンドリーなGoogleもあり、候補者体験として非常に高く、満足度が高いプロセスとなっていました。

Googleの評価基準

コーディング試験3セッション(一回約45分)、システムデザイン1セッション、行動面接1セッションを通してGoogleはどの様な項目を評価しているのか、気になるかと思います。Googleは一貫した構造化面接を通し、技術力だけでなく、コミュニケーション能力や思考プロセスを評価しており、それぞれの試験で以下のように評価をしています。

(以下ノウハウ集抜粋)

コーディング試験

正しく解けるかどうかも大事だが、対話などを通してコミュニケーションや思考プロセスも評価される(Googleのリクルーターの解答が非常によくまとまっている)。項目は以下:

  • 問題解決力・思考プロセス
    • 問題を解くプロセスを重点的に見ている。(与えたヒントに対するレスポンスや、問題を建設的に解けているかなど)
    • 候補者は “Think Out Loud” を心がけているか。(黙々と解くのではなく、思考プロセスをちゃんと口に出す)そこから汲み取れる思考プロセスを評価
  • コーディングスキル
    • 実際にGoogle Docsやホワイトボードに書くコードをもとに評価する。正しい良いコードが書けているかなどを判断(コンパイルをして正解しているかなどは確認しない)
    • 愚直なアルゴリズムだけでは良くなく、その後どの様に最適化するか、どのようにエッジケースに対応するかなどまで確認
  • コミュニケーション能力
    • 思考力同様 “Think Out Loud” しながら面接官と適切なコミュニケーションがとれているか(エッジケースや、適宜疑問点などがあれば適切にコミュニケーションを取りながら建設的に問題を解いてるか否かなど)
    • 黙々と黙り込んで解いてしまう人は仮に完璧なコードを書いても落ちる可能性がある
  • アルゴリズム・データ構造知識
    • データ構造、アルゴリズムなど基礎的なコンピューターサイエンスの知識を問う項目。計算量を正しくBigOで解析・説明できるか、アルゴリズムのトレードオフを理解しているかなど
    • 二分木や幅優先探索など一般的なアルゴリズムやデータ構造に関しても問われる指標
システムデザイン

コードは書かずGoogle規模の大規模なシステムの知識を問うため、定性的に評価する項目が多い。この説明によくまとまっている。評価項目は以下:

  • コミュニケーション、リーダシップ
    • 会話をテックリードのように引っ張り、技術的なディスカッションをリードできるか否か
  • 大規模システム、分散システムに対するナレッジ
    • 過去に作ったシステムに近い文脈の問題を通して評価する。知識ベースの質問で候補者の大規模システムへの知識などを評価し採用後のグレードなどを左右する(Google規模の大規模なシステムを設計できる素養はあるか等)
  • 技術選定、トレードオフへの理解
    • システム1つ1つへの理解があり、技術選定のWhyの部分が正しく説明でき、リーズナブルな選択ができるかなど。例えばトラフィックがない状態からスケールするときにどこがボトルネックになって、その場合どのような技術を選定するかなどをコミュニケーションをとりながら説明する
行動面接

“Intrapreneurs” という言葉を使い、内部に影響力がある、受動的に動くだけでなく自分からリーダーシップをもってアクションを起こせるような人か否かを判断する。公式にある通り、評価項目は以下:

  • リーダーシップ
    • Googleでは受動的に動くだけの従業員は必要なく、自分から能動的にリーダーシップをもって、プロとして動ける人を探している。過去の行動に基づいて、Googleのマネージャークラスの人から質問がされる。
  • カルチャーフィット
    • Googleのミッションやバリューにフィットするか、自分の限界を理解した上で学ぶ姿勢があるか、能動的にアクションを起こせる人材なのかなどを行動面接から判断

これらの項目は選考を通じて評価され、45分間の面接のうちにそれぞれ評価される。最終的には六段階のスコアにマッピングされ、リクルーターはそれぞれの面接官から以下のスコアをもとに情報を集計しHiring CommitteeにResumeなどを含むパケットとして提出する。

  • Strong No Hire
    • このシグナルがでるとHiring Committeeにパケットが送られない事が多い一番悪いシグナル
  • No Hire
    • Strong No Hire同様、Hiring Committeeにパケットが送られない可能性もある悪いシグナル
  • Lean No Hire
    • どちらかというと採用しないほうが良い判断。再度試験を受けてより解像度を上げたりする可能性あり
  • Hire
    • Hiring Committeeにパケットは送られる。基本的に採用基準を満たしているのが、採用状況によってはStrong Hireが優先される
  • Strong Hire
    • すぐにでも採用したい人。まんべんなく良いスコアを取る人よりかは、どこかが尖ってる人が評価される傾向(よってStrong Hireは非常に良いシグナル)
選考を振り返って

以上が筆者の体験したGoogle Japanの面接でした。構造化面接を徹底しており、リクルーターの方、エンジニアの方も非常に情報もオープンで日本企業の面接と比較して好印象でした。また採用プロセスが一通り終わると、候補者にはアンケートが渡され、ひとりひとりの面接官を評価するなど、面接官も一貫してトレーニングされているというのにも好印象を受けました。

採用にはならなかったものの、候補者としても非常に学ぶものがあり、徹底した技術力に妥協しない姿勢もさすがGoogle様という感じを受け、よりGoogleに対する印象が良くなるような選考プロセスだったと振り返って言えます。ただそのまま他の企業でも真似することはできない部分もあるので、適材適所、参考になる部分を取り入れるのが選考プロセスを改善する上では効果的かと思います。

また冒頭にも書きましたが、GoogleはFalse Negatives(採用すべき人材を逃す)よりFalse Positives(採用しないべき人材を採用してしまう)ことを圧倒的に恐れています。これはエリック・シュミット著の「How Google Works」にもよく説明されていますが、False Positivesが企業にもたらす害は機会損失と比較して圧倒的に大きいためであり、選考プロセス全体を通しても徹底的にミスマッチを減らすという姿勢は印象的でした。

まとめ

最後まで読んでいただきありがとうございます。本記事では採用プロセス編の記事として、Googleの選考事例をまとめました。次回の記事では事例第二弾としてFacebook(現Meta)の紹介を実際の筆者の体験に基づいてご紹介いたしますのでそちらも乞うご期待下さい。

また弊社ではビッグテックも実践しているライブコーディング等やオンラインでのアセスメントを自動化するコーディング試験サービス『HireRoo(ハイヤールー)』を提供しています。もし読者の方で「選考時に候補者の技術力を測れない」、「過去にミスマッチが起きて、もう絶対起こしたくない!」等の課題を持たれている方がおられましたら、お気軽にお問い合わせください。それではまた来週!

HireRoo | コーディング試験で防ぐエンジニア採用ミスマッチ

HireRoo(ハイヤールー)コーディング試験で防ぐエンジニア採用ミスマッチ