「進捗90%」の呪い
プロジェクトを進めていて「90%完成です」が出てきたら危険な兆候です。
「進捗どうですか」「90%できました、ほぼ完成です」
〜3週間後〜
「進捗どうですか」「90%できました、ほぼ完成です」
笑い話のようですが、実際にこれに近いシチュエーションは起きがちです。
少し古い本ですが「Manage It!」にも「90%完了」の項があり、この問題を警告しています。
なぜ起きるのか
100%はどこ?
往々にして前提となる100%の定義は曖昧です。ある開発者が考える100%は、他の人から見れば70%かも知れません。
当初100%だと思っていた地点が開発を進めていく中で実は中間地点だったと判明すれば、100%の定義は更新され、ゴールは遠くなります。
ゴールが逃げた結果として、開発そのものは進んでいても完成度は3週間後も90%のままになります。
進捗度をパーセンテージで表すのは難しい
そもそもソフトウェアの開発の進捗は直線的に計測できるものではありません。
古くはファンクションポイント法、アジャイルのプラクティスとしてはプランニングポーカーなど様々な見積もり手法は存在しますが、あくまで目安です。また、その数字の精度を高めるにはコストがかかります。
「あなたのいう90%は80%とは具体的にどこがどれだけ違うのですか?」と質問された時に自信を持って答えられる人は多くはないでしょう。
多くの場合、90%という数字は「開発は順調に進んでいて、あと少しで終わると思いたい」気持ちの表れです。
聞いた側も安心したいがためにその数字を信用します。そして実際のプロジェクトは進みません。
「90%できています」が示すのは「まだできていない」という一点だけです。
どうすればいい
具体的な残タスクで考える
我々の目的は正確な完成度を数字で出すことではなく、ユーザーに価値のある機能を届けることです。
そのために必要なことは何か、既にできていることは何か、そして「あと何をすればいいか」を具体的に書き出しましょう。
それが10%に当たるかどうかを議論する必要はありません。残った仕事に全力で向き合いましょう。
ただの感覚でしかない数字で進捗を考えるのではなく、事実を基に話をしましょう。
「今すぐこの場で完成させようぜ」
対象のスコープが小さい場合は、あれこれ言わずにそのまま完成させてしまいましょう。
本当に90%完成しているのであれば、その場で完成させてしまうのは難しくないはずです。
「もうほぼ完成したから大丈夫」みたいな安心感から仕事を片付けそびれているのであれば、それを聞いたあなたが最後の一押しを手伝いましょう。
その場ですぐに解決できない何かがあるとすれば、それが何であるかを具体的に洗い出すチャンスです。
判明するのは「もうすぐ完成ではなかった」という事実かもしれませんが、それも前進です。
90%で立ち止まらない
プロジェクトにおいて「手を付けているが完了していない仕事」はリスクでしかありません。
リリースしていない機能は何も価値を生みません。リリースはゴールではなくスタートです。スタート地点より手前で止まっている時間はロスにしかなりません。
コードの観点から見るとmergeできていないコードはconflictを生みやすくなり、生存期間の長いブランチは余計なコストがかかりがちです。
とにかく「90%できてます」が出てきたら油断してはいけません。その状態をよしとすると、プロジェクトには呪いがかかります。立ち止まらず、すぐに前に進みましょう。
Discussion