見出し画像

爆速開発をしていくためのFindyの取り組み

こんにちは、Findy CTO の @ma3tk です。筋肉痛は気持ちをポジティブにしてくれますね!なかやまきんに君の動画を見て新しいトレーニングを始めたら背中が広くなった気がします。

本日は、Findy が爆速開発をすすめている中で、開発スピードが去年と比べるとおおよそ5〜9倍ほど上がってきています。どうしてそこまで開発スピードを上げていくことができたのか、という Findy の取り組みについて書いてみようと思います。

現状: Findyのチーム開発状況

スクリーンショット 2021-06-20 17.21.19

Findy では、Findy Teamsという組織のパフォーマンスを可視化するサービスを提供しています。この棒グラフと折れ線グラフは、Findy Teams 内で提供しているプルリクエストの数とプルリクエストに関連してかかる時間の移動平均をとったものです。

グラフは去年の6月から今年の6月までのデータになっており、プルリクエスト数(棒グラフ)は全体で5倍、プルリクエスト数のクローズまでの時間も1/5〜1/9ほどの時間になっています。

人数が増えてくることでプルリクエスト数は増えますが、レビューが回らなくなったりなどが発生し、レビューされるまでの時間やプルリクエストのクローズまでの時間が増える傾向が見受けられます。

そういった状況は弊社は一時的にありますが、徐々に解消し、以前よりも早くなる状況を作れています。

背景: エンジニアリング組織での開発効率が良くなっている理由とは?

大きく3つの観点からこうなったと考えています。

・モノレポからの脱却
・ビルドスピードのアップとプルリクエストの細分化
・メンバーのレベルアップと優秀なメンバーのジョイン

1. モノレポからの脱却

Findy のリポジトリは初期の開発を1〜2人で行っていたため(僕ですね)、ほとんどのプロジェクトでフロントエンドとバックエンドが一体化したモノレポ状態での運用がなされていました。

一人で開発している分には何も気にせずに進められていましたが、1チームの人数が3〜5人以上で進めていくとプルリクエストの数が多くなり、軽微なフロントエンドのテキスト修正すらもバックエンド側も含めたビルドを行う必要がありました。

その他にもバックエンドの影響範囲が見えにくく、その代わりE2Eテストすればいいんじゃないかと思ったりもしていました。しかし、E2Eテストは不安定なことが多く、テストのための特別対応などが増えてしまうこともありテスト拡充を行わず、モノレポの良さを活かせない状態になっていました。

そのため、昨年末、今年の前半で2つのプロダクトでモノレポから脱却し、フロントエンドとバックエンドでリポジトリ分割を行いました。

結果、フロントエンドもバックエンドそれぞれで影響を強く気にせず、やりたいことに集中できるようになりました。もちろんお互いに気にしないわけではなく、セマンティックバージョニングも取り入れ、バージョンによるリスクの察知なども行いやすくしました。

2. ビルドスピードのアップとプルリクエストの細分化

課題として大きかったものの1つとして、開発時のCIや本番リリースのためのビルドが1回あたり15分〜35分ほどかかり、1行の変更をしてレビューを行ったとしてもマージできるまでが非常に遅く、その結果レビュー依頼が来ても全体で後回しにされがちという状況が続いていました。

リリースも1週間に一度大きなリリースを行うような状況だったためその状況から脱却すべく、上述したリポジトリ分割を実施し、不要なテストの削除や並列化、キャッシュの利用などの改善を行うことでビルドが高速化できました。その結果、最大でも4分でビルドが完了し、800%〜900%のビルド高速化になりました。

CIやテスト周りは新機能が増えたりしていくとどうしても肥大化しやすく、常々ボトルネックになりがちなので改善を行う必要があります。今後も定期的に改善の手を入れていく予定です。

3. 優秀なメンバーのジョインとメンバーのレベルアップ

ここまで書いてきたことは僕個人の成果ではなく、優秀なメンバーがたくさん入ってきて即座に状況を変えてくれたり、メンバー一人ひとりがレベルアップして取り組む課題が困難でも取りかかれるようになっていたり、取り組んでから解決するまでのスピードがものすごく早くなってくれたおかげかと思います。今この爆速開発を進めてくれているみなさん、本当にありがとうございます。そして、今までどんな形であれFindyの開発に関わってくれていたみなさんありがとうございます。

伸びしろだらけのプロダクトをサービスの成長に合わせてどうやって課題解決していくかが求められます。やりたいことがたくさんある中でやらないことを決めることもできますが、全部潰していけるような爆速開発組織は継続して大きくしていきたいと思います。

課題: 今後のエンジニアリング組織の拡大

まだまだ僕ら Findy はエンジニアにとっていいサービスを作りきれているかというとやるべきことがいっぱいありますし、優秀なエンジニアを採用したい企業の採用担当者からするともっとマッチしたユーザに向き合えるようなサービスづくりを必要としています。

過去はサービス提供できていたものも、現行のサービス全体の成長スピードに対して、まだまだエンジニアリング組織が追いついていない状況です。爆速開発できる基盤は徐々に整備できてきました。課題も結構見えてきましたし、やるべきこともクリアになってきたように思います。

ただ、一緒にこのスピードで走ってくれるメンバーがまだまだ足りていません。一緒に Findy の爆速開発しませんか?

フロントエンドテックリード
https://herp.careers/v1/findy/hZxTLu24TQTq
バックエンドテックリード
https://herp.careers/v1/findy/8eBmIwP3W2pW
フロントエンドエンジニア
https://herp.careers/v1/findy/n3GYFS0yUnAH
エンジニアマネージャー
https://herp.careers/v1/findy/ypgJQ5_ObYex

ファインディ株式会社 の全ての求人一覧
https://herp.careers/v1/findy

最高に楽しい企画と課題を準備してお待ちしています。お気軽にご応募でもTwitterでDMいただいても大丈夫です。カジュアル面談形式でも大丈夫です。なかやまきんに君のトレーニングの件のお問い合わせでも大丈夫です!!お待ちしてます!