実際の90のルール


24

コードの最初の90%が開発時間の最初の90%を占めています。コードの残りの10%は、開発時間の残りの90%を占めています。

—トムカーギル、ベル研究所

それは実際にはどういう意味ですか?プログラマーはかなりの量の仕事をしており、180%を自分たちから与えているのですか?


2
100%を超えると再定義されるか、既知の量の1.8倍であることは誰もが知っています。ただし、この場合、おそらく誇張だと思います。2番目の90%は、それを覚えやすくし、引用の最後にパンチラインを追加するためにあります。
AJFaraday 16

1
開発時間の見積もりは、文の途中で変わります。
ミレニアムバグ

180%は、プロジェクトのコストとなる時間と予算です。
Agent_L 16

1
厄介な最終文にもかかわらず、この質問が何を尋ねているかは完全に明らかだと思います。
マシュージェームスブリッグス

2
この引用は冗談として読むことになっていますが、その文脈では意味があります。最後の10%があなたが想像したよりもはるかに長くかかると言っている
リチャードティングル

回答:


40

次のように想像してください。ソフトウェアの作業を開始すると、比較的短時間で大量のコードを作成できます。この新しいコードは、膨大な量の新しい機能を追加できます。問題は、多くの場合、その機能が「完了」とはほど遠いこと、バグ、小さな変更(ビジネスでは小規模)などが存在する可能性があることです。そのため、ほとんどのユースケースをサポートしているため、ソフトウェアはほぼ完成したように感じるかもしれません(90%完了)。しかし、ソフトウェアにはまだ作業が必要です。このルールのポイントは、ソフトウェアがほぼ完成したと感じているにもかかわらず、そのソフトウェアを適切に動作状態にするための作業量が、その「ほぼ終了」状態に達するのと同じくらい大きいということです。これは、バグ修正に時間がかかることが多いが、大量のコードを生成しないためです。

問題は、ほとんどの開発者がソフトウェアを「ほぼ完了」状態にすることを見積もるということです。これは、ソフトウェアがとる総作業量を実際に見積もるのに比べて比較的単純だからです。


3
90-90の錯覚の理由の大部分は、ソフトウェアエンジニアが成功の道筋を視覚化することが多いことです。エラーと例外のケースを処理することは、後から考える必要があります。元のデザインが低確率エラーのケースを考慮していない場合、ソフトウェアを終了する前に修正する必要があります。
ランブルウィード16

1
+1ですが、レッスンの非常に重要な部分であるため、2番目の段落には大胆なテキストが必要だと感じています:)
ボブTway

20

残念ながら今日でも発生しているのは、一般的なシナリオへの参照です。

  1. チームは、すべてのコードを書くのに必要な作業量を推定(推測)するよう求められます。
  2. このプロジェクトは、「時間と予算を守る」という内部および外部からの多数のプレッシャーを伴います。
  3. そのため、プロジェクトのかなりの割合で、「目標どおり」が報告されています。これは多くの場合、最初に簡単なタスクを選択して良好な進捗を確保することによって悪化します。
  4. その後、ある段階で、現実を受け入れなければならない重要なポイントに到達します。プロジェクトは時間どおりに完了せず、リリース日が延期されます(多くの場合)。

「90%」は任意の数字ですが、それはポイントをうまく作ります:推定は推測であり、おそらく間違っている(多くの場合非常に間違っている)ため、人間の性質によりほぼ常に推定以下であることが保証されるため、物事はオーバーランします。


14
「アジャイル」と呼ばれているものは、問題を解決するものではありません。それは、カーギルがファセット的であったとしても、より小さな絶対スケールでまったく同じ比率が発生する小さなアイテムに単純に分配します。一番下の行は、すべてのプロジェクトが開発時間の多くを占めるいくつかの小さなものを持っているということです。
Blrfl 16

3
@Blrfl答えは、アジャイルが見積もりの​​困難な問題を解決することを意味するものではありませんが、見積もりを小さくすることで結果を緩和します。
エリック

これは、リソース管理の問題だけではありません。プロジェクトの90%のプロトタイプをすばやく作成することは非常に簡単ですが、残りの10%には多くの時間がかかります。初期要件に完全に準拠することが重要な場合が多いためです。私は組み込みシステムに携わっており、製品リリースの数か月前に営業担当者に製品のデモを提供することができます。彼はデモと最終製品の間にほとんど違いはありませんが、デモは出荷可能ではありません。バグ、最適化、高度な機能、消費電力、それはother 90%
ティム

アジャイルのたわごとがファンを襲い、爆破しても私を信頼してください!
JonH

2
アジャイルについての再考は、回答の主要な点から人々を明らかに混乱させているため、削除しました。
デビッドアルノ

7

次のような別のバージョン(「90-90ルール」とも呼ばれます)を聞いたことがあります。

機能の90%を実装した後、他の90%を実装する必要があります。

どちらのバージョンも、ソフトウェア製品を開発するための労力を正しく推定することの難しさと、人々が陥りやすい一般的な落とし穴について言及しています。

  • 推定が必要な場合に統計を捨て、本質的に推測する(「私は80%完了」)
  • 作業量を犠牲にして、記述するコードのアルゴリズムの複雑さに焦点を当てる(一般的なタスクに必要な労力を過小評価する)
  • 足りないステップ(「見えない、気にしない」)
  • 既存のコードを維持および変更するための努力を過小評価する
  • 定型文/「接着剤」コードに必要な労力を過小評価する

6

このルールは80-20ルールを補完します。現在、80-20ルールにはさまざまな解釈がありますが、私が最も気に入っている2つは次のとおりです。

  1. 最初の80%の製品開発には20%の労力がかかります。
  2. エラーの80%はコードの20%にあります。

実際には、これは次のことを意味します。最初の遅延に気付く特定の時点まで開発が開始され、続行されます。遅延にはさまざまな性質があります。

  • 品質管理が不十分で、バグが発生する
  • 顧客が途中で思いついた追加の要件(およびその理由は複数ある場合もあります)
  • 最初から不明確な要件。これにより、以前の開発の一部が削除されます(回帰バグも発生する可能性があります)。
  • 不明確な範囲、人為的ミス、または予測できない状況による初期の過小評価。これらの予測できない状況は、病気の葉、辞任、ハードウェア障害、または極端な場合には火山の噴火である可能性があります(アイスランドの火山の噴火のために現地で飛行できなかったため、プロジェクトを延期しなければならなかったため)。

要するに、実際に目標に到達するよりも、目標に近づく方がはるかに簡単です。



4

私が見つけWikipediaの説明は非常に啓発:

これは、スケジュールを大幅に超過するソフトウェア開発プロジェクトの悪名をひそかにほのめかすと、180%になります(ソフトウェア開発作業の見積もりを参照)。プログラミングプロジェクトの簡単な部分と難しい部分への大まかな時間の割り当てと、多くのプロジェクトの遅れの原因を、難しい部分を予測できないこととして表します。つまり、プロジェクトを機能させるには、予想よりも多くの時間とコーディングが必要です。


1

それは実際にはどういう意味ですか?プログラマーはかなりの量の仕事をしており、自分自身から180%を与えているのですか?

いいえ、プログラマは単位時間あたり常に同じ量の作業を行います。見積もりは、コストとオーバーランの過小評価に関するものです。180%は、プロジェクトの最終的なコストと時間です。

大まかに言うと、「考えているよりも2倍長くかかります」と「すでに手遅れになるまで(締め切りが近づいているまで)順調に進んでいると思われます」。


1

これが実際に意味することは、人々が自分自身に嘘をつくということです。

プログラマが「90%完了」と言った場合、機能を構築する努力の90%が費やされていることを意味します。

プロジェクトマネージャーが「私たちは90%完了しました、誰かにそれを完了するだけでいい」と言ったら、予算内で90%(そしておそらく50%完了)であることを意味します。これは、お金がなく、期待が高く、態度が悪いクライアントです。

違いは、プロジェクトを完了するためにコーディング機能よりも多くの労力がかかることです:qa、バグ修正、コピー編集、展開。

これらはプロジェクトで管理する必要があり、プロジェクトマネージャーの責任です。これは、多くの場合、「90%の機能が完了した」ことを自覚している新しいPMを驚かせ、「プロジェクト完了」の半分にすぎないことに気づきます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.