【転職エントリ】Googleに入社します
はじめに
この記事には、Googleのオンサイト面接に向けて勉強した内容が記載されていますが、それらはすべて面接を受ける直前に書いておいたものです。このエントリを読むことで面接で聞かれた内容が予測されてしまわないようにそのようにさせていただきました。ご了承お願いします。
この記事について
令和元年に医師を退職し、ソフトウェアエンジニアに転職します。
自分にとって大きな転機であったのと、とても大変な道のりであったので、私という人間が辿った道筋を最初から最後までちゃんとまとめておきたいと思いこの記事を書くことにしました。
私のような他業種から未経験での転職を目指されている方にとっても、何らかの参考になる内容であれば幸いです。
私の生い立ち
私は小さい頃からテレビゲームが大好きで、学校から帰るとずっと家でゲームをしている子でした。あまりにもゲームが好きだったので、遊ぶだけではなく自分で作ってみたいとも思っていて、どんなゲームを作るかずっと考えていました。将来の夢はゲームを作るプログラマーになることでした。
中高は文化系の部活に入部しました。ボロボロで埃だらけの部室にPC98という古いパソコンが置いてあり、BASICという言語を勉強すればプログラミングができるということを知りました。私はさっそくそれにのめり込み、勉強する情報源も限られている時代でしたが、初歩的な文法を使って長いプログラムを書いていろんなゲームを作りました。4択クイズ、フラッシュ暗算、音ゲー、RPG、レースゲーム、バレーボールゲーム、シューティングゲーム、不思議のダンジョンなどを作ったと思います。マシンのスペックや私の技術の問題もあってどれも非常に原始的な出来栄えでしたが、とても楽しかったです。部活動の時間まで待てずに授業中もノートにプログラムを書いたり、休日に鍵のかかった部室に窓から忍び込んでプログラミングしているところを用務員さんに見つかって怒られたこともありました。自宅にはパソコンはなくて、今のようなスマートフォンもない時代でした。プログラミング以外の趣味としては、数学が好きだったので数学オリンピックに出場してみたり、ぷよぷよや音ゲーを遊んだりしていました。
大学入学時に自分用のパソコンを初めて持つことができました。さっそくプログラミングしようと思ったのですが、どうやらBASIC言語は一般的ではなく、Visual BASICという言語を使うみたいでした。Visual BASICは少しだけやってみたのですが、今まで慣れ親しんだ環境と違いが大きくてしっくりきませんでした。いつの間にかプログラミング自体から完全に遠ざかってしまいました。中高からやっていた音ゲーと、麻雀を新しく覚えて熱中しました。プログラマーとして働く自分はイメージできず、理三からそのまま医学部に進学しました。苦しんでいる人を医療で救いたいという思いがありましたし、医学は学問として奥が深くて面白そうでした。いわゆる日本の大企業の管理職は男性が多くて、女性が高収入を得られる職業としては医師が現実的だというような事情もありました。医学部ではとにかく授業が忙しく覚えることがたくさんあり、毎週のように進級がかかった試験があり大変でした。卒業して医師国家試験に合格し、無事に医師になりました。
医師になってからは音ゲーや麻雀もやる時間がなくなり、職場と自宅を往復する毎日になりました。忙しいときは毎週のように徹夜で当直業務を行い、月の時間外勤務が常に100時間を超えている状況でした。病院によっては勤務時間外にも電話が頻繁にかかってきました。夜間や土日も病院にすぐ駆けつける必要があり、勤務時間外も常に待機しているような気持ちで、完全にオフの時間がないのは精神的に辛かったです。病院が変わって少し余裕が出たところで、趣味としてポーカーを始めました。これは麻雀よりも数学的な要素が強く、もっと自分に向いているゲームだと思いました。
ポーカーの勉強が本格的になるにつれて、ゲーム理論に基づいた最適戦略を専門的なソフトで研究するようになりました。ポーカーの戦略を解析するための情報をインターネットで調べていると、一つのプログラムを見つけました。それは拡張子が.pyになっており、検索してみるとPythonという名前の言語で誰かが書いたプログラムのようでした。プログラムを実行するためにPythonをインストールしてみました。
Pythonとの出会い(2018年6月)
Pythonをインストールして試しにコンソールに簡単な数式を打ち込んでみると、計算結果をすぐ表示してくれました。10年以上ぶりの懐かしい感覚が蘇ってきました。文法を調べてみると、以前すごく好きだったBASICとなんだか雰囲気が似ているような気がしてきました。Pythonをインストールするきっかけになったプログラム自体は結局あまり役に立たず使わなかったのですが、それからは自分で簡単なプログラムを書き始めました。
世の中ではデータサイエンティストという職業が人気で、彼らはPythonを使って機械学習をするということでした。自分がデータサイエンティストになることは考えませんでしたが、同じようにデータ分析ができるようになればポーカーの勉強にとても役立つだろうと思いました。
まずはProgateという初心者向けのサイトを勉強してみました。これは本当に簡単で最初の導入にすごく良かったです。分量も少なくて、すぐ終わりました。初歩的な内容を勉強し、簡単な分析は自分でできるようになったのでとりあえず満足しました。Pythonを使ってポーカーの戦略を分析してYoutube動画やnote記事をたくさん書きました。このあたりの内容は自分でもすごくお気に入りで、今後もポーカーの研究は専門的に続けていきたいと思っています。
DataCampでの自習(2018年12月~2019年3月)
DataCampはデータサイエンティストになりたい人向けの英語のサイトでPythonとRを主に勉強できます。2018年の年末年始に時間があったので、有料版を契約してきちんとPythonの勉強をしてみようと思いました。DataCampの分量は非常に多くて、年末年始だけでは当然終わらせることはできず、3ヶ月以上かかってData Scientistコースを修了しました。動画で説明を聞いた後に演習問題で自分でプログラムを書いて、正解すると次に進める形式になっています。最終的に書いた演習問題のプログラムは1626個でした。
競技プログラミングとの出会い(2019年3月~)
2019年3月にDataCampはディープラーニングまで一通り終わりました。このあたりで競技プログラミングというものの存在を知り、試しにやってみることにしました。始めてみると、これはすごく楽しくて、自分がプログラミングを楽しんでいることを実感するようになりました。職場でも空き時間に自分のパソコンでプログラムを書いていました。プログラミングをしている間はお腹が空いたとか眠いとかそういう感覚も完全に忘れて時間がどんどん過ぎていて、文字通り寝食を忘れるほどに楽しかったです。
医師としては血液内科専門医の試験に合格し、4月から血液内科医長という身分に昇格し、給料も大きく上がりました。しかし臨床能力はプラトーにほぼ達しており、医師としては10年後、20年後もだいたい同じような仕事を続けている自分が想像されました。自分の人生はそれで本当にいいのかなと思いました。もっといろんなことをこの世界で体験してみたい、プログラミングを極めて仕事としてやっていきたい、世界に新しい価値を生み出していきたいと思いました。エンジニアへの転職を本気で考え始めた瞬間でした。
医療に関連する分野なら自分の経験を活かせるだろう、それによって医療のシステムを改善できれば嬉しいと思って、まず医療系のデータサイエンティストという路線を考えました。同時に、まったく別の分野で新しいことにチャレンジする選択肢も楽しいだろうなと思いました。データサイエンティストとソフトウェアエンジニアという2つの進路を意識しました。
突然のメール(2019年4月)
最初にしたことはLinkedInなどにアカウントを登録するなどネット上で転職活動を始めることでした。エンジニア採用のカジュアル面談を受け入れている医療×ITの企業を見つけて、いくつかネットで申し込んでみたりもしました。
LinkedInはいくつかやり取りはありましたが、具体的な応募には結びつきませんでした。そしてウェブからカジュアル面談を申し込んだ企業は、どこも結局メールの返信すら来ませんでした。医師としてのドメイン知識を活かせそうな医療系のIT企業であっても、未経験のエンジニアとしての自分には需要が全然ないのだと痛感させられました。転職エージェントにも登録して相談してみましたが、まったく他業種なので医師としてのキャリアは役に立たない、エンジニアになるのを諦めて製薬企業や戦略コンサルタントへの入社を考えてはどうかとの返事でした。医師を辞めたいわけではなくて、エンジニアになりたかったので、きっぱりと断りました。
世間で言われているエンジニアとして未経験からの中途採用は非常に厳しいということが分かってきました。しかし最初の仕事をどこかで見つけなければ、いつまでたっても未経験のままです。社会人のままではインターンもできないし、いっそ情報系の学部や大学院に入学しなおすのも選択肢だろうかと考え、とにかく道がないか必死に探しました。
そんな折、一通の英文メールが届きました。差出人はなんとGoogleのリクルーターでした。Twitterなどのウェブ上の活動を見て面白そうな人材だと興味を持ったので、エンジニアとして入社試験を受けてみないかという誘いでした。
Googleはずっと大好きで憧れていた企業でしたが、エンジニアとして自分が入社する可能性はとても想像できず応募もしていなかったので、突然のメールにとても驚きました。そして、チャンスに震えました。なんとしてもこのチャンスをつかみたいと思い、何時間もかけて文章を推敲して、気合の入りまくった返信を書きました。
それに対して、面接は技術力を見られる試験だから頑張って準備してねというメールが届きました。この時点でとても幸運だったのは、日本語で書かれた入社体験談が同時期にたくさん投稿されていたことです。電話面接やオンサイト面接を受けることになること、競技プログラミングのような問題が出題されることなどを知りました。準備のために2~3ヶ月くださいとメールを送って、競技プログラミングの勉強に必死に取り組み始めました。
転職活動の3ヶ月(2019年4月~)
このタイミングで本格的に転職活動を開始しました。Twitterで転職活動を開始することを宣言すると多くの方が声をかけてくれました。会社訪問の予定がカレンダーに埋まりました。プログラミングの勉強とオフィス訪問で非常に忙しくなってきたので、ポーカーはいったん完全に休止しました。
これから1週間ごとに勉強内容をツイートにまとめていたので、順番に載せてみます。1週間ずつの内容としては、充実した勉強内容をこなしていたように思います。
情報科学の基礎(2019年7月)
AtCoderでは水色になりコードはある程度すらすら書けるようになりました。しかし情報系の出身ではないために、大学で学ぶような情報科学の基礎が自分にまったく抜けていることは自覚していました。
このタイミングで、とある元Googleのソフトウェアエンジニアの方から声をかけていただき、模擬面接をしていただけることになりました。後から思うとこの機会は私にとって本当に幸運でした。模擬面接では私がコードをすらすら書いてみせたので、ちょっと驚かれました。競技プログラミングで得られるようなアルゴリズムのコーディングスキルは、面接対策にはもう十分過ぎるほど練習済だと思うとの評価でした。
その反面、情報科学の知識を前提としたディスカッションでは、私の知識量があまりに乏しいことに半ば呆れられました。模擬面接はその時点で終了して、一緒に近場の書店に行って、教科書を買うことになりました。ここで選んでいただいたオススメの教科書は本当に良書ばかりでCPUやOSの仕組み、ウェブの技術など、情報系の学部で学ぶと思われる情報科学の基礎をしっかりと勉強することができました。
採用面接は単なるコーディングスキルの試験ではなく、ディスカッションの中でのコミュニケーション(意思疎通)が非常に重要であることを強調されました。チームとして一緒に仕事をする仲間を見極めることが面接の目的であることを考えれば、実践的なコミュニケーションが重要視されるのは合理的だと思いました。
面接(2019年6月-7月)
私が実際に面接を受けたのは全部で4社です。それ以外にも声をかけていただいたり興味があった会社はあったのですが、平日に職場を休んで面接を受けに行くのは時間的な負担が大きく、4社が限界でした。
1社目
医療×ITのスタートアップで、声をかけていただいてオフィスを訪問しました。とても楽しい雰囲気だったのと、扱っているサービスの内容が魅力的で将来性もありそうだったので惹かれました。会社のデータベースやシステム設計を理解した上でどのような改善点があるかプレゼンするなど、実務能力を評価されました。ぜひ入社してほしいとお言葉を頂いたのですが、スタート時点ではエンジニアとしてより臨床医としての能力に大きく期待されている雰囲気でした。会社として当然の判断だろうと思いましたが、自分がエンジニアとして成長していけるかは不安になりました。
2社目
Kaggleで活躍されている優秀なデータサイエンティストが集まっている会社です。ゲームやヘルスケアの部門があり、この会社でデータサイエンティストとして働くことができたら楽しそうと思いました。面接では技術的な質問も多く聞かれましたが、なんとか無事に答えることができました。最終面接でも予想外の質問があり焦りましたが、本心を正直に答えた結果がそのまま決め手になり内定をいただくことができました。その後も社員の方々との会食をセッティングいただいたり、社長や会長から直々にお誘いのお言葉を頂くことができました。ヘルスケア部門での活躍を期待されていたと思います。ぜひ入社して欲しいという強い思いを感じて、とても嬉しかったです。
3社目
さまざまな部門で国内最大級のサービスを持っている、大手の日本企業です。優秀なエンジニアが多く、データ分析の環境も整っており、ビジネスも勉強できそうな環境でした。面接では、医師としての経験はまったく関係ない環境であり、第二新卒としての入社であるということを強調されました。自分はもちろんそれで構わなかったので、まったく新しい気持ちで、新しいことにチャレンジしたいと答えました。技術的な質問はほとんど聞かれませんでしたが、ユニークな人材であり、高いポテンシャルを持っていると評価されたようです。内定をいただくことができました。
4社目
Googleです。準備にとても時間がかかったのでオンサイト面接は4社の中で最後に受けた面接になりました。一次面接は電話で技術的質問をされました。二次面接は電話で会話をしながら、オンライン共有されたドキュメントにいくつかコードを書きました。どちらも完璧と言える出来栄えだったと思います。絶対に通過しただろうと感じましたし、実際に面接が終わったその日のうちに通過の知らせがあったので精神的に負担が軽くて良かったです。
最終のオンサイト面接については、冒頭にも書きましたが、受ける直前にこの記事を書きました。面接が7月18日で、記事を書いたのが7月15日です。面接で聞かれた内容は秘密にする約束なので、自分が勉強した内容を記事に書くのは、面接を受ける前に書いておいた方がいいだろうと考えました。
オンサイト面接の対策
1)AtCoder
競技プログラミングは面接の対策に有効と思って勉強を始めましたが、それだけではたぶんモチベーションを保つのは大変だったと思います。単純に問題を解いてコードを書くのが楽しかったので、面接対策というよりほぼ趣味としてやっていました。Pythonで過去問を500問以上サクサク解いていきました。コンテストも参加して、開始4ヶ月時点でレートは青になる直前まで上がりました。
2)LeetCode
入社試験の過去問が載っているのでちょっとどうかと思うのですが、多くの人が面接対策のために利用しているサイトであり、平等に戦うためには自分も教材として触れておかざるを得ないと思いました。Googleの過去問を解く模擬試験では10段階で8.41という成績であり、Google社員の成績の中央値が6.97だと表示されていたので、コーディングに関してはかなり良い成績なのかなと思いました。LeetCodeの問題は200問くらい解きました。
3)英文履歴書
シンプルでかっこいい履歴書が作れそうだったので有料のサイトを使いました。私の場合は経歴に書けることが医師としてのキャリアばかりで、エンジニアの応募にはまったくアピールできないように感じたので、どうするか悩みました。スタイルを工夫して、なるべく冒頭のあたりに広めのスペースでプログラミングの技術について記述するようにしました。
4)システムデザイン
実務経験がない中途採用で一番苦戦するのはコーディング面接より、むしろシステム設計かなと思いました。最初はどうやって勉強してよいかも分からず途方に暮れました。情報科学の知識をしっかり勉強してから下のサイトを読むとなんとか理解できるようになっており、後はとにかく当日の面接官とのディスカッションで頑張ってやってみるしかないと覚悟を決めました。なにか自分でプロダクトを作ってみれば対策としても有効だっただろうと思いますが、時間的な余裕がなかったです。
5)入社エントリ
Googleの採用面接を受けるにあたり、最初から最後まで一番参考になった資料です。入社された方は経歴や実績が素晴らしい方ばかりで、私のような未経験で中途採用という人間が参考にしてよいかどうか不安でしたが、とにかく同じ条件だと信じて面接のイメージトレーニングをしました。体験談を書いてくださった先輩方に感謝し、自分が入社したら今度は自分が転職エントリを書いて、誰かの助けになれたら嬉しいなと思いました。
6)Pythonの文法
コーディング試験の本番では自分が慣れ親しんだ編集環境は使えず、ホワイトボードやChromebookのシンプルなエディタでコードを書く必要があります。Pythonはコード自体は短くて書きやすいですが、何も見なくても間違えずに書けるように文法についてしっかり確認していきました。ホワイトボードにコードを書くのは慣れていないと戸惑うと思ったので、実際にホワイトボードを自宅に購入して間違えずにすらすら書けるようになるまで繰り返し練習しました。
オファーが出てから入社を決めるまで
無事に4社すべての面接が終了しました。そして、幸運にも4社すべてから内定を頂くことができました。それぞれに魅力があり、自分がぜひ仕事をしてみたいと思って応募した会社です。分野や職種も異なるため、この中から入社先を決めるのは、人生にとっての明らかな分岐点でした。
エンジニア業界のことを全然知らない自分でしたが、幸い転職活動の間に知り合った多くの方々からいろんな情報を聞いたり、相談することができました。自分の好奇心がかなり強いことは自覚していて、今までの医師としての経歴や知識にはなるべく頼らず、エンジニアとして必要なスキルを企画・調査・研究・開発・設計など幅広く学べそうな環境に行きたいと思いました。そして今までは病院の中というある意味閉ざされた環境での仕事でしたが、社会全体に対して大きなインパクトを与える仕事をしていきたいなと思いました。
いろいろ考えた結果、最後に内定を頂いたGoogleに入社させていただくことに決めました。職種はソフトウェアエンジニアです。今までPythonをメインに勉強してきましたが、仕事ではC++でコードを書くことになりそうなので、入社日までにC++をマスターしたいと思います。
転職が真に成功したと言えるためには、入社してからが一番大事だと思います。自分が叶えたかったことが実現できて、なりたい自分になっているか、社会に大きな価値を生み出していくことができているか。数年後の自分が目標を達成できているよう、頑張っていきたいと思います。
最後に
今回の転職活動では本当にたくさんの方に力を貸していただきました。自分一人では絶対に成功しなかった転職です。アドバイスをいただいたり、紹介してくださったり、相談させていただいたり。お世話になった方々に本当に感謝しています。
今後のキャリアはまだ長いです。いずれまたどこかでお世話になったり、一緒にお仕事する機会もあるかもしれません。今回の転職活動中に得られた縁はずっと大事にしていきたいです。機会があったらプライベートでも一緒に遊んだり、誘っていただけると嬉しいです。笑
いったん離れていたポーカーも徐々に再開していく予定なので、そちらでの知り合いの方々もまたよろしくお願いします。もともとポーカーの戦略をnote記事に書いていましたが、今回アカウントを別に作って転職エントリを書きました。今後、エンジニア関連の内容をnote記事に書くことがあれば、こちらのアカウントでやっていこうかなと思っています。
長文になってしまいましたが、読んでいただいた方々、ありがとうございました。
今後とも、何卒よろしくお願いいたします!(≧▽≦)