就活メモ2022-03-31Tech/career/life大手テック企業でのエンジニアポジションを狙って、4ヶ月くらい就活してました。ヨーロッパ・カナダ・日本のポジションに応募。全滅しましたが、なんとか希望のポジションでオファーを獲得でき、APACチームで働くことになりました!(しばらく生き残れたら入社ブログを書くかもしれません)どなたかの役に立つかと思い備忘録をまとめておきます。私見なので内容の正確性はご容赦ください。海外大企業就活の雰囲気#海外の大きい企業の面接、またそれを参考にしてプロセスを作っている企業の面接は似たような形式に則っているので、一度その面接対策をすれば他社での面接にも大部分を流用できます。この面接形式では、実務で使うスキル以外も見られます。実務とオーバーラップする部分ももちろんありますが、実務関連が5割、それを30mや1hのインタビューに凝集してアピールするスキルが残りの5割、といったイメージです(体感値)。後者の面接用スキルの準備に時間がかかります。準備においては、過去の面接事例の情報収集が大事です。インターネットにはつよつよ人の就活記がよく公開されてますが、自分とスペックが違いすぎると参考にならないので、自分のレベルに合った準備のやり方を考えていく必要があります。つよつよ人だったらここまで準備せずにオファーもらえるかもしれませんが、凡骨には凡骨の戦い方があります。以下説明していきます。call(ポジションについての説明や、そもそもビザや居住地など応募資格があるか見られる)コーディング試験(システムで実施することがほとんどだが、面接官とペアプロの場合もある。面接で評価される項目と、それをみられるタイミングはこんな感じだと思います。過去の経験と応募ポジションのマッチングスクリーニング時。プロジェクトでの課題解決エピソードなどから見られる。データ構造とアルゴリズムのコーディング力コーディング試験時。LeetCodeやCoderRank、Codilityなどのプラットフォームで実施されることがほとんどだが、ペアプロの場合も。CS力(UNIXやインターネットの知識、基本的なOOPなどを雑にまとめた何か)技術面談時。ネットワークやサーバーの仕組みを理解して説明ができるか、InheritanceとCompositionの違いを理解しているか、など見られる。システムデザイン力システムデザイン面談時。Twitterを作るとしたらどうするか?といったばっくりとした質問から始まる一連のお題に対して、それらを解決する(解決できなくとも、少なくとも矛盾のない)システム構成図を書く。パーソナリティとカルチャーのマッチング行動面接時。受け答えがロジカルか、過去のプロジェクトで建設的な判断に基づいて行動してきたか、などが見られる。チームメンバーと上手くやれそうかなども見られる。こちらのブログで書かれているようなことはもちろん、テクニカルタームは一通り抑えておくべき。Seniorなど上位ポジションだと、メンタリングやプロジェクトリードの経験なども問われる。逆算してその辺の経験を積んでいくべきなんだろうなぁ。余談だが、SREのポジションの面接では、プロダクション環境でのトラブルシューティングの経験やSLO策定に関連したエピソードなどに加え、UNIXコマンドやプロセス、ネットワークあたりを深掘りされた。attackなどセキュリティ系も。全般的に浅い理解のためうまく説明できず、無事落選。TerraformやKubernetesなどのハンズオン経験には多少覚えがあったが、求められるスキルと完全にズレていた。やったこと#LinkedInのステータス変更リクルータの目に止まるように、仕事探し中のステータスにする。希望する国や働き方などちゃんと設定。職歴をそれっぽく英語で書き直す。応募用CVを綺麗に作る。来たスカウトメッセージに返事する。するとメッセージが増える、リクルータ側の検索で上位表示になる?(返信数がアクティブ率スコアの計算に加味されてそう)その他の求人サイト登録。Honeypotは具体的なスカウトが多く、非常にいいサービスだった。各種エージェントなど。面接対策そもそも募集要項と自分のスキルや職歴が合致してないと書類通過しないので、合ったポジションを探す。なかったら、行きたいポジションにつながるようなスキルと職歴を積んでおくか、大学院入ったりする?アルゴリズムやCS力はすぐに身につかないので勉強(後述)。基本的な面接での受け答えの準備。頻出質問リストなどはすぐ検索でヒットするので、『〜な時、あなたはどう対応しますか?過去の経験を踏まえて教えてください』系は100個くらい考えておく。STARメソッドはとても学びになる。多くの企業では何度も同じポジションに応募できるが、一度落選してから再受験までの期間は半年〜1年と長めに設定されている。一度失敗するとしばらく受けられないので、応募までにしっかり準備しておく。企業のホームページやポジションの募集要項はもちろん読んで質問リストを作っておく。技術スタック、開発スタイルやチーム構成、直近のプロジェクトなどなど。面接官の名前がわかったらLinkedInで軽く職歴など見る。元ソフトウェアエンジニアのリクルータなら技術の話がしやすい、話せる自然言語など共通の話題があったらアイスブレークしやすい、など事前準備ができる。個人的には、顔を事前に知っておくと落ち着いた。大きな企業の場合、GlassdoorやReddit、個人ブログ、Youtubeなどで選考過程について情報が出回っているので、情報収集して対策を立てる。初期時点でここに時間を割いておかないと、書類選考は通ったが次の面接の準備が間に合わない!なんてことになる(なった。落ちた)アルゴリズム力とCS力の勉強とても苦手、LeetCodeのEasyも怪しいレベルからスタートしたのでかなり時間がかかった。けんちょん本を読んで写経。自分のレベルが低すぎて説明が飛躍しているように感じた部分も多いが、とりあえず写経。写経が済んだら、leetcodeを解き続ける。回答のコードを読むと学びが多い。有料課金したくない場合は、問題名でググると誰かしら動画やコードをアップロードしているので探す。回答は玉石混交なので注意。下記リポジトリにはかなりお世話になった。https://github.com/haoel/leetcodeleetcodeを上から解くのでなく、体系的に学べるように問題を探す。100問くらい解いたらそこそこ書けるようになった気がする。30分以内にLeetCodeのMediumが解けるくらいが目安。Planコーディングテストのプラットフォームごとに、出題傾向や期待されるI/Oが異なることも。LeetCode以外にも慣れておくとよい。自分のIDEが使える面接もあるので、補完など設定してしっかりローカル開発環境を作っておく。ペアプロが面接に含まれる場合は、何回か練習すると落ち着く。ペアプロ面接動画もYoutubeにあるので、まずは観て雰囲気を掴む。オンラインで無料のペアプロ練習サービスとしてPrampなどがあるが、ちょっとヒヨって使わなかった。以下のようなペアプロ動画まとめもあるので、このへんを見ると雰囲気が掴める。システムデザイン動画や教材が多い。出題傾向もある程度決まってる感じがあるので、Twitterとか有名どころのアーキテクチャなどは抑えておくと良さそう。別に決まった答えがあるわけではないし100%その通りの回答ができるはずもないので、論理的に矛盾のない構成を目指すくらいが現実的か?自分の場合は実務でよくやってたので、あまり勉強せずに行けた。検索するといろんな人が動画出してるので、いくつか見ておくと学びになる。慣れてきたら、お題になるサービス名を見て実際に自分でシステムデザインして、後で動画の内容と照らし合わせてみるとか。1ヨーロッパ・カナダはほぼ書類すら通らず壊滅。ビザサポートできないからお断りのケースもありましたが、いきなり大企業に応募する厳しさを思い知りました。応募継続したものの、見込みがなさすぎて日本での就活にシフト。ドイツやオランダのスタートアップからはそれなりに声がかかったので(~シリーズB付近)、スタートアップならオファーまで至ったかもしれません。コロナ下で家族ありでの転職だったのでリスクが大きいと判断し、いずれも選考を辞退しました。1馬力では家賃と税金的に生活が厳しそう(外国人をするのは金がかかる)海外移住なんて平時でも大変なのに、有事に役所手続き・引っ越しほか、生活基盤作りをやり遂げる自信がなかった。スタートアップでは生活支援が弱い。渡航時の世界情勢が予測できない。結果論にすぎないが、今の情勢を見るにヨーロッパは止めておいて正解だったと思う。弱腰だったかもしれないですが、長期で海外生活するなら高収入&バックアップが強い環境がベターというのが、過去2回の1年以上の海外暮らし経験からの学びです。ヨーロッパ・カナダで全滅した振り返りとしては、仮説レベルですがCVのクオリティが低い。単純に経験・スキル不足。話を聞いてもらえるだけの経歴を積んでない。大企業の求めるスキルセットになってない。薄く広くできるというスキルセットは、スタートアップや新規事業チームには刺さるが、専門性が足りない。移住コストや各種手続きの点で、外国の人間は忌避されがち。同一タイムゾーンでのリモート採用枠が多かった印象。今後のエンジニア人生に生かします。スカウトで声をかけてもらえた国自体は、2年前に就活した時よりだいぶ増えました。日本、オランダ、マレーシア、ドイツ、シンガポール、カナダ、イギリス、タイ、ベトナム、UAE、スウェーデン、エストニア、インド、スイス、スペイン、オーストラリア、フィリピン、アメリカあたりが今回声かけてもらった国です。進捗が見られて普通に嬉しかったです、働き口が多いのはいいこと。まで1ヶ月かかることもザラにある。長期戦に備えて、体調・メンタル管理など意識的に取り組んでおく。同時平行で受けられるインタビューは4つくらいが限界。面接慣れしてない初期は2つくらいに制限し、準備や問答対策に時間とった方が後々役に立つ。実務から離れると、面接力以外のスキルが痩せ細っていくし、当時のエピソードの記憶も薄れていく。就活のみにフォーカスできるのは3ヶ月くらいが限度?金銭的・社会的な不安なども含めて。全体的にCS力のなさを痛感した。海外リモート大学院やら社会人博士やらを真剣に検討する必要がありそう。何かオススメあれば教えてほしい。近傍タイムゾーンでのリモート採用が一般的になっている様子。ヨーロッパで、オフィスのある国から+-3時間の時差内の居住者なら応募可、といった採用枠が多く見られた。ビザサポートありで海外現地就職を狙うなら、フルリモートNGの企業や、APACのタイムゾーン内に拠点を持たない企業を探す方がいいのかもしれない。オファー時の交渉も大事らしい。opensalaryなどを事前に見ておくと良さそう。今後の見通し#日本ではエンジニアの絶対数が少ない上に雇用流動性の低さもあり、多国籍開発チームの話をちらほら聞くようになった。多国籍チームでの就労経験やマネジメント経験は、今後高く評価されていきそうな予感。ゆかり(@yukari_erb)|note“日本語しかできないならば、日本人特有のバリューを発揮せよ。なくばグローバルのIT人材に匹敵する英語とコンピュータ・サイエンスのスキルを持て。いう時代が、本当にすぐそこまでやってきていると感じるのです。”特にここには共感、ベトナムで働いた体感にも近い。英語と母国語が話せるミドルレベルのエンジニアくらいなら、マジで世の中いっぱいいる。フルリモートのICでこの先食っていくなら、近傍タイムゾーン内での自身の市場価値を考えて行く必要がある。あたりが同じ市場になりそう。つよつよ人はどこにでもいる。他地域・他国に居住地を移せるというオプションを常に持っておきたい。日本で10年後に幸せに働けるのか、いろいろ思うところがある。なんとか言ってみましたが、こんな自己中打算的な考えをかなぐり捨ててチャレンジできる準備はしておきたいです。始めてみたので、こちらでも対応できるように頑張ります。最後に欲しいものリストを掲載したいところでしたが、もしそのようなお気持ちがあればこちらへどうぞ。ウクライナ緊急:避難を強いられる家族に人道支援が急務です|国連UNHCR協会その他、参考になった記事一覧です。あるんですが引用が大変なのでこのへんで。