自分がカナダ・バンクーバーに移住することを考えていた時に色んな人の経験談を読んでいたのですが、それぞれ皆バックグラウンドが違うことで参考になる情報が意外と少ないことに気がつきました。子供の頃に移住していて永住権を持っている人や、会社の駐在員として他国へ渡った人など色んな人がいますが、完全にゼロから海外に移って働き始めた人の話というのがなかなか見つからなかったのです。
いつか僕と同じことをする人がいる時の助けになればと、自分が体験したことや試行錯誤したことをまとめてみようと思います。対象読者として、以下のような人を想定しています。
- ある程度のエンジニアリングキャリアがあり、スキルもあることを自負している
- ずっと日本で暮らしていて、海外に移り住んで自分で仕事を探そうと思っている
- 日本で生まれ育っている(留学経験がなく、帰国子女などでもない)
また、僕はカナダ・バンクーバーに住んでいてアメリカ・サンフランシスコの会社の支社で働いているので、基本的に北米圏の話をします。
何か質問などがあればTwitterか、コメント欄からもらえれば順次返信します。
職探し
エンジニアとして移住する以上、まず最初に話すべきトピックは仕事探しです。ポジションを見つける方法は日本とまったく同じです。各社それぞれのWebサイトで求人情報を載せていますし、リファラル採用がより好まれるところも同じです。
いくつか僕が活用していたWebサイトを挙げておきます。
北米のスタートアップの求人情報といったらここです。LinkedInやIndeedにも求人情報はありますが、AngelListはよりテクノロジー分野に特化しているぶん、より魅力的な企業を見つけやすいです。
会社で働いている/いた人の会社に対するレビューが見れます。レビューの多い会社だと実際の給与レンジも見ることができるので、気になる人は応募する際に一度目を通しておくのをお勧めします。
テックミートアップ (勉強会) はこれらのWebサイトで告知されています。リファラル採用は依然ベストな採用手段です。テックミートアップに参加して、興味のある会社の人がスピーカーとして登壇していれば直接声をかけてオープンなポジションがないか聞いてみましょう。
北米でLinkedInのアカウントを持っていない人はいません。サービスの性質は日本のWantedlyと似ていますが、規模と認知度がまったく違います。 LinkedInのアカウントは必ず作ってください。北米ではビジネス的なコネクション (テックミートアップで出会った人との連絡先交換など) にはFacebookでもTwitterでもなくLinkedInが使われます。また、職歴などのプロフィール情報を充実させるのも忘れないようにしてください。リクルーターからスカウトメッセージが勝手に飛んできます。
必要な書類
北米の採用プロセスでは決まった書類フォーマットはありません。履歴書がコンビニで売っていたりもしません。自分で自由に作って自分をアピールすることができます。ただし慣習的に、レジュメとカバーレターという2つの書類を求められます。
レジュメ
レジュメは日本の履歴書の役割を担うものです。学歴や職歴、自分が持っている資格などを記載しますが、主観的な情報を加えてもかまわないとされています。会社に応募した後、その会社のテクニカルリクルーターや人事担当者がレジュメを見て連絡するかどうか判断します。
ここでいうテクニカルリクルーターとは、会社の内部でエンジニア採用にまつわる専門的な業務を行う人のことです。日本と違って、北米ではスタートアップでも人事の担当者とは別に技術職専門のリクルーターを抱えていることがよくあります。
言うなれば レジュメはあなたをプロダクトだと見立てた時のランディングページです。 リクルーターがレジュメをきっちり読みこむのは「目に留まった後」です。目に留まるように必要な情報を適切な方法で盛り込む必要があります。情報設計や認知心理学などの知識がある人はその知識を活かすことをおすすめします。詳しいレジュメの作り方は別のページで解説します。
カバーレター
カバーレターは手紙のようなフォーマットで、文章で自分を売り込むものです。
- 自分が会社のどのようなところに興味を持っているか
- 自分が会社でどのような活躍をできるか
- なぜ自分がその会社にとって必要なのか
といったことをアピールします。ただし、昨今ではこのカバーレターを求める会社が少なくなってきています。情報としてレジュメにある内容が包括的なのと、そもそもエンジニアの採用市場において売り手が強いのが理由だと思います。エンジニアとして職を探す以上、あまりカバーレターのことは気にしなくていいと思います。
面接の対策
電話
北米では必ずと言っていいほど、面接プロセスが電話でのスクリーニングから始まります。このスクリーニングとは面接プロセスに進む前に候補者のことを軽くチェックしてフィルタするもので、会社のインハウスリクルーターやエンジニアリングマネージャーが行っています。一般的に以下のことが聞かれます。
- 自己紹介 (ほぼ必ずと言っていいほど求められます)
- レジュメに書いた職歴への深堀り
- 会社でコアとなっている技術への経験や理解度
- 会社の文化について紹介され、『こんな感じだけど大丈夫?』という確認
- 『オフィスがドッグフレンドリーだけどアレルギーとか無い?』と聞かれたこともあります
- 期待される雇用条件の確認(たまにこの段階で質問されることがあります)
言い換えると単なる「事前チェック」のようなものですが、英語が苦手な人はここで引っかかります。僕も職探しを始めた最初の頃はこのスクリーニングで止まってしまって先のプロセスに進めなかったことが何度かありました。簡単にできる対策としては、次のことを試してみてください。
- 必ずヘッドセットを用意して、両手が空くようにしておく。 手元でメモを取ったり、何かを調べたりできるのはめちゃくちゃ助けになります
- 自己紹介のテンプレートを用意しておいて、見ながら話せるようにしておく
- 会社や労働環境への質問をいくつか用意しておく。 聞くのに良いタイミングですし、興味を持っているとみられて好印象です
- 聞き取れなかったら聞き直す。伝わってないと思ったら伝え直す。基本的なことですがめちゃくちゃ重要です
コーディング面接
北米の大抵の会社では面接プロセスのどこかでコーディング面接があります。逆にコーディングインタビューが全く無い会社は少し疑った方がいいです。 技術的な足切り基準がないことになるので、エンジニアとしてあまりモチベーティブな環境ではない可能性があります。
コーディング面接はホワイトボードを使って行うものと、オンラインのテキストエディタを使って行うものと大きく分けて2種類あります。COVID-19の環境下ではオンラインの面接が主流なので、ホワイトボードを使っての面接はあまり行われなくなりました。
コーディング面接では、簡単に言うと 「面接官の目の前でライブコーディングする」 ことになります。コーディング面接特有の落とし穴がいくつかあり、慣れていないと難しいかもしれません。実際に僕が面接官をしていて見たことがある中だと、
- 普段からあまりプライベートでコーディングをしていないので、新しいアプリケーション/プロジェクトをサクッと立ち上げることができない
- プライベートのPCに入っているランタイムが古い、あるいは環境がうまく動かなくてスムーズにコーディングに移れない
なんて候補者がいました。少なくとも仕事を探す前にはフルスクラッチでアプリケーションを作るなどして、このあたりのスムーズさを確保しておくといいと思います。
面接官が見ていること
実際に出されるお題は大きく分けて2種類あります。
- アルゴリズムの問題
- コンピューターサイエンスの素養がある程度あるかをチェックします
- 経験上、文字列操作や木構造やグラフ構造が特によく出てきます
- 実際にアプリケーションや機能を作ってみる問題
- 特定の言語やフレームワークを使って、業務で実際に行うようなコーディングスキルがあるかをチェックします
ジュニアレベルのポジションだと「面接の前に宿題を出されて先にそれを終わらせた上で面接に臨む」というケースもありますが、シニアレベルではあまり見かけません。その形だとシニアレベルの候補者の能力を正しく査定できないのが理由だと思います。
面接官は「提示した問題を解けるかどうか」を見ているのではなく、コーディングインタビューの時間を通して次のようなことを見ています。ですので問題が難しくても焦る必要はありません。
- インタラクティブに進めていく力
- 実際の仕事と同じように、面接官を同僚に見立てて必要な会話・相談を行いながら問題を解決していけるか
- 予期される落とし穴に気付く力
- 上手な面接官は問題の中に予めいくつか落とし穴が散りばめていたりします
- 意地悪しているわけではなく、手戻りの少ない内に気付いて「ここはこういうエッジケースがあるけど、こう対策する形でいいと思う?」と聞いて欲しいのです
- 問題解決能力
- 問題を発見した時に並列にいくつか解決策を提示して、それぞれのメリットとデメリットを考えながら実装を進めていけるかどうか
- 普段の業務で無意識の内にやっていると思いますが、面接官の目から見えるように話しながらコードを書けるとベストです
- 純粋なプログラミング力
- 当然重要です。アルゴリズムの問題が出てきたら観点の80%くらいはこれです
業務でライブコーディングをする機会はなかなかないと思いますし、ほとんどのことはアルゴリズムの知識があまりなくても実装できてしまいます。普段のコーディングとはまた違った「慣れ」が必要になるので、コーディング面接に向けてある程度の対策はしておくようにしましょう。
行動面接 (Behavioral Questions)
コーディング面接と同じように、行動面接と呼ばれるものも必ずあります。これはカルチャーフィットを確認している場合もありますし、ストリートスマートさを見ている場合もあります。レジュメに書いてある過去の経験が本当のものかどうかチェックしていることもあります。言い換えると、あなたのコーディング以外のあらゆる能力やポテンシャルを測るための面接です。
この面接は対話形式で、面接官からかなり抽象的な質問が飛んできます。たとえば 『あなたがこれまでに取り組んだ中で最も難しかったことを教えてください』 のような質問です。更なる例として以下に僕が見つけた質問のリストへのリンクを貼っておきます。
かつてTesla社のCEOであるElon Muskがあるインタビューの場で言っていたのですが、彼の面接官としての質問はいつも決まっていて 「何か難しいことを成し遂げた経験を聞いて、それを深掘りしていく」 というもので、詳細に向けて掘り下げていく内にその人の真価が分かるのだそうです。なぜなら、本当に何かを成し遂げた当事者ならどんな質問にでも答えられますが、 もしその人が本当に成し遂げた人ではなく、その状況に居合わせただけの人だったらいずれ答えられないことが出てくる からだそうです。
面接に臨む前に、自分のあらゆる経験を思い出して上手くいった成功体験から失敗談まですべて書き出して整理してみましょう。そしてそれらを自分で深掘りして
- 「あの時これがあったから成功/失敗した」
- 「あの時こうすべきだった。そうすれば (より/どれくらい) 成功していた」
- 「あの時もしああしていたら失敗していたかもしれない」
- 「あの成功/失敗があったおかげで○○を学ぶことができた」
といった 成果まで突き詰めておくと、どんな質問にも答えやすくなります。
ビザ
1年半くらいは働けるステータスがあった方がいい
一般的に、候補者を採用してから既存メンバーと同じパフォーマンスを出せるようになるまで最低数ヶ月かかると言われています。それまでチームにあった変遷とその背景に追いついて理解するまでに時間がかかるからです。さて、この前提に立って自分が候補者を選ぶ側だとして考えてみましょう。ある候補者は働ける期間が1年しかありません。その候補者が100%のパフォーマンスを出せるようになるまで6ヶ月かかるとすると、その残りの期間は6ヶ月しかないことになります。そんな人を採りたいでしょうか?
こうして相手 (会社) の立場で考えてみると、ビザステータスが大きなネックになることがわかると思います。エンジニアの平均勤続年数はGoogleなどの大企業で約2年強、Uberのような大きめのスタートアップでも1年半ほどと言われています。他の候補者との競争力を確保するためにも、求職時点で1年半くらい働けるステータスがあるのが理想です。
ちなみに、就労ビザの取得には雇用主側に結構な負担がかかります。あなたがよほど魅力的な候補者であればもしかしたら働けるステータスが全くない状態でも採用されることもあるかもしれませんが、代償として条件面である程度の妥協が強いられることもあります。また、就労ビザの獲得が確実ではない (=申請したからといって必ず取得できるわけではない) 国や州もあります。海外で働く限り就労ビザの問題はついて回るので、必ず計画の段階で確認しておきましょう。
ワーキングホリデーは切り札
カナダをはじめいくつかの国にはワーキングホリデーという特別なビザがあります。これは人生で一度だけ、一定の年齢までであれば1年間 (例外となる国もあります) ほぼ無制約で就労できる観光ビザです。
こういった無制約で一定期間自由に働けるビザというのは非常に貴重です。通常の就労ビザは雇用主が必要で、また退職すると効力が失われるものがほとんどです。ワーキングホリデーは人生で一度だけ使えるジョーカーのようなものと捉え、ワーキングホリデーを使ってただ働いて終えるのではなく、その後の永住権などより強いビザに繋げられるよう効果的に使いましょう。
雇用主が必要なビザ、そうでないビザ
多くの国で一般的に「就労ビザ」というと、雇用主が前提になっていることが多いです。取得するのにジョブオファーがあることが前提となるので雇用主の協力が必要で、雇用主サイドとしても書類の提出や申請料など少なくない負担がかかります。また、 会社を辞めたらビザの効力も失われてしまうので、転職するには就労ビザをサポートしてくれる会社をまた見つけなければなりません。
テクノロジーの業界で一つの会社に長期間居続けることは稀だと思います。僕たちを取り巻く技術は日々変わり続けています。キャリアにおけるスキルセットの柔軟性や流動性を確保する意味で、長くとも数年で転職を繰り返していると思います。そういったキャリアの展望を考えた結果、僕は永住権を取得する選択をしました。自分がそこに永住するかどうかは別として、永住権があれば自由に転職することができますし、自分や家族の保険や学費の面でも優遇されます。長期的 (2年以上) に海外に住むことを考えているのであれば、永住権の取得に向けてロードマップを考えてみるのも良いと思います。
ちなみに、「永住権」と「市民権」は別です。永住権は長期間合法的に滞在・就労できるステータスで、選挙権がなく国籍にも影響しません。市民権は国籍と意味的に同じです。日本人も他国の市民権を取得することができますが、その場合は日本国籍を喪失することになります。
英語力はどう伸びるか
生活しているだけだと何も変わらない
まず一つ言えるのは、生活しているだけだと英語力はまったく伸びません。日常生活でお店などで使う英語はパターン化しやすいです。逆に言うと、独身で生活するだけなら英語がまったく話せなくてもなんとかなってしまいます。
僕の経験上、英語力は負荷をかけることで伸びます。 それまで英語で経験したことがない状況に立たされることで必要性が生まれ、その中で使うことで自分のコミュニケーションの手札として蓄積されていきます。実際、僕が英語力の伸びを実感したのは英語で仕事を始めてからでした。
渡航前にも勉強しておこう
とはいえ、職探しの段階で一定の英語力が必要です。当然ですが、コミュニケーションがネックになり仕事に支障が出ると思われたらジョブオファーを貰えないからです。エンジニアの仕事はコードを書くことだけではありません。実装方針について話し合うこともありますし、同僚と一緒にバグの調査をすることもあります。
日本にいるうちでもある程度できることはあるので、あらかじめやっておくといいと思います。たとえば...
- 文法をマスターしておく
- 元々日本人は英文法がめちゃくちゃ強いです。強みを伸ばしましょう。文法の強さは表現力の強さになります
- 発音のトレーニングをしておく
- 自分が正しく発音できる音は耳で聞き取りやすくなります。また、発音に自信がつくと英語がスラスラ出てきやすくなります
逆に、以下のようなことは日本にいるうちからあまり頑張らなくてもいいと思います。
- 慣用表現を覚える
- 日本で教えられている慣用表現の中には、北米で実際に使われてないものがたくさんあります
- Advancedなトピックに手を出す
- 複数の似ている表現の細かな使い分けなど。ネイティブスピーカーに質問できる環境で学んだ方が効率的です
子供の頭脳に逆戻り
第二言語話者の間では通説のようなものですが、思考の範囲は持っている言語の単語や表現力に制限されます。英語で仕事をしているとよく「日本語だったらもっとうまくできたのに」というシチュエーションが多く発生します。実装の議論をしたり、やっていることの説明を求められて答えたり、色んな状況下で英語を使うことになりますが、説明したり議論したりするのもコミュニケーションです。ですが、思考力だけが14歳くらいの状態なのです。海外で働こうと思ってる人には、こういった「退行」のような現象があることをある程度覚悟した方がいいと思います。
もちろん、英語がうまくなるにつれて改善していきますが、母国語の時と同じパフォーマンスになるまでには膨大な年月がかかります。それこそ本当に最低でも10年以上は英語を使い続けないと日本語と同じパフォーマンスにはならないんじゃないでしょうか...。
長い旅路の始まり
そんなわけで、海外で働き始めるまでにはたくさんの障壁がありました。それでも僕は独身なので比較的楽な方だったと思います。結婚している方や子供がいる場合はもっと大変かもしれません。そして僕もまだスタート地点にいるにすぎません。
エンジニアで英語がうまく扱えるようになることのメリットは本当に大きいと思います。プログラミング言語のドキュメントやGitHubでの議論、ブログ記事やポッドキャストなど拾える情報量が格段に多くなりますし、それらを的確な表現で理解することができるようになります。また、海外で働くことでまた違った労働文化や意思決定のプロセスに触れることもできます。
大変な労力を必要としますがそれだけリターンも大きいです。チャンスがあればぜひチャレンジしてみてください。また、カナダ・バンクーバーへ足を運ぶ際にはぜひTwitterなどで声をかけてください。一緒にご飯でも行きましょう!