UC Berkeleyへ復学後、念願のシリコンバレーエンジニアへ転職成功|Sorasukeさんインタビュー

今回インタビューさせていただいたのは、シリコンバレーでソフトウェアエンジニアへの転職を成功させたSorasukeさん。UC Barkeleyを休学し日本で仕事をされていましたが、かつて描いた夢を実現させるため復学を決意。その際Recursionを利用してコンピュータサイエンスを学習しなおしたそうです。

紆余曲折を経て、晴れて転職を成功させたSorasukeさんに詳しいお話を伺ってみました。


Sorasukeさん:

Twitter:https://twitter.com/Sorasukeprog

Recursionプロフィール:https://recursionist.io/users/Sorasuke

人生でやり残したことを回収するためUC Barkeleyへの復学を決意

――Sorasukeさん、インタビューをお受けいただいてありがとうございます。早速ですがまずは経歴を簡単に教えていただけますか?

Sorasukeさん(以下敬称略):

高校までは日本で育ち、その後アメリカカリフォルニア州のコミュニティカレッジに進学しました。統計学を専攻して2年過ごした後、UC Berkeleyに編入。

当初は専攻を変える気は全くなかったのですが、編入後にベイエリアの風に吹かれて大きな決意のもとCSへの変更を志しました。なんとか足切りを突破して、4年生になるタイミングで正式にCS専攻となりました。

その後休学し、日本でインターンシップ、数学・統計・機械学習の講師、教育系事業の立ち上げなどを経験し数年過ごしました。教育系事業の中でエンジニア業務も一時期していましたが、大部分の時間はそれ以外の作業に費やしていました。

昨春、人生でやり残していることについて自問したところ、UC Berkeleyを卒業しアメリカでエンジニアになりたいと願った自分を思い出し、復学を決意。昨夏よりBerkeleyに戻り、最後の一年を生き抜き、無事卒業しました。

そしてシリコンバレーのソフトウェアエンジニアとしての内定を頂き、今に至ります。

――途中専攻を変えたんですね。CSへ変更する前はプログラミング経験があったのですか?

Sorasuke

コミュニティカレッジに在籍していた際に、データ分析を学びたかったのでRを少し独学しました。本格的にプログラミングを習ったのは、UC Berkeley編入後に受けたアルゴリズムとデータ構造の授業が初です。

――Recursionを始めたのはどうしてですか?

Sorasuke

UC Berkeley復学にあたり、かつて授業で学んだCSの知識を思い出し、スムーズに復学できるようにしたかったためです。

――Recursion以外のサービスを利用しましたか?

Sorasuke

LeetCodeや各種オンライン学習サービスを利用しました。

LeetCodeとは、コーディング問題を集めたサイトです。アメリカでエンジニアの就活をする99%は使っていると思われます。自分は300題以上解きました(Recursionや他サイトを含めると500題以上)

YouTubeやUdemyでは単純に知識を得るために用い、Coursera、 Edx等ではそれに加え、認定証/修了証が発行されるため、そのいくつかを履歴書に書いていました。

――他に本などは読みましたか?どのような本が役に立ったか教えてください。

Sorasuke

色々な本を流し読みしていますが、特に就活で役立ったものは以下です。

  • マインドセット/就職対策
    – Career Skills
  • 全体像
    – 独学プログラマ
    – 入門コンピュータ科学 ITを支える技術と理論の基礎知識
    – キタミ式イラストIT塾 応用情報技術者
  • ハード(ソフトウェアエンジニア志望だったので、最低限必要な知識部分のみ)
    – マンガでわかるCPU
    – Computer Organization and Design RISC-V edition (所謂パタヘネ本)
  • アルゴリズム
    – Algorithms (written by Jeff Erickson)
    – アルゴリズムビジュアル大辞典

エントリーレベル/ジュニアレベルのエンジニアを志望する場合は、これらの本よりもLeetCodeでの対策が殆どを占めると思います。

――ネットワークやWeb周りの知識も勉強しましたか?

Sorasuke

ネットワークに関してはセキュリティの授業で学んだことに加え、Udemyの講座を受講しました。Web周りはやんわり初心者向けの本を読んだくらいであまり勉強できていません。

――エンジニア関連の資格をお持ちですか?

Sorasuke

取っていません。こちらのエンジニアの就活では専門職でない限り、特定資格は必要とされない気がします。

RecursionではCSの基礎知識を幅広く学習

――どのようにRecursionを利用されたのか、Sorasukeさんの学習スタイルについてお聞かせください。

Sorasuke

まずは言語についてですが、Recursionは主にPythonで進めました。独学や授業で学習した言語は、習熟度の差はありますが、 Java, C, C++, JavaScript, TypeScript, Dart, Go, R, Scheme, Julia, MATLABを勉強しています。

1日の学習量は、Recursionをスタートしたときはセメスターの始めで、授業の進みも緩やかだったため4,5時間くらいしていた記憶があります。授業が本気を出し始めてからは、隙間を見つけて30分から 2時間くらいをちょこちょこ進めていました。

――Recursionのコースの中でどれを一番注力して勉強しましたか?

Sorasuke

自分の場合はコンピュータサイエンス基礎「中級」「上級」あたりに登場するCSの基礎概念です。以前学んだことを思い出す作業が中心だったので、「木構造懐かしい!!」などといちいち感激しながら進めていました。

――プロジェクトはどこまで終わりましたか?

Sorasuke

コースとして進めたのはプロジェクト3までですが、最後の課題も含めてガッツリ取り組んだと言えるのはプロジェクト1のみです。いかんせんフロントの勉強に割く時間がとれず、概念的な部分を斜め読みしていました。今後はしっかり全てのプロジェクトに取り組みたいです。

――ポートフォリオは作成しましたか?その完成度や意識したことについて教えてください。

Sorasuke

自分の場合は「ポートフォリオをがっつり作っての就活」ではなかったので大変稚拙ですが紹介します。

プロジェクト1: Emotion Onomatopoeia Dictionary

URL:https://recursionist.io/share/Sorasuke/lessoncode/564/htmlRunner2

Recursionの登竜門の課題です。すべて受け身ではいけないと考え、外部のフリー素材を利用したり、感情と合うようなナチュラルな色を指定するなど、やんわり自分なりの工夫を入れました。

Friendly Reader

コード:https://github.com/Sota1221/friendly-reader

実装サイト:https://sota1221.github.io/friendly-reader/

プロジェクト1でフロントを学んだ頃に開催されたハッカソンイベントで作ったリーディングアシストツールです。1日で作成したものなので高機能ではないですが、プロジェクト1レベルでも完成品が作れたことが自信になりました。

アメリカのエンジニア就活で自分のプロジェクトを語る場合、どのような社会的インパクトがあるかを重要視されるのですが、このプロジェクトではディスレクシアの人を始めとする、読書が不得意な方を助けたいという思いで作りました。

私自身もディスプレイ上の幅の広い文章を読むのが苦手なので、自分でもこの作品をよく利用しています。

――Recursionを始める前と後で何か変化がありましたか?

Sorasuke

始める前はCSの記憶の多くを忘れていた状態でしたが、おかげさまでCSの基礎知識を短期間で幅広く学習することができました。

自分が未学習だったフロントなどの分野も、演習を交えて学ぶことができ、授業外での知識の幅を広げる助けとなりました。なによりモチベーションの高く優しい方がコミュニティーに多く、以前に比べCSの学習に関しての忌避感が薄れた気がします。

「アメリカでエンジニアになりたい」夢をかなえ転職成功

――Sorasukeさんは今回念願のシリコンバレーエンジニアへの転職を成功されたそうですね。おめでとうございます!ぜひ、転職活動についてもお聞かせください。

Sorasuke

転職活動をするにあたって自分の中での方針は以下の通りでした。

会社選びについて

  • OPTを受け付けており、なおかつその後の就労ビザのサポートをしてくれる
  • 気候や文化的にも慣れたベイエリア(サンフランシスコ・シリコンバレー)にある
  • 給与ができるだけ高水準(ベイエリアは異常に物価が高いため)
  • 画期的/新しいことに取り組んでいる

応募について

  • (大手にも応募する予定だったので)先に練習としてスタートアップを中心に応募する
  • LinkedInなどJob系のサイトで、狙っている条件で24時間以内にポストされたポジションのうちスキルが合うものに応募する
  • リクルーターの目に留まりやすくするために、LinkedInで多くの人と繋がっておく(実際500人以上と繋がるとリクルーターからの連絡が多くなりました)

オファーを受けるか

  • 給料、ストックオプション、福利厚生を含めた総合的なオファー内容の最低ラインと即決ラインを定めておく
  • 面接を通しこの会社で働きたいと思えたか

自分の場合は、本格的に大手に出す前に素晴らしいスタートアップと出会ったのでそこに決めました。余談ですが、こちらでは1つのポジションを数百-千以上の人数で争うため、何百もの会社に応募する学生も珍しくありません。大学の友人の友人は700出してやっと1つ決まったというケースだったそうで、実力はもちろん、運も多分に絡んだ戦いとなります。

――書類や面接ではどのようなことをアピールしましたか?

Sorasuke

書類では休学中にスタートアップの速い環境を経験したことをアピールしました。またAI系の会社だったため、機械学習の経験や、その理論面を講師として教えていた経験もアピールしました。

技術面接ではアルゴリズムへの造詣の深さを伝えるため、解答のアイデアを複数伝え、それぞれの強み弱みを話し、その中でも自分が最良だと考える方法とその理由を短時間で伝えました。

このプロセスの間や実装中も、面接官と常に対話を心がけ、自分が今後同じプロジェクトメンバーになった際に、コミュニケーションが取りやすい人物であることをアピールしました。

――選考の流れはどのように進みましたか?

Sorasuke

よくある流れは

  1. 書類審査
  2. スクリーニング面接(簡易行動面接)
  3. 技術面接(複数)
  4. 行動面接

でした。

スクリーニング面接はリクルーターが、こちらの経歴を確認しポジションとマッチしているか聞いてきます。まれにこの段階で簡単な技術的な質問をする人もいます。

技術面接はCSや応募ポジションに関する知識問題 + コーディング試験の形式で、後者だけのことも多かったです。

形式としては、電話での口頭試問、PCで画面共有しながらのコーディング、会社のホワイトボードでのコーディングといったタイプがあります。自分が応募した会社では最低3回は技術面接があり、多いところでは8回も行いました。

行動面接では履歴書を見ながら、自分の経歴を深堀りされ、また behavioural question と呼ばれるある特定状況のときどのような行動をとったかを聞かれます。例えば、

  • プロジェクトメンバーと対立が生じたときどうしたか
  • プロジェクト中に起きた予想外の技術的なトラブルに対しどのように対処したか

などを聞かれます。面接官によっては「魔法のランプが仕事に関するあなたの願いを3つ叶えるとして、何を願うか」などその会社とマッチしているかを問うてくる人もいます。

会社によっては最終面接のあと、過去に一緒に働いた or 学校のプロジェクトメンバーだった人からのリファレンス(推薦)を求めてきて、他者を介した身辺調査を行うところもありました。

依頼した友人は根掘り葉掘り私のことについて30分電話で質問攻めにあったと言っていました(今度お礼として食事をおごる約束をしています笑)

また大手や一部スタートアップは、書類審査のあとに、特定サイトにアクセスし、コーディング問題を1-4題程解くオンラインアセスメントと呼ばれる足切りを設定することもあります。

――コーディング試験はありましたか?

Sorasuke

ありました。アメリカのエンジニア就職では必須だと思います。

タイプとしては前述の通り、電話で口頭、画面共有、ホワイトボードのタイプや、面接前の足切りとしてオンラインアセスメントを課すところもあります。

――活動を始めてどれくらいで内定が出ましたか?

Sorasuke

最終セメスター中にちょこちょこ出し始めてから最初の内定をもらったのは1ヶ月くらいだったと思います。本格的な就活を始めたのは卒業後で、そこから1ヶ月半で今のところが決まりました。全体としては3ヶ月ほど就活をしていました。

――採用者様に興味を持ってもらえた点はどのようなことですか?

Sorasuke

技術面接でのパフォーマンスとやる気です。その会社ではコーディング試験が3回あったのですが、どれもスピードと内容が他の候補者より突出していると褒めてくださいました。

技術面接をこれでもかというくらい準備して、さらにややマイナーなアルゴリズムの実装も勉強していたのが役立ちました。

また自分を成長させ社会に大きな影響を与えるためにアメリカに来たので、ぬるいゆっくりな環境、同じことだけを繰り返し思考を停止させている環境には絶対に居たくないと伝えたことも、その会社の文化にあっていると評価してくださいました。

――Recursionで学んだ知識の中でも特に評価されたものはありますか?

Sorasuke

中上級で学ぶアルゴリズムとデータ構造の知識は確実に活かされました。

もちろん技術面接に向けて専用の対策は必要となるのですが、その前段階として、例えば連結リストはこういう構造をしていて、この操作には時間計算量はこれほどかかり、空間計算量はこれほどかかるなど、単なるプログラミング学習サイトでは習わない大切な点がわかりやすく学べるので助かりました。

堅苦しい教科書よりとてもとっつきやすかったです。現在TBDとなっている「アルゴリズム&データ構造」の専用コースが開設されれば、もはや鬼に金棒だと思います。

――採用試験を通して何を重視して確認されたと思いますか?

Sorasuke

今回内定を頂いた会社では以下の優先度だったと思います。

  1. コーディングスキル(カバー領域の広さではなくどれだけ”smartか”を測っていると言われました)
  2. 社風とマッチしているか(人柄)
  3. コミュニケーション能力
  4. 学歴
  5. 職務経歴

この順番は会社によってまちまちで、職務経歴をかなり重視する会社も多くあります。

恐ろしいほど給料アップ!シリコンバレーでソフトウェアエンジニアへ

――転職後の業務内容の概要を差し支えない範囲で教えていただけますか?

Sorasuke

肩書はソフトウェアエンジニアですが、機械学習もフロントもバックも含めた実質フルスタックエンジニアのような業務になると聞いています。

――前の仕事に比べて給料はどうでしょうか?

Sorasuke

日本で休学していた頃は雀の涙だったので、恐ろしく上がっています(その分、物価も恐ろしく高いのですが…)

こちらの文化でもあるのですが、オファーをもらった額面通りではすぐに決断せず、ある程度交渉する余地があります。データに基づいて正当な理由を示せれば、当初よりも高待遇のオファーに変更してくれる可能性があり、実際私の場合も給与とストックオプションが大きく上がりました。

――今後の展望などあればお聞かせください。

Sorasuke

スピードが速い環境で、社員のバックグラウンドも化け物レベルですごい方ばかりなので、吸収できることをすべて吸収し、むしろ積極的に自分からバンバン提案していけるエンジニアになりたいです。

未経験者、Recursion初心者へのアドバイス

――最後にアドバイスをお願いします。実務未経験者が内定を取るためにやっておいた方が良いことは何でしょうか?

Sorasuke

アメリカで就職したい場合は、何かしら社会的にインパクトがあるプロジェクトを行った方が良いです。

技術面のアピールも大切ですが、向こうは実利主義なので、どれほどの人にリーチしたか、売上はどうか、社会的にどのような影響を与えたかが語れるものが作れると良いですし、周りのライバルは皆それをしていると思ってください。

自分はその経験が少なかったので苦労しました。

――Recursionを始めたばかりのユーザーがやっておくべきことはありますか?

Sorasuke

そうですね。具体的には以下の4つをおすすめします。

  • Twitterを始めてユーザーの方をフォローしましょう。私もSNS素人ですがこれを機に始めました笑 
  • Discordで質問しましょう。余裕があるなら他の人の質問に回答しましょう。
  • 他の人のコードを見て学びましょう。
  • もくもく会などイベントに参加して知り合い(戦友)を増やしましょう!

コミュニティが活発なのでどんどん利用して、コミュニケーションスキルを鍛えたり人脈を広げたりするといいと思います。

――Recursionを知人におすすめできますか?

Sorasuke

おすすめできます!特に以下の点が気に入っています。

  • 単純なプログラミング系サービスとは異なり、CSを学ぶことをコアとするコンテンツ・カリキュラムになっている
  • インプットのみに留まらず、コーディング問題やプロジェクトなどアウトプットが充実している
  • チーム開発の経験を積める
  • TwitterやDiscord上のコミュニティーが活発

――Sorasukeさん、貴重なお話をたくさん聞かせていただいて本当にありがとうございました。今後のご活躍を楽しみにしています。