転職しました

公開日: 2021年5月18日GitHub

近年はコロナ禍でまだまだ慌ただしいですが、転職をしていました。昨年の12月ごろから転職活動を開始して、今年の2月ごろに内定を受け取って3月から働いています。

転職活動の話

今はByteDanceの日本法人でソフトウェアエンジニアとして働いています。

自分のこれまでやってきたことを説明すると、自分はこれまでエンジニア歴としては5年働いていて、最初の2年間は福祉の会社でRailsエンジニアとして働いていました。その後にスタートアップで3年くらいエンジニアとして働いていて、ReactでSPAを作ったりRails, Golang, Node.jsなどでバックエンドを書くような仕事をしていました。直近の一年間は比較的ビジネス寄りのこともしていました。

今回の転職活動の動機としては、グローバルな環境でチャレンジしたいと考えたことです。これまで自分は小規模なスタートアップで働いていて、ユーザーの近くで素早く機能を追加してウェブサービスを改善していく、ということをしていました。ただ、自分のスキルの範囲内でユーザーの求めるものを作るという方向に年々向いてしまいマンネリ化してしていました。スタートアップでやる仕事は自分の経験としても、周囲から聞く話からもよく知っていたので、環境を変えるならば、もっとグローバルな大規模な開発を経験したいと考えるようになりました。この辺りのモチベーションからグローバルでIT事業を展開している企業を中心に応募していました。

一方で前者の動機と矛盾するようですが、自分は元々、大学院で技術経営という領域をやっていて技術を経営に生かすような仕事をしてみたいとも前々から思っていました(大学時代の就職活動はWeb系の会社と戦略系のコンサルファームを並行して受けていた)。ちょうど、そのタイミングで経営コンサルティングの会社がITエンジニアの募集をしているという話を聞き、そちらに応募することにしました。その後、ビジネスの領域にも関われそうなクラウドの会社などにも応募しました。

最終的に幾つかの会社からオファーをいただくことができたのですが、転職活動を振り返りながら自分のキャリアの軸として、まずソフトウェアエンジニアとしての経験を積むことを優先するべきであると判断し、最終的にByteDanceに入社することにしました。

ソフトウェア開発を主軸にキャリアを積んでいくということに関しては、自分がこれまでやってきたことがそうであるということと、ウォーレンバフェットが自分の影響の輪の中に集中しよう、というようなことを言っていて心に残っており、自分にとってのフォーカスは自分の手でソフトウェアを作ることだと考え直しました。これまで自分はスタートアップしか経験していないので、ソフトウェア開発を理解する上で、世界的にうまくいっているソフトウェアの会社で働くことは自分にとって得るものは多いだろうと思ったのもあります。

ByteDanceが面白そうだったポイントとしては、ByteDanceはTikTokの親会社ではあるのですが他にもLarkというグループウェアなど、グローバルなプロダクトを複数持っていて、グローバル基準のソフトウェア開発を行えるだろうと思ったことがあがります。 また、ByteDanceの採用プロセスが他社よりも何倍も大変だったので、このような採用プロセスを設定しているのだから中にいる方達も優秀な方達が多いだろう、という期待がありました。

上記のような経緯で今年の3月からByteDanceで働き出しています。

入ってみて実際どうか

ByteDanceに入っても先程の挙げたような期待は全て達成できていますし、毎日かなり楽しく働いています。基本的にまだリモート勤務なので一度も物理出社はしていないのですが、バーチャル入社式を経て問題なく働けています。

ByteDanceはコンプライアンスが非常に厳しいので自分がどういう仕事をしているのかなどは書くことができないのですが、グローバルなチームの一員として働いています。組織としてはアメリカのチームのメンバーが多く、今自分が扱っているコンポーネントはアジア圏にいるメンバーで開発をしており、タイムゾーンの壁はあまり感じていません。ただUSのメンバーとは働いている時間帯が違うので、コアタイムが一日3時間くらいしか被っていなかったりするのでコミュニケーションの課題は感じています。

今は主にJavaやGoでバックエンドの開発をしています。Javaに関してはこれまで書いたことがなかったので、手探りながら書いています。Javaは触ってみると扱いやすくてとてもいい言語ですね。

巨大なIT企業で働くことがどんな雰囲気か掴めた

これまでIT x 何かという領域で働いてきて、純粋なソフトウェアの会社で働くのは今回が初めでした。そのため、ソフトウェア自体が収益の源になるというのは新鮮でした。また、とても大きな企業なので、社内がある種の巨大なエコシステムのようなもので、手探りで社内の仕組みや文化を学んでいます。

大きなソフトウェアの会社で働くということは、個々人の自主性が非常に重要だと感じています。もともとスタートアップと比較すると、自分一人で管掌する領域が狭くなるのではと感じていましたが、実際のところはとても大きな裁量を持ってシステムのデザインを行い、開発を進めることができています。スタートアップで作るシステムのボリュームを1としたときに、大きな会社だとそれが10や100、それ以上だったりします。比率で見ると拘る範囲は狭くなりますが、扱うコードの規模も増え、個人として担う責任の領域はむしろ大きくなったと感じています。

スケーラブルなシステム作り

開発するサービスはスケールすることを最初から折り込んで実装をしているので、初めから分散DBを活用したり、水平スケーリングを行ったとしてもきちんと動作するように設計する必要があります。今のプロダクトはマイクロサービスアーキテクチャで開発しているのですが、実装の難しさを痛感しています。最近マイクロサービスパターンという本を読んだのですが、この本は非常におすすめでした。単純に扱うミドルウェアも増えますし、これまでの知識が活かせない場面も多く、バックエンドの開発をゼロから学び直しているような感覚でいます。

ドキュメントの重要性

最近、頻繁にドキュメントを書いています。これにはいくつか背景があると思いますが、一つはタイムゾーンの違うエンジニアとやりとりする必要があること、ソフトウェアの品質管理のためにdesign doc時点でのレビューが有効だからだと思います。

実際、design docとは言えないくらい簡素な文章でも文章として起こせば後から見返すことができて便利ですし、実装する段階になって抜け漏れが発生することも防げるので、有用なプラクティスだと感じています。

英語はやっぱり大事

ソフトウェアを書いている分には、コードの命名やコメント、テストに気を使って書きつつコードレビューを英語でやれれば特に問題はありません。

ただ、先ほど述べたように文章を読み書きしたり、英語でのミーティングやプレゼンなどを行う機会もあるのでやはり英語は必須だと思います。自分は話す聞くが苦手なので練習をしないといけないなと思っています。

今後どうなっていきたいか

今の会社には、とても技術的に刺激を受けることが多く、入社して本当に良かったなと思っています。しっかりとキャッチアップして会社に貢献したいと思います。

今のところまだ手探りで仕事をこなしている状態なので、グローバルな環境でもソフトウェア開発をリードできるような存在になりたいと感じています。

今回の転職活動では記事では割愛しましたが、選考過程では内資・外資問わずにアルゴリズムの試験があったので、LeetCodeでの対策はかなり役に立ちました。しばらく転職するつもりはないですが、アルゴリズムの知識は自分のキャリア上必要だと思うので、年単位で練習は続けていきたいと思っています。

This site uses Google Analytics.
source code