Jeffsuke is not a pen.

🏊‍♂️🚴‍♂️🏃‍♂️💻📱

サンフランシスコで転職活動をしました

f:id:jeffsuke:20151127023424j:plain

要約

サンフランシスコで hired.com を主に用い、ニューヨークの会社から、転職しました。RedditHere’s How to Prepare for Tech Interviewsという記事を参考に、技術面接への準備をし、大小様々な企業20社程を受けて、自分のミッションとマッチする会社を見つけました。

背景

ニューヨークにある会社で働いていたのですが、諸々の事情があり転職活動をすることになりました。*1

アメリカでの一般的なソフトウェアエンジニア採用プロセス

アメリカでの一般的な採用プロセスは以下の通りです。

  1. レジュメのスクリーニング
  2. 人事との電話面談
  3. 技術者との電話面接(1~2回)
  4. オンサイト面接

人事との電話面談は、志望動機や過去の経験を聞かれます。会社の求める人材との最低限のマッチングを確認している場合が多いです。 技術者との電話面接は、電話で会話しながらオンラインのコーディングツール等を使って問題を解く場合がほとんどです。4~8時間で終わるような宿題が出される場合もあります。

オンサイト面接は、実際にオフィスに出向きフェイストゥーフェイスで行う面接です。4~6時間と長丁場であることがほとんどで、一般的には3回のホワイトボードコーディング、1回の一般的な面接が行われます。

採用までの道のり

アメリカでの採用活動と日本の採用活動は、外国人であることを差し引いても、私の肌感覚からすると大きく違うものでした。常に競争の激しさにさらされると感じました。ただ、ちゃんと準備をして挑めば不可能ではないということもわかりました。

就労ビザ(H-1B)や、グリーンカードを持っていないと、よほどのスタープレイヤーでないと面接すらしてくれないことがほとんどです。

約一ヶ月半の転職活動

実際に転職活動を始めてから仕事が決まるまでは、約一ヶ月半から二ヶ月でした。

* 1週目:応募
* 2週目〜5週目:人事面接+技術面接
* 6週目〜8週目:オンサイトインタビュー

転職活動自体にとにかく時間がかかりました。また、創業間もない小さい会社を除き、人事が時間外に面接をしてくれることは非常に稀なので、スケジューリングがとても難しかったです。私は、 Calendly を使い相手企業側に時間を選んでもらうことで解決しました。

応募編

まずは、レジュメの準備からです。レジュメとCVは違うらしいです。レジュメは一般的には1ページで収まる自分の経歴のまとめで、CVは数ページにわたる経歴のようで、長いものがCVという説明も目にしました。人によっては、レジュメを会社によって書き換えるそうですが、iOSエンジニア職にしか応募しなかったので私は同じものを使いました。

次にポジションに応募します。

最も効果が高かったのが、知人の紹介です。日本でもそうですがリファレンスがあると、書類選考を飛ばせるので先に進める可能性が一気に高まります。 次に効果があったのは、hired.com というスカウト型のテック業界向け求人サイトです。自分の基本情報を入力すると、興味を持ってくれた企業から声をかけてもらえる仕組みになっています。ただし、グリーンカード就労ビザといった、アメリカで就労できる権利を持っていることが条件になっていることが多いので注意が必要です。

この hired.com で会社は、居住地域をもとに、人材を探すそうです。引越しを考えている人には注意が必要です。 最も効果がなかったのが、企業のWebページからの応募です。正直に書くと、この方法では一社も選考を進めることができませんでした。

人事面接

書類選考を通過した後の志望動機などの基本情報を確認する場です。これは電話で行われます。

大体の場合以下のテンプレートで会話が始まります。

人事 「こんにちわ、〜〜さんですか?」

私「はい」

人事「調子はどうですか」

私「いい感じですよ。そちらはどうですか。」

人事「はい、良いです。今お時間大丈夫ですか?」

私「もちろんです。」

人事「では、あなたについてお話ししてください。」

私「はい。私は。。。」

日本語にするといたって普通の会話なのですが、日頃人と会話をしないエンジニアである私は慣れるまで時間がかかりました。過去のプロジェクトから使えるネタを数個用意し、数分で話す練習を繰り返しました。また、3分くらいの自己紹介は、面接を繰り返していくうちにアップデートされていきました。

技術面接

技術者としての力が試される技術面接です。基本的には、イントロとしてiOS の基本知識を10分程度確認し、40分ほどコンピュータサイエンス(CS)関連の問題を解き、5分のQandAセッションがあります。

特に難しいのが、CS関連の質問。データ構造、アルゴリズムについての問題を出されて、Google Docsのようなオンラインのテキストエディタを使ってコーディングします。オートコレクションはなく、シンタックスハイライトもない場合があるので、実際にプレーンテキストエディタを使って練習するのがいいです。 RedditHere’s How to Prepare for Tech Interviewsという記事が準備をする上で必要な内容をリストアップしていて便利でした。ここにリストアップしている内容について最低限理解している、できれば実装もできる状態になっているのが理想的です。

学習に関しては、 CoderustCracking the Coding Interviewを使いました。私はデータ構造やアルゴリズムの勉強を本格的にしたことがなかったので。Coderustの良いところはビジュアルでアルゴリズムを説明してくれている点です。類似サービスに、 Interview Cake もありますが、お値段が高めです(さらに個人的にはCoderustの方が好きだった)。

練習に最適なのは、LeetCode Online Judge。これは、コーディング問題がリストアップされているオンラインフォーラムで、出題された有名企業がタグされていたりもします。実際にコードを実行できるので、便利でした(swiftにも対応)

オンサイトインタビュー

会社にもよりますが、約4時間の技術面接とランチ面接が基本です。問題の難易度は、電話技術面接と大差ないことが多いです。一番の違いは、ホワイトボードを使うこと。簡単に修正ができないので、ボトムアップではなくトップダウンでコーディングをしていく必要があります。

ここら辺のテクニックに関しては、 Cracking the Coding Interviewや著者の講演等を聞いて対策を練りました。私は基本的に、疑似コードからはじめ、メソッドを定義、面接官と会話をしながら必要に応じてメソッドの内部を実装するという方法をとりました。

感想とか

スタートアップのメッカと言われるだけあって、サンフランシスコは革新的なことに取り組んでいる人や会社に出会える可能性は高いなと感じました。世界中から優秀な人材が集まっているので、その競争の激しさを肌で感じることもできます。

仕事探しやカルチャーフィットという意味では、言語や環境の違いはあれど日本での転職活動と変わらないと感じています。不思議と、「いいな」と思う会社の選考は順調に進み、「何かイマイチだな」と思う会社は最終面接までほとんど行きませんでした。

アメリカで働くには、競争の激しさのみならず、就労ビザという高い壁があります。エンジニアとして世界の最前線で働く選択肢などに詳しく書かれていますが、基本的にビザがないとアメリカで転職するのはハードルが高いです。

個人的には、アメリカである必要はないけど海外で働きたいという人にはベルリンをお勧めしたいです。技術者は比較的ビザが出やすかったり、物価もアメリカと比べてとても安く、住み心地も抜群です。ベルリンでの転職活動についてはベルリンにて転職しました。 - zakisan’s blogが良かったです。

その他メモ

  • とある大会社でシニアエンジニアのポジションに応募したら、5年以上の経験がないとシニアと認識できないと言われた。
  • 紹介された中規模のスタートアップに二度も予定をドタキャンされた。
  • 感覚として、シードラウンドのスタートアップ、シリーズAのスタートアップ、急成長中のスタートアップ、大企業の4カテゴリで雰囲気が大きく変わる。急成長中のスタートアップは、人材の質にばらつきがあったりと、面接中にも成長の痛みが垣間見えることがあり辛い。
  • 今注目のテキサス州Austinの企業にも応募したんですが、イノベーティブな会社はサンフランシスコやニューヨークに多い印象です。Austinは住みやすくて、良い街なんですけどね。
  • 英語力に関しては、国際企業で英語を主言語として働き、エンジニアとして口頭の議論ができていれば問題はないと思います。それよりも、普段使わないようなコンピューターサイエンスの基本知識が私はネックになりました。
  • アメリカでの転職を考えている人は、エンジニアとして世界の最前線で働く選択肢という書籍がオススメです。より包括的に書かれています。

まとめ

一ヶ月半普通に働きながら職探しをしていたので、疲れたというのが正直な感想です。

国内に時差があるので、基本的にニューヨークに滞在しながら、サンフランシスコやオースティンの会社と面接するだけでも割と大変でした。

国外で働いてみることは、新しい価値観に触れる一番の機会だと思っています。また、現地の企業で働くことは、日系企業の海外支社で働くのとは大きく違うと思っています。どちらも良い点悪い点があるので、どちらの意見も聞いてみるのが良いと思います。

そして、海外で働くという意味では、ベルリンなどの移民受入れが盛んな地域の方が個人的にはオススメです。

*1:私は婚約者がアメリカにいるのでアメリカに残りたかったのですが、前職のエンジニアリングチームが本格的にベルリンにオフィスを移転することに決定したため。