概要
エンジニアとして経験を重ねていくと、避けては通れない「工数見積」。
そんな見積の方法として最近取り入れてみた方法があるので、その紹介と使ってみた感想のメモ。
フィボナッチ工数見積(プランニングポーカー)
大まかにいうと、機能を可能な限り細かく分け、難易度をフィボナッチ数(2、3、5、8、13、21)でつけて工数を見積を行っていく方法。
詳しくは以下のサイトに書かれている内容がとても参考になりました。
実際にやった手順
一人開発チームみたいな状況だったので、チームでの作業はほとんどなかったので
以下のように見積をやってきた。
-
機能の細分化
- 作業する単位などできる限り細かく分ける
- 各機能の粒度はできる限りそろえる
-
フィボナッチ数の割り振り
- 細分化した機能の難易度に応じてフィボナッチ数を振っていく
- フィボナッチ数:2、3、5、8、13、21
-
難易度を工数に直す
- 掛け率決めて工数出す
- 自分は
0.5人日
でやっていた(2の難易度のタスクが1人日で終わらせられる想定) - 明らかに工数が大きくなりすぎたりした場合は、ほかのタスクと比較しながら調整して最終的な工数を決める
やってみてどうだったか
あくまでも個人の感想です
- メリット
- 難易度から工数を機械的に算出できる(多少手直しはいるものの)のが楽だった
- 過去の開発経験から難易度を考慮するため、実際に作業したときの工数と大きくぶれることが少なかった
- 過去の開発の似ている機能の見積を参考にしやすい
- 過去の難易度決めの時のフィボナッチ数と実際の工数を比較するとさらに参考になった
- デメリット
- 感覚値に近いものなので、説明を求められたときに納得のいく説明をできないことがあるかも
- チーム全体でやるなど複数人でやることでこのデメリットは解決するのかも
- 感覚値に近いものなので、説明を求められたときに納得のいく説明をできないことがあるかも
まとめ
見積はどこまでつきつめても「予測」なので、実際の工数と完全に一致することはほとんどないと思う。
だからこそ、正確にやろうと見積に時間をかけすぎるのはもったいない気がするので、
ルールに則ってある程度の工数を機械的に出してしまうのも1つの方法なんじゃないかと思います。
その際に採用するルールの1つの候補として、フィボナッチ工数見積は個人的にはありかと思っています。
あまり複雑な計算とかをするわけではないし、個人単位の作業見積では導入しやすいかと思います。
上司とかに納得してもらえるよう説明するところはうまくやらないといけないとは思うけど。。。