アメリカで久しぶりに転職活動をしたので、最近のアメリカのソフトウェアエンジニア採用フローについて何かの参考になればと思って投稿してみようと思います。
今回はFacebookやGoogleみたいな大企業から社員10名くらいの小さいStartupみたいな会社までかれこれ30社くらいは応募してみました。結果としては複数社からオファーをもらい、中規模の会社にいくことにしました。
背景として、
私はエンジニア歴は5年+で西海岸のIT企業で数年働いていて、今回はSenior Software Engineerのポジジョンで職探しをしていました。私自身はグリーンカードは運よく抽選に当たって保持していたので、アメリカ就職で一番大変なビザのことは知見がないのでここでは触れません。
0: 事前準備
ベイアリアでのエンジニアの面接はもはや受験みたいに形式化してきていて、事前準備に1〜6ヶ月くらい(特にLeet Code)かけている人が多いような気がします。
a) LeetCodeでEasy/Mediumの問題を200問+解いてみて、なまりきったアルゴリズム/データストラクチャーの知識をブラッシュアップする
- Hardも解けるようになった方が面接の突破率は上がりますが、今回はその時間がなかったので、Hardな問題に出くわしたら運がなかったものとして捨てることしました。
企業が新しい問題を出題する
=>その問題がLeetCodeに登録されて受験者が対策する
=>企業がより難しい新しい問題を出題する
みたいな誰得なんだというような循環があって、年々コーディング試験の難易度は上がってきているという一説もあるらしいです。
b) システムデザイン面接のフォーマットに慣れるために一通りこちらのサイトを読みこむ。
- 反省としては、上部っつらだけ理解するのではなくて、データがどう行き来するのかとか通信プロトコルとか他の選択肢とかトレードオフとかあらゆる質問を想定して、それぞれに対しての自分なりの回答を用意できるくらいまでに読みこむべきでした。
c) LinkedInとResumeのブラッシュアップ
反省として専門の人にレビューしてもらった方がよかった。
1: リクルーターとのアポどり
a) LinkedInやGmailで過去にメッセージがきていたらそこから返信する
b) 知り合いにリファラルしてもらう
c) LinkedInで直接メッセージを送ってみる
d) 企業のページから直接応募する(企業によっては機械的にキーワードがひっかからなかったら誰の目にも触れられずレジュメの山の中に消えていくなんてこともあるという噂もちらほら)
dは最後の手段で応募してから1ヶ月後にリクルーターから連絡が来るみたいなこともザラで、私の場合はa,bだと8割くらいの確率で何かしらの返信がきて、cだと4割くらいdは3割くらいの反応率でした。FANGの職歴(特にFacebookとGoogle)があればアポ取れる率は相当高くなるらしいです。
2:リクルーターとのカジュアルチャット
大体15分から30分ほどのカジュアルな会話になります。
簡単に今までの経歴を説明して、次の仕事に何を求めているのかを話します。
小さい企業だと、ここで応募するチームを決めて選考フローが進んでいきます。選考フローの説明がなくHiring Manager(応募するチームのエンジニアマネージャー)にGood Matchかみてもらうねと言われたら肌感5割くらいの確率でリクルーターからの連絡は途絶えます。。。
FacebookとかGoogleとかの大企業だと選考フローの説明されて、コーディング面接いつするみたいな感じでここでは選考していなそうでした。
3: コーディング面接(zoom/Google meet)
- どこの企業もほぼ同じフォーマットで、最初の5分お互いの自己紹介して、45分くらいでLeet Code easy/Mediumの問題2問くらいとくかHardな問題一問解いて最後の5分くらいで会社や面接官への質問するみたいな流れでした。
*私の記念すべきGoogle初受験は面接官にMedium/Hardな問題を出題されて、いい解法が思いつかずここで幕が降りました。
4:Virtual Onsite
この4問が大体テンプレでした。
- コーディング面接2回(1回当たり2問の出題)
- システムデザイン面接1回
- Behavior面接(Hiring Managerが担当する)1回
最近だと過去のプロジェクトのdeep dive(技術的に一番自分が誇りに思っているプロジェクトを紹介して、技術的なトレードオフや、なんでこの選択をしたのか、何がうまくいって、何がうまくいかなかったか、次やるならどうするか)やよりシニア向けの面接になるとリーダーシップ関連の面接(メンタリングや、チームを超えて組織のために主体的に行ったこと)が加わったり、バグが散らばったコードを渡されて、バグを一つずつ直していくみたいなより実務よりな面接をしてくれる企業もありました。
シニアソフトウェアエンジニアの場合はコーディング面接パスするのは前提の元、システムデザインとBehaviorのできでシニオリティが判断されます。(このできによってオファーの年棒が1.5倍から2倍くらい変わってくるのでとっても大切です。)
*面接官が彼女と喧嘩中なのが聞こえてきて、心ここに在らずという人もいれば、何かすごいいいことがあったのか終始ニコニコしていて一緒にペアプログラミングをしてくれる天使のような面接官もいて、面接官の調子にも左右されることもあります。
以上が、アメリカのIT企業での2021年版の大体のSenior Software Enginnerの採用フローになります。何かの参考になれたら幸いです。