1エンジニアとして入社しCTOになってからの半年、そしてこれから

f:id:yuhei_kagaya:20191225122155p:plain この記事はBASE Advent Calendar 2019の25日目の記事です。

devblog.thebase.in

BASE株式会社でCTOをやっている川口 (@dmnlk) です。 2019年7月1日にCTOに就任させていただきました。 そこからちょうど半年経った今、エンジニアが40名近い会社で自分がCTOとして感じたことや変化、その先への考えを綴りたいと思います。

BASEでCTOになった経緯については下記にて取り上げていただきました。 そもそもこういう媒体に自分が出るようになった、というのも目に見える変化だと感じています。
type.jp

careerhack.en-japan.com

自分のキャリアについて登壇させていただく機会もいただきました。 今までの自分ではこういう機会は訪れなかったと思うので、立場やタイミングというのは得てしてこういうものがあるのだなぁと感じています。
devblog.thebase.in

CTOに就任してからの最初の3ヶ月について

就任したその日から技術の責任者としての自覚を得られていたかというと正直そんなことはまったくありませんでした。 弊社では3ヶ月ごとに開発スケジュール組むことが多いのですが、その前にやっていた開発の残りがあったのでそのまま継続して行っていました。小さな不具合や改善なども自分で行ってしまっていました。 CTOを引き継ぐ際に前任CTOの藤川より「開発現場のリーダーが就き、技術的な意思決定を担う」とCTOの定義をされていたので自分が開発現場で日々の開発をしていても問題はないと考えていたこともあり、特に自分の考え方をアップデートせずリードエンジニアの思考のまま日々を過ごしている状態でした。 しかしこれは、現場のリーダーではありますがCTOとしての振る舞いとしてはあまりよくなかったと今は感じています。 もちろん、全くコードを書かないつもりはありません。 ですが、CTOとしてはメンバーの成長とプロダクトの成長を第一に考え次のプロダクトの非連続的な成長を迎えるために技術投資を行っていくことが重要です。

その次の3ヶ月

就任し3ヶ月も経った頃、ふと「このままでいいんだろうか」という気持ちになりました。 採用も進み、優秀なメンバーも増えています。 そんな折、コネヒトよりパネルディスカッションの機会をいただきました。 その時の模様は記事になっています。
type.jp

ここで初めて他社のCTOという存在に直接関わりました。 特にコネヒトのCTOである伊藤さん(@itosho)は同じようなタイミングでCTOを引き継いだこともあり親近感を感じましたが、自分より遥かに組織を前に進めようと動いているなという焦りを感じました。 クックパッドの成田さん(@mirakui)も組織やプロダクトに向き合いながらもISUCONで優勝しており、自分より遥かに高い場所にいました。

このまま漫然と自分がやるべきでもないコードを書き(メンバーがやるべき雑務というわけではありません)立場だけCTOになっていていいのか、引き継いだ意味は本当にあったんだろうか?と自分がやるべき事を見直し始めました。

今では80万以上のショップ様に利用して頂いている「BASE」というプロダクトですが技術的な課題は非常に多くあります。 利用しているウェブフレームワークのEOL、モノリシックなアプリケーションにより開発速度の低下、耐障害性や負荷問題、データが均質化されていないことによる分析のしづらさ、枚挙に暇がありません。 非連続的な成長を成し遂げるための技術投資も行わなければなりません。 もちろんプロダクト自体のクオリティを高め、プロダクトを使って方々により良い体験を届けるための開発もしていくことも必要です。 これら全てをBASEの課題として認識し、一つ一つクリアにしていき解消するための方針を立て優秀なメンバーの能力を最大限に活かしながら前に進めていくことがCTOに求められている責任であると認識を改めることにしました。

今現在とこれから

現在のプロダクトに直接関わるようなコードは書かずたまに障害対応用の小さなコード群を書くくらいになりました。 代わりに現状のBASEを見つめ直し、課題に対する優先度を見つけたりその課題を解消できるような技術選定や検証を行うことが増えました。 採用に関しても、現状困っている部分に対してコミットしてくれるようなメンバーという視点だけでなく未来のBASEの問題に取り組んでくれるようなメンバーか?といった視点でも選考するようになりました。 考えてるだけでコード書けないのでは?と思われるのも厳しいので、もう少しなにかできないかというのは悩みです。 未来のBASEを作るアーキテクチャというものに悩んでいますが、それがこのままモノリシックなのかマイクロサービスアーキテクチャなのかモジュラーモノリスなのかといった辺りは非常に難しくまだまだ結論が出ません。 メンバーと1on1をするようにもなりました。これはある種の技術選定と同義だなと考えています。普段開発をしているチームのエンジニア達がどのような課題感を持っていたり志向性を持っているかで、次のアサインを決めていくのが重要なので日々の対話を疎かにすべきでないと思っています。人数が多いので大変ですが...

2020年は今のBASEのシステムに大きい変化を行っていく予定なので今から楽しみです。技術力とプロダクト理解、それぞれが求められるような変化なので僕もコード書いてコミットしていきたいです。

CTOになって良かった?後悔している?

たまにこの事を知人には聞かれます。 正直な話、BASEじゃなかったらやりたくないなと思うくらいには大変だなと思います。 全然ゴールが見えないし、何をもってして自分がやりきったと言えるかがまだまだ不明ですし自分が決めた選択の重みが今までとは比べようもなく大きいと感じます。 ただ自分がやりたいインターネットだなと思っているプロダクトとチームが目の前にある中で大きな裁量を持って仕事できることは人生で数少ないので今やれることを精一杯やっていきたいです。

最後に

この記事で上げたようなBASEにおける課題について共に考えて手を動かして「BASE」というプロダクトをもっと最高にしていく仲間を募集しています。 募集は下記にありますが、まずは僕とカジュアルにオフィスで話をしましょう。 binc.jp