コードの最初の90%が開発時間の最初の90%を占めています。コードの残りの10%は、開発時間の残りの90%を占めています。
—トムカーギル、ベル研究所
それは実際にはどういう意味ですか?プログラマーはかなりの量の仕事をしており、180%を自分たちから与えているのですか?
コードの最初の90%が開発時間の最初の90%を占めています。コードの残りの10%は、開発時間の残りの90%を占めています。
—トムカーギル、ベル研究所
それは実際にはどういう意味ですか?プログラマーはかなりの量の仕事をしており、180%を自分たちから与えているのですか?
回答:
次のように想像してください。ソフトウェアの作業を開始すると、比較的短時間で大量のコードを作成できます。この新しいコードは、膨大な量の新しい機能を追加できます。問題は、多くの場合、その機能が「完了」とはほど遠いこと、バグ、小さな変更(ビジネスでは小規模)などが存在する可能性があることです。そのため、ほとんどのユースケースをサポートしているため、ソフトウェアはほぼ完成したように感じるかもしれません(90%完了)。しかし、ソフトウェアにはまだ作業が必要です。このルールのポイントは、ソフトウェアがほぼ完成したと感じているにもかかわらず、そのソフトウェアを適切に動作状態にするための作業量が、その「ほぼ終了」状態に達するのと同じくらい大きいということです。これは、バグ修正に時間がかかることが多いが、大量のコードを生成しないためです。
問題は、ほとんどの開発者がソフトウェアを「ほぼ完了」状態にすることを見積もるということです。これは、ソフトウェアがとる総作業量を実際に見積もるのに比べて比較的単純だからです。
残念ながら今日でも発生しているのは、一般的なシナリオへの参照です。
「90%」は任意の数字ですが、それはポイントをうまく作ります:推定は推測であり、おそらく間違っている(多くの場合非常に間違っている)ため、人間の性質によりほぼ常に推定以下であることが保証されるため、物事はオーバーランします。
other 90%
次のような別のバージョン(「90-90ルール」とも呼ばれます)を聞いたことがあります。
機能の90%を実装した後、他の90%を実装する必要があります。
どちらのバージョンも、ソフトウェア製品を開発するための労力を正しく推定することの難しさと、人々が陥りやすい一般的な落とし穴について言及しています。
このルールは80-20ルールを補完します。現在、80-20ルールにはさまざまな解釈がありますが、私が最も気に入っている2つは次のとおりです。
実際には、これは次のことを意味します。最初の遅延に気付く特定の時点まで開発が開始され、続行されます。遅延にはさまざまな性質があります。
要するに、実際に目標に到達するよりも、目標に近づく方がはるかに簡単です。
私が見つけWikipediaの説明は非常に啓発:
これは、スケジュールを大幅に超過するソフトウェア開発プロジェクトの悪名をひそかにほのめかすと、180%になります(ソフトウェア開発作業の見積もりを参照)。プログラミングプロジェクトの簡単な部分と難しい部分への大まかな時間の割り当てと、多くのプロジェクトの遅れの原因を、難しい部分を予測できないこととして表します。つまり、プロジェクトを機能させるには、予想よりも多くの時間とコーディングが必要です。
これが実際に意味することは、人々が自分自身に嘘をつくということです。
プログラマが「90%完了」と言った場合、機能を構築する努力の90%が費やされていることを意味します。
プロジェクトマネージャーが「私たちは90%完了しました、誰かにそれを完了するだけでいい」と言ったら、予算内で90%(そしておそらく50%完了)であることを意味します。これは、お金がなく、期待が高く、態度が悪いクライアントです。
違いは、プロジェクトを完了するためにコーディング機能よりも多くの労力がかかることです:qa、バグ修正、コピー編集、展開。
これらはプロジェクトで管理する必要があり、プロジェクトマネージャーの責任です。これは、多くの場合、「90%の機能が完了した」ことを自覚している新しいPMを驚かせ、「プロジェクト完了」の半分にすぎないことに気づきます。