
アジャイル開発のフロー効率を可視化して優先度が高いタスクに取り組めているか定量的に把握する
こんにちは、すべての開発組織の生産性を上げたいhamです。
こちら、開発生産性 Advent Calendar 2024の11日の記事です。
アジャイル開発において、優先度の高い開発から1つずつ完了させていくことが重要です。
つまり、いかに「フロー効率」を高めるかがカギとなります。
フロー効率とは、作業が開始から完了までスムーズに流れるようにすることで、無駄な待ち時間を減らし、作業の完了までのスピードを上げることを重視する考え方です。
本記事では、フロー効率の良い開発ができているかを定量的に可視化する方法を紹介します。
フロー効率を可視化することで開発チームが優先度の高いタスクに取り組めているか否かを定量的に把握することができるようになります!
フロー効率の可視化
ここからはフロー効率を可視化する方法を例を交えて説明します。
今回は次のチームを想定してフロー効率を可視化します。
エンジニア: 5名
バックログアイテム: 10個

バックログアイテムに重みをつける
バックログアイテムに重みをつけます。重みの計算方法は次の通り。
重み = 100 / 優先度 / エンジニア人数
この計算式に従いバックログアイテムに重みをつけました。

当日のエンジニアが担当したタスクを記録する
エンジニアが1日に担当したタスクを記録します。
今回、午前 / 午後の単位で記録します。午前中に複数のタスクをすることもあるかもしれませんが、その際は一番工数をかけたものに丸めます。また、開発以外のことをしていた場合は「開発以外」を記録しています。

記録する単位を1時間単位などより細かくすることで精度を上げることが可能ですが、細かくすればするほど記録の手間がかかるので、求めたい精度と手間のバランスを検討しましょう。
管理者視点だと精度を上げる方に目が行きがちですが、現場からしたら工数入力とは面倒なものです。精度と工数のバランスには気をつけましょう。
フロー効率を定量化する
次の数式でフロー効率を定量化します。
フロー効率 = SUM((タスク実績 * 重み) * (1 / 工数分割数))
今回、午前 / 午後の2つに分割しているため工数分割数は2です。「開発以外」は重みを0で計算します。
とある日のタスク実績にフロー効率の計算式を当てはめると次の通り。

上記を全て加算すると「58.335」となり、これがこの日のフロー効率です。
フロー効率は全てのエンジニアが優先度最大のタスクに着手した場合には「100」となり、全てのエンジニアが開発以外を実施した場合は「0」となります。
フロー効率を時系列で確認する
フロー効率の可視化ができたら時系列でグラフにして確認します。
以下は、実際に私の所属している開発チームの1月と11月のフロー効率を可視化したものです。

1月は平均70くらいをキープしており、優先度の高いタスクに着手できていることがわかります。
理論上は100に近ければ近いほど良い数値ではあるのですが、エンジニアの人数が一定数いると全員が1つのタスクに取り掛かることは現実的ではないため、リソースの分散が起こります。
そのため、70ほどの数値でヨシと判断しています。

一方、この月は25ほどで低迷しています。
理由を深掘りしていくと、優先度の高いタスクの仕様が詰まっていない箇所が多くあることがわかり、仕様調整しつつ待ち時間に優先度の低いタスクやリファクタリングなどの改善タスクを中心にこなしていたためでした。
このような状況でも優先度の低いタスクやリファクタリングなどによりアウトプットは出ているため、アウトプット量だけで開発チームの状況を見ていると本当にやるべき開発が進捗していないことを見過ごしてしまうことがあります。
フロー効率とアウトプット量を合わせて確認することで、開発チームが「優先度の高いタスク」を「アウトプットできている」ことを把握することができるようになります。