page icon

経験主義的な見積りと計画

"経験主義的な見積りと計画"はなぜ重要か

アジャイル開発においては、計画や見積りを行わなくて良いという誤解が持たれていることがあります。しかし、これは間違いです。見積もりは、正確で効率的な計画を立てるための習慣として重要であり、計画を立てることも重要です。
しかし、ソフトウェア開発プロジェクトにおいて、ソフトウェア自体の複雑性もあり、長期的な計画を行うことが非常に難しいのが現実です。
では不確実なプロジェクトに対して、どのようにしたらより正確に、効率的に計画ができるのかを考えた場合、この"経験主義的な見積もりと計画"が重要になります。
経験主義とは、計画時の机上の見積もりよりも過去の実績をより信頼できる情報として捉えることです。具体的にはアジャイル開発では以下のようなプラクティスが用いられます。

具体的なプラクティス

チーム全体で見積もる

チームの特定の誰かの意見だけが反映された見積もりをしてしまうと、メンバーによってスキルレベルの差があったり、より効率の良い開発方法を見積もった人が場合もあったりするため、チーム全体の能力の見積もりにはなりづらいです。
しかしプロダクトを開発するのはチーム全体ですので、見積もりはチームで行うほうが正確になります。
よってマネージャーが見積もる、チームの特定の誰かが見積もるというのはアンチパターンです。タスクに着手するチーム全員で合意がとれるような見積もりの方法が必要になります。代表的なプラクティスとして、プランニングポーカーを使った見積もりがあります。

一定のタイムボックスに区切って生産性を計測

プロジェクトの始まりから終わりまでの生産性を計測しては意味がありません。その経験を活かす場もなく、その生産性がベストなものかどうかわからない状態になってしまいます。よって1週間〜1ヶ月程度の短いタイムボックスにおいてチームの生産性を計測します。この過去実績により、次のタイムボックスでどれくらいの生産ができるかをより正確に予測できます。

タイムボックスでの生産性を一定レベルまで向上させる

チーム生産性は無限に向上させることはできないですし、プロジェクトの初期は効率化できることも多々あるため、一定レベルまで生産性を向上させることは可能です。チームの生産性を一定レベルまで向上させたあとは、それを安定させることで、将来の生産量の見通しが立てやすくなり、正確な計画ができるようになります。
ただし、一定レベルを超えてしまってもなお生産性を上げることを強制するようにしてしまうと、逆に見積もりが不正確になってしまったり、チームの安定性が欠けてしまったりします。

相対規模見積もりを行う

ある要件を基準として選択し、その要件と比較して2倍規模なのか、3倍規模なのか、半分なのか、など相対規模を見積もる手法です。選択した基準となる要件は徐々に陳腐化していくリスクもあるため、定期的に別の要件を基準として選択し直すのが望ましいです。
ある程度抽象度が高く、規模の大きいものを見積もる際に、アジャイルチームが正確に見積もりができる手法として広く知られています。

長期計画はチームの生産性を考慮し、不確実性への考慮を

タイムボックス内での生産性がわかったら、中長期において開発する要件に対しても相対規模見積もりをすることによって、中長期的な計画を立てることができます。しかしそれでも計画が長ければ長いほど不確実性が増すため、バッファのないスケジュールは遅延のリスクが非常に高くなります。

タイムボックス内などの短期計画はより具体的な計画を

1週間などの短いタイムボックス内での計画においては、1年などのプロジェクト全体期間と比べて比較的不確実性が低くなります。よってより具体的に、詳細な計画を立てることが可能です。
細かい粒度のタスクに分解し、タスクを正確な時間で見積もることで不確実性を排除し、1週間の計画も正確にすることができます
どのように計画を立てるかについては、振り返りなどの機会を通して定期的に改善を繰り返すとよいでしょう。

経験主義的な見積りと計画のクライテリア

参考資料