進捗管理の意味
進捗管理は何のために行うのでしょうか。組み込みソフトウェア開発の場合は、ハードとの結合の日が決まっていてその日までにソフトを完成させるためにマネジメントするというのが本来の意味だと思います。
しかし、マネージャがうるさく聞くから適当に百分率で答えているということも多いのではないでしょうか。この場合、開発期間前半での完成率の12%や34%というのはなかなか耳にすることはありませんが、後半90%台は非常に細かく報告されます(笑)。これは、開発期間前半では全体量が見えていない証拠ではないでしょうか。
百分率で報告するにはその母数を固定化する必要があるのです。それでは母数を固定化することは可能でしょうか。開発案件、特にソフトウェアとハードウェアが絡んだ組込み開発の場合、やってみないとわからない、または、やりながら新しいアイデアがわいてくることもあり、開発開始時に完成までにどれだけの作業があるのか予測することは非常に困難です。
実際は、過去の経験をベースに未来のリスクを積み上げて全体量をおおよそ予測しているにすぎないのが現実ではないでしょうか。しかも、その予測をするための工数も結構かかってしまっている。当たらない未来予測のために多くのコストをかけているので、それを死守できなくなって罪悪感にさいなまれる。こんな悪循環はどこかで断ち切る必要がありそうですね。
前回、目標と作業をカードに書き出すこと方法をお伝えしました。今回は作業を書き出したタスクカードを作業量の母数として進捗管理を行う方法を説明します。
ガントチャート
まず、みなさんが良く目にするガントチャートについて簡単に説明しましょう。
開発を行う場合、たいていスタート時点でリリースまでの計画を立てます。これをガントチャートを使って図で表します。ガントチャートを見ると〇月×日にはどの作業をしているというのが明確にわかります。しかし、ガントチャートと実際の作業とは乖離していることが多くないでしょうか。原因は2つ考えられます。
- ガントチャートを誰も見ていない
- 途中で予定が変更されたがガントチャートがメンテナンスされていない
ガントチャートを定期的に更新し、メンバーの見えるところに掲示するようにし、計画通り開発を進めようとマネージャは努力するのですが、なかなかうまく行きません。そもそもチャレンジ要素の強い開発はガントチャートで管理できるのでしょうか?ここで開発プロセスの観点で見てみましょう。