web-dev-qa-db-ja.com

プログラミングプロジェクトの時間を見積もることはどのくらい可能ですか?

多くの問題や最初に予想されなかったことが発生する可能性があるため、近づくことはほぼ不可能に思われます。合理的に見積もるとどのくらい近いと予想できますか?私たちのPMは、ガントチャートやそのようなマッピングなどを一度に数週間に渡って実行できるようにしたいと考えています...したがって、これらのバグを解決できると言います。がかかり、ゴールは金曜日になりますが、毎週のように、物事は破棄され、次の週にプッシュされます!適切な時間を推測するにはどうすればよいですか?

41
MetaGuru

ホストジョエルは エビデンスベースのスケジューリング を推奨しています。これには、不正確な推定、中断、注意散漫、およびその他すべての通常の容疑者を説明する方法が含まれます。

最大の強打アイテム:

  • 与えられた作品をやっている人は、その見積もりに最終的な発言権があります。マネージャー、リード、または委員会は、見積もりを却下することはできず、作業を他の誰かに再割り当てするだけです。
  • タスクを分解すればするほど、最終的な見積もりの​​信頼性が高まります。影響は2つあります。1つ目は、過大評価と過小評価のエラーが互いに打ち消し合う傾向があり、2つ目は、作業についてより詳細に検討することになる内訳を実行して、全体的な精度を向上させることです。
45
Jeffrey Hantin

Steve McConnellの本 Software Estimation:Demystifying the Black Art が本当に好きです。彼が重点を置いているいくつかの本当に重要なポイント:

  1. 見積もりまたは目標をお探しですか?見積もりとは、「これらの機能を実装するのにどのくらいの時間がかかるか」という意味です。ターゲットは、「この日付までにいくつの機能を実装できるか」を意味します。これらは2つの異なるものであり、関係するすべての人があなたが話していることをすべて知っていることを確認し、それらの2つを混同しないことが重要です。

  2. 特に早い段階で、精度が高すぎる見積もりを与えることに注意してください。一点推定を与えないでください。プロジェクトの最初の推測が4週間である場合は、「2〜8週間」のように見積もります。一部の不確実性を排除するプロジェクトのフェーズ(要件の開発、設計など)を実行するまで、より正確にすることは不可能です。

17
Jesse Smith

評価を実行する前に、タスクをできるだけ分割することをお勧めします。この演習では、何をすべきか、およびどのように計画するかを深く理解する必要があります。これが完了すると、サブタスクをすでに実行したものと比較し、現実に近いものを持つ可能性が高まります。あなたがしなければならないことの仕様が不明確な場合、あなたはこの瞬間にもそれを見つけるでしょう、それは良いことです。

40時間を超えるタスクを正確に評価することは困難です。プロジェクトマネージャーが優れていると、彼はそれを知っています。間違っていても大丈夫です。経験は、評価に真の違いをもたらす唯一の本物です(そして、結局、完全なものではなく、正しい答えに近づくのに役立つだけです)。

私はまた、ポーカープランニングに関して非常に素晴らしい経験をしました。私のチームがそれを使用すればするほど、彼らの評価は向上します(それに、それは楽しいです!)。

7
MissT

フリーランサーとして働くことは、私にとって常に問題です。私がそれをひどく間違ったとしたら、お金を失います。

プログラミングのための見積もりに関する問題は、正確に何人かの人々がここで識別したものです-それは、決して未知の土地に吹き飛ばして見積もることができる未知のものと落とし穴です。

ですから、私が使用するものは2重のアプローチです。

A.問題がソフトウェアの既知のドメインにある場合、私は完全に精通しているので、簡単なメンタルブレークダウンを行い、引用します。多くの場合、クライアントと一緒に、プロジェクトについて話し合うときに前もって大まかな質問をします。これらについては、通常は喜んで同意します。私は警戒心が強いのですが、これは以前のプロジェクトを構築した経験にすぎません。

B.問題が不明なドメインである場合。これらのケースでは、重要な問題を事前に特定し、問題を「スコープ」するためにそれらの周りにテストケースをコーディングします。時々、これを「実現可能性」調査として支払うようにクライアントを説得することができますが、未払いの時間を入れることができず、問題の範囲を定めることは、クライアントXを引用するよりも、解決にnX時間を必要とすることを見つけるよりも安価です。

AまたはBに該当する問題を特定し、Bの重要な項目を特定することは経験次第ですが、一般的なルールは普遍的に適用できると思います。常に重要な問題を前もって切り分け、最初にこれらに対処してください。それらがわかったら、より信頼できる従来の手法を使用できます。

4
Cruachan

これは、これまでに使用した中で最も優れた方法です。 http://en.wikipedia.org/wiki/Wideband_Delphi

それはまだ完璧ではありませんが、うまくいけば、少なくともあなたは野球場に入ります。

3
grieve

過去に使用した2つの推定方法を次に示します。彼らは動作しますが、私はそれらをお勧めしません。

  1. どれくらいの時間がかかると思うかを見積もり、それを2倍にします。各プロジェクトの最初に、変更によって時間が増えることを明確にしました。また、変更が要求されるたびにこのことを思い出します。これは、パンツの推定方法をそのまま飛ばす方法ですが、方法論や会議を信じていなかったため、現実的なものを確立することは不可能でした。

  2. それが終わったらそれが行われます。これは通常、暇な景品プロジェクトでのみ機能しますが、元の管理者が二重に推測する方法に賢明になったときに、元の管理者を説得することができました。それが機能した唯一の理由は、プロジェクトの予想される利益が莫大であり、解決策の必要性が重要であると考えられたためだと思います。彼らの唯一の選択肢は、市販のソフトウェアを購入することでしたが、99%の時間で購入を拒否しました。

3
Scott

6週間から8週間かかります。

計画に2、3日を費やし、プロジェクトを2日または3日単位に分解してから、非開発アクティビティに費やした時間を考慮に入れます。しかし、数週間より長いものは、同様の難しさを持つ他のプロジェクトに基づいた見積もりになります。

1
Pete Kirkham

予期しないことが発生した場合、アーキテクチャ、デザイン、またはコードなどを変更することで対応します。見積もり自体は、それらに伴って進化するはずです。これは、プロジェクトの開始時に決定された値であってはならず、everythingの場合は更新されないでください。それ以外の場合は、プロジェクト中に更新および展開できます。

1
Brian Ensink

1つは、おなじみのテクノロジーを使用しておなじみの何かで作業している場合にのみ推定が可能であることです。本当に新しいことに取り組んでいる場合、時間の見積もりは確かに成り立たないでしょう。それでも、時間の見積もりが単なる推測にすぎない場合でも、計画を立てる(プロジェクトを分割して何らかの形で注文する)こと自体は非常に有益です。あなたのPMはおそらくこれを知っています;主なことはある種の計画を作成することです、見積もりが正しいことではありません。

1
Joonas Pulakka

経験が重要です。あなたは前回何が起こったか、その前に何が起こったかを知っており、特定のタイプのタスクに対してどれだけのことができるかを知っているので、見積もりは非常に簡単です。 Yuoは教育を受けた推測に基づいて、空中から数を選びます。見積もりと開発の経験が増えると、それが上手くなります。

あなたはプロジェクトマネージャーと彼のガントチャートを満たすために十分に完璧になることは決してないでしょう(ため息、そのようなものはデフォルトでファジーエッジが有効になっている必要があります)推定時間であり、保証された時間を与えていません。

0
gbjbaanb

私にとって、それは経験に伴うものです。私がプログラマーであったころは、プロジェクトの長さを常に過小評価していたようです。あなたが言ったように、物事は浮上し、プロジェクトはより長くかかります。 「飛行時間」を手に入れた今、私はそれらの「もの」が何であるかを予測するのがずっと上手です。予期せぬ事態が発生する可能性はありますが、最近の期間は一般にはるかに正確です。

0
Al W

マイク・コーンによる「アジャイル見積もりとプレーニング」を強くお勧めします。これは、人間の性質により実行しやすい点に基づいた相対的な推定を説明します。この本はポーカーの計画についても説明しています。

0
Miquel