日本のスタートアップで 6 年間働いたあと、シリコンバレーのスタートアップへ転職する話
2021年4月末最終出社で Wantedly を退職して、5月からは Niantic でソフトウェアエンジニアとして働き始めることになりました。
Wantedly へ 2015 年4月に入社してから、ちょうど6年間働いたことになります。良い機会なので、Wantedly に関する思い出を振り返ってみたいと思います。
また、Niantic で働くことに対しての抱負なども書き残しておこうと思います。全体として長くなってしまったのはご容赦ください。
なお、タイトルは少しキャッチーにしてしまいましたが、実際に働くのは Niantic: Tokyo Studio という東京にある開発拠点です。
Wantedly との出会い
自分が Wantedly という会社を最初に認識したのは 2014 年 2 月初頭でした。まだ、大学院修士1年の学生だった頃です。当時は Wantedly の「会社に話を聞きにいくサービス(= 今の Wantedly Visit)」自体を知らなかったのですが、たまたま何かのきっかけで目にすることになりました。
PC 版の Web サイトを眺めていると、「掲載されているのは知らない企業ばかりなのに、どれも魅力的に見える」のが新鮮な体験だったのを覚えています(注: 当時は Wantedly の iOS アプリは開発中で、まだリリースされていませんでした)。しばらく募集を見ていると Wantedly の募集が見つかり、「プラットフォームが自社の募集も出している」というのが面白くて、軽い気持ちで「話を聞きにいきたい」ボタンを押しました。すぐに返事がきて、その日のうちに「話を聞きにいく日程」が決まっていました。
会社に行った際には開発チームのメンバーや開発フローなどを紹介してもらい、さらにエンジニア全員でランチに行きました。当時はまだエンジニアは5名程度、社員全員でも10数名程度だったと記憶しています。色々話をしたのですが、気がつくと3月の春休み中に1週間ほど短期インターンをしようという話になっていました。そして、3月のインターンを経て、面接を受け、内定をもらいました。
当時の自分は(Wantedly 以外では)エンジニアリングのバイトや就業型インターンへの参加経験が無く、そんな自分をスタートアップの Wantedly が採用してくれたことがとても嬉しかったです。少数精鋭のすごいエンジニアが集まる組織に加わることで、自分が成長出来ることへの期待にワクワクしました。
なお、振り返ってみると、当時の経営陣にとって「1年後に入社する学生を採用する」というのはなかなかリスキーな選択肢だったのではないかと思います。リスクをとってくれたお陰で今の自分はあると思うので、感謝しています。
Wantedly での最初の3年間(= プロダクト開発チーム時代)
内定から1年後、2015年に Wantedly に入社しました。同時期に入社したメンバーも含めると、2014年からの1年間でエンジニアは倍以上に増えて、「急成長するスタートアップらしさ」を感じたのを覚えています。
Wantedly に入社してから最初の3年間は、プロダクト開発のエンジニアとして以下の3つのプロダクトのリリースとグロースに携わりました。平均すると毎年1つのサービスを新しくリリースしていた計算になります(注: 実際には最初の2年で3つリリースして、最後の1年はグロースに注力してました)。
- 会いたい候補者に直接メッセージを届ける「Wantedly スカウト」
- 社内で利用するツールを紹介し合う口コミサービス「Wantedly Tools」
- クリエイター向けポートフォリオサービス「CASE」
2015年に入社後、最初は1人のエンジニアとして「スカウト」のリリースとグロースに携わりました。途中からは、チーム内で技術的なリードを行うテックリード的な役割を担うようになりました。さらに、プロダクトの戦略を考えて機能に落とし込むプロダクトマネージャー的な役割も兼務するようになりました。
そもそも、Wantedly には「エンジニアあるいはデザイナーがプロダクトマネージャーの役割を兼務する」という文化があります。その文化の表れとして、エンジニアとデザイナーからなる開発チーム全体を「個別のプロダクト(or 機能)にオーナーシップを持つ小さなチーム」に分割して、その分割されたチームがそれぞれのプロダクト戦略と数字目標に責任を持つ、という体制で開発を行っていました。それぞれのチームにはリーダーがいて、最終的にはリーダーが数字目標やプロダクト(or 機能)の方向性に責任を持ちます。自分もそういったリーダーの1人でした。
プロダクト開発チームにいた時代はやる事が多くて大変でしたが、一方で「プロダクト開発のライフサイクル」や「様々なトレードオフ」、「ステークホルダーと調整しながら上手くプロジェクトを進める方法」など多くのことを学んだように思います。例えば、書籍「アジャイルサムライ」に出てくる「時間(リリーススケジュール)とスコープ(機能)とクオリティのトレードオフ」などは実感を持って体感出来ました。リリーススケジュールや人的リソースなど様々な制約がある中でどうインパクトを出すかを常に考え、そのために「優先度付け」や「小さなコストでの素早い学び」の重要性を強く意識しました。また、継続的にプロダクトの改善を行うために、「ソフトウェアが変更容易な状態を保つためにどういった設計にするか」ということも考え続けていました。
振り返ってみると、プロダクト開発を行った最初の3年間の経験は、その後の自分の仕事の進め方に強く影響を与えたように思います。
(ちなみにこれは余談ですが、最初に名前をあげた3つのプロダクトのうち、「Wantedly Tools」と「CASE」については昨年4月にサービス終了となりました。様々な事情もありしょうがないのですが、立ち上げに関わっていた1人としては少し寂しくもあります。。。)
Wantedly インフラチームへの異動
3年間プロダクト開発を行った後で、2018年にインフラチームへ異動しました。これは、自分の意向と会社の意向が以下のように重なったことで生まれた動きです。
- 自分の意向: プロダクトの数字目標がある中で、分析や戦略の考案に時間を使う場面も多かった。それは楽しくチャレンジングである一方で、「エンジニアリングに使える時間を増やしたい」という気持ちがあった。また、個人的に学んでいた「スケーラブルなシステムの構築方法(e.g. 分散システムの知識、パフォーマンスチューニングの知識、低レイヤの知識、etc.)」などの知識を活かしたいと思ったこと、2010年代のインフラ領域のテクノロジーの発展に強い興味を持っていたことなども後押しをした。
- 会社の意向: システムのマイクロサービス化(= チームごとに固有の Repository と Service を持つ状況)が進む中で、アプリケーションレイヤーにガッツリ手を入れてチーム横断での基盤整備が出来る人が欲しかった。
実はこの時は他社も含めて検討したのですが、最終的には「Wantedly のインフラチームで基盤整備をするのが一番面白そう」だと判断しました。
ここで、インフラチームで取り組んだことについて書く前に、「Wantedly のインフラチームがそもそもどういったチームなのか」について軽く説明しておきます。Wantedly のシステムは基本的に全て Kubernetes Cluster の上で動いていて、インフラチームは Kubernetes を中心に基盤(= 開発ツールや開発環境、CI/CD の仕組み、各種ライブラリ、etc.)の整備を行っています。これは、全体像としては以下のような3レイヤーでシステムを捉えられることを意味します。
[Application (= Microservices)] [Kubernetes] [Cloud (= AWS, GCP)]
一番下は「Cloud レイヤー」で、これは AWS や GCP などのクラウドサービスを表しています。Wantedly は全てのサービスをクラウドに乗せているため、一番下がこのレイヤーになります。下から2つ目は「Kubernetes レイヤー」で、Kubernetes Cluster やその機能拡張を行う各種 Custom Controller、Kubernetes の API サーバーへリクエストしてデプロイなどを行う CLI ツールが該当します。一番上が 「Application レイヤー」で、Kubernetes 上で動く様々なマイクロサービスを表しています。Wantedly のインフラチームは、この3つのレイヤー全てにアプローチするチーム となっています。
強調しておきたいのは、「インフラチームは『依頼を受けて Cloud リソースを用意するチーム』ではない」 ということです。我々は「依頼を受けて何かする」のではなく、「仕組みを作って社内の開発者が自分で必要なものを揃えられるようにする」ということを重要視していました。例えば Cloud リソースは Terraform を利用して Git 管理を行い、「開発者が自分たちに必要なものは自分たちで PR を出して作る」ということを可能にしていました。また、新しくマイクロサービスを追加したい場合も、「開発者が自分たちで Kubernetes 向けの Manifest file を用意して Apply 出来るようにする」ことで、インフラチームがボトルネックにならずに済む様にしていました。マイクロサービス開発が活発になってからは、開発生産性とシステムの信頼性の両方を高めるために、「社内外で利用されるライブラリの開発や、マイクロサービスアーキテクチャの改善」なども行なっていました。
インフラチームは、開発チームのメンバーそれぞれがオーナーシップを持ってマイクロサービス開発の全プロセスに携われる様に「仕組みを整える」ことに注力していました。
なお、この辺りは infrastructure_README.md というドキュメント にもまとめています。これは、Wantedly のインフラチームの活動を社外の方に説明する際に利用していたドキュメントです。CTO や後任のインフラチームリーダーから許可をもらったので、ここに掲載しておきます。詳細が気になる方は、こちらも参照してみてください。
自分がインフラチームで取り組んだプロジェクトのうち、主要なものは以下になります。
- マイクロサービスアーキテクチャ改善
- Cloud Pub/Sub の基盤整備と社内利用促進
- gRPC の基盤整備と社内利用促進
- その他細かいプロジェクト多数
- プロダクト開発チームのマイクロサービス開発サポート
- Kubernetes cluster 管理(ニーズに応じた構成変更、Version up、Custom controller 導入、etc.)
- 新人研修の企画・実施
- etc.
上記のプロジェクトを進める際は、「システムのマイクロサービス化が進む中で開発チームの日々の取り組みをいかにスケールさせるか」、「ツールやライブラリやシステムによる基盤をどのように提供するか」、「高い信頼性と高パフォーマンスを両立するシステムをどう実現するか」を常に考えていました。「様々なマイクロサービスから利用されるコアマイクロサービスの開発」や「社内で利用されるライブラリの開発」は、そのためのアプローチの 1 つです。「基盤として提供する事で、開発者が自然と恩恵が受けられる」という体験を意識していました。
その他、OSS 化や取り組みの発信も積極的に行うようにしていました。結果として、取り組み自体を社外の方に知ってもらう機会を増やせたのは良かったなと思っています。
インフラチームで仕事を進める中で、途中からは技術的なリードや People Management にも取り組むようになりました。数人のチームのマネージャーとして、チームのパフォーマンスを最大化させるための取り組みを出来たのは良い経験となったと思います。「改善され続ける組織やチーム」というものに自分は思い入れが強くて、それを意識しつつ、「チームが目指すゴールの設定、チームの日々のワークフロー改善、Member との 1on1、採用活動、etc.」などに取り組みました。
ここまでが、2021年4月までに Wantedly で仕事として取り組んだ内容です。
Wantedly での日々を振り返ってみて
Wantedly での日々を振り返ってみると、ちょうど3年間の区切りで「プロダクト開発チーム」、「インフラチーム」と新しい環境にチャレンジしていたことが分かります。それぞれに異なる難しさがあったように思いますが、どの時代も「学び」はありました。ここまでに書いてきたことと重なりますが、あえて「学び」を書き出すと以下のような内容になると思います。
- プロダクト開発チーム時代 .. プロダクトをどう成長させるか、様々な制約条件の中でプロジェクトをどう進めるか、ソフトウェアが変更容易な状態を保つためにどういった設計にするか、etc.
- インフラチーム時代 .. プロダクト開発チームの日々の取り組みをどうスケールさせるか、ツールやライブラリやシステムによる基盤をどのように提供するか、高い信頼性と高パフォーマンスを両立するシステムをどう実現するか、etc.
- 注: プロダクト開発チーム時代と同様の学びももちろんある
Wantedly には様々なチャレンジの機会を与えてもらい、そのお陰で成長出来たと思っています。感謝しています。一方で、自分が生み出した価値も相当量あると思っていて、十分に恩返しは出来たのかなとも感じています。
Niantic への転職について
自分にとって、 Wantedly という会社は今でも好きな会社です。一方で、以下のようなモチベーションがあり、それはすぐには達成出来ないというもどかしさもありました。
- 世界中で多数のユーザーに使われるプロダクトの開発に携わりたい
- 「大量のデータを扱い、多数のトラフィックを捌く」という技術的チャレンジをしたい
- 「自分の変更が世界中の人々の活動にポジティブな影響を与える」という実感を得たい
そういったモチベーションを持って検討した結果、縁あって Niantic からオファーをいただけることになりました。
Niantic は自分が Pokémon GO ユーザーだったこともあり、憧れていた会社の1つです。そういった会社で働けることを、とても嬉しく思っています。入社後は、3月にアナウンスがあった「ピクミンを起用したアプリ」のサーバーサイド開発を行うことになりそうです。リリースされた際にはぜひ遊んでいただけると嬉しいです。
実は、Niantic からオファーをもらった直後はあまり実感が湧きませんでした。しかしながら、しばらくすると様々なグッズが会社から送られてきて、現実として認識できるようになりました。送られてきたグッズの中でも以下のトートバッグはお気に入りで、日常生活でも使い始めています。
転職とチャレンジ
今回の転職は、様々な面で自分にとってチャレンジだと思っています。例えば、以下のように多くの観点から「自分にとって初めての取り組み」となっています。
- 初めての転職
- 初めての米国企業
- 初めてのゲーム開発
- 初めての仕事での Java 開発
- 初めての「世界中で使われるプロダクト(= 大量のデータを扱い、多数のトラフィックを捌く必要のあるプロダクト)」の開発
- etc.
不安はゼロではないですが、それも含めて「新しいチャレンジ」をとても楽しみにしています。
オフトピック: 選考プロセスについて
具体的には書きませんが、Niantic の選考プロセスは一般的な外資ソフトウェア企業とあまり変わらないんじゃないかと思います。実は、自分は1年以上前に Google の SWE ポジションで面接を受けて、技術選考は通った(= Phone Interview, Onsite Interview を受けた上で採用委員会から Approve をもらった)ことがあります。2020年はその後色々あり、結局 Google では採用には至りませんでしたが、この経験は役に立ったように思います。
また、これは自分が勝手に思っていることかもしれませんが、選考の中では自分の「スタートアップでの経験」も評価してくれたように感じています。Niantic は(Wantedly よりも大きいとはいえ)まだまだスタートアップなので、経験が活きる部分もあるんじゃないかと期待しています。
まとめ
Wantedly での6年間を振り返ってみました。また、Niantic への転職について、考えをまとめてみました。
自分にとって、この転職は様々な点からチャレンジだと思っています。このチャレンジを楽しみたいと思います。
最後になりますが、今回の転職にあたっては様々な方にお世話になりました。この場を借りてお礼申し上げます。