目次
アジャイル開発を行っている案件で参画して書籍「アジャイルな見積りと計画づくり」を読んでスプレットシートで工程管理した備忘録。
スプレットシートで管理する工程は?
スプレットシートで管理するものはストーリー、タスク、サブタスクといった粒度で、それよりも粒度の大きい工程はRedmineといった管理ツールを使います。詳細は下記リンク
ストーリー?エピック?アジャイル開発で用いられる用語の粒度をまとめた
下記はスプレットシートの管理例です。
ストーリーとは?
ストーリーは「<ユーザーの種類>として、<機能や性能>が欲しい、それは<ビジネス価値>のため」といった形で記述します。
ストーリーの順序はサービス利用者の重要度で昇順に並べかえ、開発者の作業順にしないように注意します。理由はスケジュールが遅れると納期に間に合わせるために工程を削減してしまうため、削減されるストーリーに顧客が本当に必要だったものが含まれないようにするためです。
ストーリーの優先度はシステム評価指数(RASIS)やソフトウェア品質要因で分類して決めるのも有効な気がします。例えば、顧客が「同じ条件で丸一日放置して使いたい」という要望ならアプリがクラッシュしないように可用性に分類したストーリーを優先し、設定の入力はほとんど変えないのでUIに関するストーリーは低めにします。
ストーリーポイントとは?
アジャイル開発では工数は日数ではなくストーリーポイントで相対的に見積もります。
ポイントはフィボナッチ数列を使う
数値は1,2,3,5,8といったフィボナッチ数列を使うのが一般的です。10,20,50,100といった数値でも問題ありません。一番大きい数値が一番小さい数値の10倍を超えないという原則を満たしていれば、どのような数値を使っても問題ありません。
私は各粒度のストーリーポイントを
サブタスクはフィボナッチ数列で記入
タスクはサブタスクの合計値
ストーリーはタスクの合計値
で計算し、タスクかストーリーのポイントの最大と最小のポイントを見比べて、一番大きい数値が一番小さい数値の10倍を超えた場合は工数を見直すというやり方を取っています。
ちなみに0という数値を使っても問題ありません。後で他の0の工程と掛け合わせて1ポイントのサブタスクを作ったり、他の工数に取り込ませたりします。
プランニングポーカーでチームから意見を聞く
ソフトウェア開発では予想外の工程が発生して開発工数が伸びることがよくあります。それを防ぐためにプランニングポーカーを行ってチームメンバーから想定していなかった工程をあぶり出しします。
プランニングポーカーはポイントが書かれたカードで行いますが、リモートワークだとアナログな方法が使えないので、スプレットシートを使って行いました。やり方は、事前にストーリーからサブタスクまで一通りの工数を記入しておき、ポイントはメンバー全員に各自記入してもらいます。その後、オンライン会議を行って全員のポイントを見比べ、
一番低い人から、なぜ早く終わると思ったのか?と意見を募って不要な作業をあぶり出し
一番高い人から、なぜ時間がかかると思ったのか?と意見を募って想定外の作業をあぶり出し
スケジュールを見積り直します。
ベロシティとは?
1イテレーションの消化ポイント数のことです。1イテレーションは2週間で設定されるのが一般的です。
ベロシティを計測するメリットは納期が遅れてることが早期に判明できることです。例えば「4人の開発者が1日1人2ポイント消化できるならベロシティは80で全ポイントが400だから10週間後に納品できる」と想定していたが、開発を進めるとベロシティが70しかなかった場合、納期は遅れぎみであることが分かり、早期に顧客に納期を変更してもらう交渉をするか、優先度の低いストーリーを省いてリリースするかの判断をすることができます。
正確なベロシティを測定するには平均値を算出する必要があるのである程度イテレーションの経過が必要です。また消化済みのポイントにする判定基準も明確にしたほうが良いです。例えば、コードレビューを受けてマージを行った場合を基準にします。
さいごに
書籍を読んで基本的なアジャイルな手法で学んでから実務で運用した感想ですが、工程を相対的に見積もることでスケジュール作成に時間をかけずに済みますし、ベロシティを測定したことで営業の人が設定した納期よりも遅れる事が数値で証明できるので、見積日を変更すべき説得材料にもなりました。
いままでやったスケジュール作成で一番理想なやり方だと思ったので是非とも書籍「アジャイルな見積りと計画づくり」を読んで現場で活用してみて下さい。