開発生産性の可視化にはFindyTeamsさんを利用させて貰っています。 約1年ぐらい前のリリース時に導入のご案内は頂いていたのですが、その時は課題感がありませんでした。というか正確には計測さえもしていない状態だったので、何も判断指標が無い状態でした。
ただ夏に役員合宿をするにあたって、全社の生産性についてのアジェンダがある中で人数的に最大派閥であるエンジニアリング本部の”生産性”というのはどうなのか?という問いに自分は定量的に答えられずにいました。 また他の部署から見るとエンジニアの開発速度やクオリティが他社と比べてどうなのか?というのがわかり難いという点もありました。
時を同じくするように当社SREである@biosugar0もFour Keysの可視化をしたいと思っていると聞いて、様々な方向から意見があがっていたので、これは本部として開発生産性を可視化する事で、自分たちの現状を把握しより良い開発組織の構築をすべきだと強く認識した事から始めようと思いました。
最初はFour Keysに沿った指標を自前で集めようと考えていました。 少し調べるとGitHubのアクションベースで集めている会社さんの記事が散見されたので、同じようにトライしようとしました。
const query = '{ \
search(type: REPOSITORY, query: "org:SmartShoppingInc", last: 100) { \
repositoryCount \
nodes { \
... on Repository { \
id \
url \
name \
} \
} \
} \
}';
const options = {
'method' : 'post',
'contentType' : 'application/json',
'headers' : {
'Authorization' : 'Bearer ' + ACCESS_TOKEN
},
'payload' : JSON.stringify({query:query})
};
const response = UrlFetchApp.fetch(ENDPOINT, options);
const json = JSON.parse(response.getContentText());
return ContentService.createTextOutput(JSON.stringify(json)).setMimeType(ContentService.MimeType.JSON);
こんな感じで、GitHub API v4を使えば簡単に取り出せそうだというところまでは辿りついたのですが、すぐに見せ方をどうしようかと悩みました。
グラフィカルツール系のSaaSなどを使ってもいいかなと思ったのですが、こねくりまわさないとダメだろうなというのが容易に想像できたので、もう少し調査したところFindyTeamsさんの記事が引っかかって、まさにやりたいと思っていた事がすでに実現されていたのですぐにコンタクトを取って9月からの導入に至りました。
これは改善に取り組む前の2022年5月〜7月までのサイクルタイムの平均値です。 FindyさんとのMTGも経ての総評としては、中の中ぐらい。 スタッツによってはそれなりに良いところもありますが全体としてはまだまだ改善の余地があるところばかりでした。
Findyさんのアドバイスも含め、他社さんの動向を見ていると、まずは「1プルリクあたりの平均マージ・クローズ時間を24時間以内にする」という目標が目標に向けての最短ルートとなりそうなので、それを目標におきました。
手始めに以下の項目に取り組みました。
当たり前だが前段として。2021年プルリクが残っていたりしました。。。 これは各自すぐに対応してくれて、数日後には1週間より前のプルリクは残らなくなりました
これは開発チーム内で完結しやすい点(PdMやQAなどが関わらないので)から取り組みました。 - 各開発チームで朝会を持っているので、そこでプルリクのレビューを強制的にやってもらう(後にすぐにルール化しなくても回るようになりました) - レビュー待ちがある場合、優先するようにそもそもの啓蒙 - 自チームのメンバーが作成したプルリクこそ早くレビューしてあげようよ!という思いやり - 外れ値になってしまいそうなプルリクの精査も合わせて行いました
これだけで少し改善の兆しが見えました。
Before
After
直近取り組んでいるのは巨大なプルリクへの対応です - シンプルにできそうな点だと1プルリクあたりの変更行数の目安で、こちらは200行を目安とするようにルール化しました。 - 1プルリク = 1タスクとなるようにタスク分解も行いはじめています
これらによって1月あまりの活動で全体感としては少しだけ進捗しているので、手応えを感じ始めています。
このようにまだまだスタートしたばかりではありますが、当社での開発組織全体のパフォーマンス向上に着手した取り組みをご紹介しました。
1つ1つは大きな施策ではないですが、まだまだ取り組める対策は多く、かつ銀の弾丸は無いと思っていますので、確実に1つ1つ施策を積み上げて「開発生産性を半年で2倍にする」という目標を達成したいと思っています。
そしてもちろん「開発生産性を半年で2倍にする」のはあくまで過程であり、真の目的は
チームのQCDの現状を常に認識できるようにするため
です。
最後までご覧いただきありがとうございました。 また3月に(半年後に)成果をブログを通じてご紹介したいと思います。
スマートショッピングでは、このような開発組織で一緒にサービスを作り上げてくれるエンジニアを募集中です。 ご興味のある方はぜひご応募ください!