より良い見積もりをする方法を学ぶには?[閉まっている]


42

私は見積もりを吸います。誰かが私に何か時間がかかるかと尋ねると、私は完全に調子が悪くなるので、推測する勇気さえありません。通常、私はあまりにも楽観的であり、おそらく私の推測にいくつかの大きなX因子を掛けるべきです...

より良い見積もりをする方法を学ぶにはどうすればよいですか?私の大学では教えられていませんし、すべての労働の期限がありますが、私は何かが実際にどれくらいかかるかについて決して考えません。どっちがいい?みんなのために(特に私のもの)。



回答:


28

私はまだ得意ではありませんが、タスクを見積もる時間と実際にかかる時間を追跡することは大きな助けになることがわかりました。そうすれば、普段どのくらい離れているかをしっかりと把握できます。時間管理機能を備えた問題管理ソフトウェア(私の場合はJira)またはスプレッドシートは、これに役立ちます。

何よりも経験的なことだと思います。


1
この。これは推定の最も便利な方法です。改善するために、実際にタスクを実行するときにタスクの時間を追跡することができるため、次回はより良い推定値を与えることができます。作業分解構造は、このための使いやすい概念です。
タマスゼレイ

3
これは素晴らしい答えです。見積もりを書き留めるだけでなく、重要な決定事項、遭遇した問題や解決した問題などを書き留める「日誌」を書くと便利です。見積もりが判明した場合50%以上オフにすると、理由を調査するのに役立ちます。これらの「daylog」は非常に役立ちます(詳細については、「実用的なプログラマー」の64〜69ページを参照してください)。また、番号を誰に見せるかに注意してください。あなたが何をしているかを理解していない人は、あなたに対してそれらを使用しようとするかもしれません。
レイフ

私はあなたがすることをします-手動で。これは基本的にエビデンスベースのスケジューリング(en.wikipedia.org/wiki/Evidence-based_Scheduling)であり、Joelによって開拓され、fogcreek.com
fogbugzに

18

時間管理のマーフィーの法則:何かがどのくらい把握するでしょう取る、それがどのくらいの図アウトする必要があり、それを取ると、2倍になります。

次に、次に高い時間単位に移動します。したがって、1日のプロジェクトに2週間を割り当てます。


2
私はそれを言うのは嫌いですが、これはおそらく私がここで見た中で最も単純で最も効果的な指標です。
グレナトロン

3
私は、1つを追加し、それを二乗するルールを教えられました。1日かかると思う場合は、1を追加すると2日間になり、4倍にすると4日間になります。私は、倍増せずに大きさを上げて使用する他の人を知っています。1日が1週間になります。2週間半は2ヶ月半などになります。どんなに上手であっても、発生する未知の要素にパディングを追加する必要があります。
old_timer

9

それらをまとめて行うことで学ぶことができます。

Planning Pokerを使用しています。このコンセンサスに基づく推定するための技術。

見積もりを追跡し、効果的に行った結果と比較する必要があります。Velocityを取得します。

何かを推定するたびに、正確な推定を得るために最近の速度で乗算します。


ポーカーは本当に面白いように聞こえますが、リンクに記載されているとおり、このIRLを本当に実行しますか?より正確な見積もりを作成するのに役立ちましたか?
ハンニバルレクター博士

はい。このことで推定が楽しくなります!そして真剣に正確。もちろん、少し練習する必要がありますが、一度「取得」すると、他の方法では推定できなくなります。

本当に楽しいですね!:)残念なことに、私はこれを自分の会社で売ることはできません:-/
ハンニバルレクター博士

@drハンニバルレクター:ペットショップのトリックを使用します。それを決定的なものではなく、テストするためだけに使用することを伝えます。私を信じて、それは決定的です;)

9

Steve McConnell(MS Press)によるソフトウェア推定は、良い読み物です。

ソフトウェア見積もりの​​主なものは、次のようにまとめられます

履歴情報がなければ、見積もりは役に立ちません。

これが、反復プロジェクトが大規模な段階的ウォーターフォールプロジェクトよりもはるかに成功している理由の1つです。彼らは、彼らがそれがどうあるべきかについてのいくつかのブラックボックスのブードゥー教以外の少しの情報で、一度に1年間の計画を立てようとはしていません。反復ごとに、再推定/再計画が行われ、推定の基礎となる最後のいくつかの反復があります。

留意すべきその他のポイント:

  1. 遅くなるだけです。80/20ルールを適用するということは、プロジェクト管理が非常に規律されていない限り、より難しい仕事が後から来るということです。
  2. 推定!=計画中。推定とは、何かを成し遂げるために必要な労力を把握するプロセスです。計画は、スケジュールに合わせるプロセスです。
  3. 60%の効率は、期待できるすべてのものです。70%はユートピアです。数日で見積もる場合は、これを組み込みます。数時間で見積もる場合は、後で適用することを忘れないでください。
  4. ロングテールを覚えておいてください。推定値は、ある程度のリスクや未知の要素に合わせて「おそらく」調整するのにかかる時間の大まかな推測です。実際に必要な作業量が0未満になることはないので、ロングテールが機能します。OTOH、最大時間は、あきらめるまでに費やす時間によって制限されます。私の上司が言ったように、「すべての見積もりは+/- x%であり、決してマイナスになることはありません」。

この60%の指標がどこから来たのか(そして70%のユートピア)を説明できますか?このトピックに関する記事はどこかにありますか?
krokodilko

7

Robert MartinのThe Clean Coderで説明されているPERTスタイルの推定手法について誰も言及していないことに驚いています。この方法では、楽観的(O)、名目(N)、悲観的(P)の3つのシナリオにかかる時間を推定します。次に、予想期間= (O+4N+P)/6と標準偏差が得られます(P-O)/6

これはかなり上手く機能しているようで、経営陣が何かがおそらくどれくらいかかるかを本当に気にかけているときに何度か使ってきました。

他の人がコメントしているように、履歴データを調べることで見積もりを行いました(「このようなことをするのにどれくらい時間がかかりましたか?」)。

しかし、私のお気に入りの方法は、時間の推定をまったく行わず、点の推定のみを行い、反復にわたって速度を取得することです。チームが作業のサイジングと完了(ユーザーストーリー)にかなり一貫している場合、各作業にかかる時間を尋ねることさえしないため、時間を大幅に節約できます。

時間の見積もりを正確に計算するのは非常に困難であり、効果的に測定するのに十分な小さなチャンクに物事を分解するには多くの作業が必要です。そして、それでも変数が多すぎて、病気、休暇、気晴らしなどのことを考慮するのを忘れているため、それらはめったに正しくありません。

時間の見積もりを行う必要がある場合、反復内の小さなタスクに対してのみそれらを行うようにします。それよりも少なくなる可能性があることがわかっていない限り、すべてを半日(4、8、12時間)の見積もりで測定します。しかし、私は1時間未満でほとんど何も推定しません。


この質問に答えて以来、私は「見積もりなし」キャンプにさらに移動しました。そこから素晴らしいアイデアが出ています。
アラン

5

まず最も重要なことは、プロセスを定義し、それに固執する必要があることです。プロセスの各フェーズの終わりに計画の修正を含めます。プロセスを修正することもできますが、規則正しい方法です。

第二に、ある種の設計を行います。設計は計画の最初のステップです。図面なしで家を建てることはできません。

第三に、トラック時間(努力)。少なくとも区別する必要があります:

  • 分析
  • 設計
  • コード
  • 単体テスト(欠陥の修正を含む)
  • 統合テスト(欠陥の修正を含む)
  • ユーザーによる受け入れテスト(欠陥の修正を含む)

    各テストタイプの欠陥修正の労力を測定することは素晴らしいことですが、複雑さを増すため、後で行うことができます。

第四に、推定のための重要な基本項目を特定します。例えば:

  • 自動化するプロセスの数(分析)
  • ドメインモデルエンティティの数(デザイン)
  • フォームとレポートの数(コード)

第5に、基本項目と労力を関連付けます。例えば:

  • 分析作業= X工数/自動化するプロセス
  • 設計工数= Y工数/ドメインモデルエンティティ
  • コード工数= Z工数/フォーム(またはレポート); フォームの数= A *ドメインモデルエンティティ
  • 単体テストの労力= M%*コードの労力
  • 統合テストの労力= N%*コードの労力
  • 受け入れテストの労力= P%*コードの労力

第6に、各プロジェクトのパフォーマンスと推定値からの逸脱を追跡します。したがって、相関係数を微調整できます。

第七に、繰り返して改善します。最初のプロジェクトの終わりに多くの洞察を得ることができます。3番目のプロジェクトでは、計画と見積もりが楽になります。

見ていhttp://en.wikipedia.org/wiki/Personal_Software_Processを、それが実際に動作します。


3

推定の問題に遭遇したときはいつでも、それらをより小さな部分に分割してみてください。それから、あなたがすでに断片に類似したことをしたかどうかを見てください。持っている場合は、それぞれの作品にかかる時間についての公正な考えをすでに持っているはずです。そうでない場合は、さまざまな種類のタスクにかかった時間を積極的に追跡し始める必要があります。これは、将来の見積もりに役立ちます。

統合とテストにはある程度の時間が必要なので、必要な合計時間は個々のピースの合計よりも長くなります。

同様のことをしていない場合は、おそらく他の人の経験に頼って、それらから推定値を得ることができます。しかし、これを額面どおりに受け取らないでください。経験を好むものは何もありません。

標的を撃つようなものです。推定の以前のショットは、あなたがそれを修正することができるように、あなたがどのくらい外れているかを教えてくれるはずです。


3

上記の最小タスクに分割するプロセスを実行して、それぞれを解決し、その推定値を2倍にするのが最も簡単だと思います。次に、それらを合計し、50%を追加します。これにより、理想的な条件でのおよそのプロジェクト時間が得られます。作業が実際に他の人と並行して行われるようになる場合、より長い時間が必要になります。あなたが他の人を待たなければならないなら、彼らがあなたが思うと思うのに2倍の時間がかかると期待してください。多くの場合、コンテンツやフィードバック、またはその他の情報を待つには、考えられるよりもはるかに長い時間がかかります。

私が作業する場所では、プロセスの各ステップのベストケース/予想されるケース/最悪のケースの推定値を算出します。これは、ガイドとして、また推定値がどのように機能するかを評価するのに役立ちます。

このテクニックは、タスクを過小評価するプログラマーの誘惑と戦う必要があることを除いてそれほど重要ではありませんが、重要なのは、いつ何かを提供できるかについて保守的であることです。何かを構築するのに7週間かかり、8週間を約束した場合は、少し早く来て見栄えを良くしたり、追加のテストを行って信頼性を保証することができます。6週間を約束した場合、それは絶対にあなたのせいではない場合でも、あなたは悪く見えることができます。疑わしい場合は、控えめに推測してください。


1

リストで繰り返される特定の事柄に必要な乗数を知るのに十分なレコードを構築するために、さまざまなタスクの見積もりと実際の実績の記録を作成しようとすることができます。これは試行錯誤によるものですが、私にとってはうまくいくようです。また、パターンが明らかになる前に、多くの試験で言わなければならないことがあります。これは他の多くの答えに似ている可能性が高く、「やるだけだ!」それが実際に私たちのほとんどがスキルを開発した方法だからです。見積りをするときに、自分がどれほど間違っているかを見るのは大きな苦痛ですか?はい。ただし、見積もりが良くなれば、最終的には誰もが幸せになります。


1

プロジェクトをより小さなタスクに分解し、それらを見積もることができれば、全体としてより正確になります。数日を超えるタスクはさらに分割する必要があります。おそらく要件のギャップがある以上に細分化できない場合。1行の要件についてナプキンの裏側の見積もりをうまく行う必要がある場合は、何も本当に役立ちません。悲しいことに、多くの店がほとんどの場合この方法で働いています。


1

それについて本を書くのではなく、推定の「内訳」方法を使用する方法について少しアドバイスします。

  • 割り当てを小さなコンポーネントタスクに分割します。各タスクを可能な限り最適に見積もります。

  • 計画と設計のためのタスクを追加します(これには現在行っていることも含まれます)。それを見積もります。

  • まだ持っていない場合は、「タスクをまとめる」ためのタスクを追加します。このタスクは、最初は役に立たないと思われるかもしれません。ただし、この「ブレークダウン」推定方法を使用する場合、「タスク間のフォール」および「タスクを一緒にプル」するために、常に時間がかかることがあります。これは推定が難しい場合があります。あなたのベストを尽くす。

  • テストとドキュメント化のためのタスクを追加します。割り当てには多くのテストとドキュメントは必要ないかもしれませんが、少なくとも少し時間をかけて考える必要があります。

  • タスクの推定値を合計して、全体的な推定値を取得します。

  • 先に進み、その合計推定値に2††を掛けます。これにより、次のことができるようになります。

    1. 元のタスクリストで見落としていたことを仕上げます
    2. 進行中になるまで知らなかったことができます
    3. 他の人からのフィードバックを取り入れ、変更を加える
    4. ミーティングなど、周りで起こっている他のことによって中断される
    5. 見積もりよりも頻繁に遅れて終了する

そして最後に、大事なことを言い忘れていませんが、恐らく完全に間違っているあなた自身の見積も​​りをスケッチすることを恐れないでください。場合によっては、非常に不正確な可能性があっても、すべてをスケッチするだけで、何が関係しているのかをよりよく理解するための道を歩むことができます。

††より多くの経験を積むにつれて、この「ファッジファクター」はあなたの個人的なスタイルとあなたの職場環境に合うように調整することができます。


1

自分のために働くときに働く式:

  1. Todoを1〜4時間の粒度に分解します。私は通常これらで正確だと思う

  2. 「未知の要因」:未知の数に2を掛けた係数を掛けます。つまり、couchdbアプリケーションを開発する場合、javascriptとhttp ..について何でも知っている場合は、マルチファクターとして2 ^ 2を追加します。

  3. context-switch-factor:完璧な環境(自宅の学習コーナーなど)で作業する場合は1.5倍、不完全な環境(オフィス/混雑した場所など)で作業する場合は2.5

これは実際にかかった時間の+/- 20%以内であることがわかりました。


0

独自のバイアスを学びます。最後の推定値が係数2で低すぎる場合は、次回、初期推定値を2倍にします。(もちろん、ホフスタッターの法則により、それを正しく行うことは困難になります...)

また、前の作品の最初のリリース後にどれだけの作業が必要であったかを思い出し、それを次の見積もりに追加することも常に良い考えです。たとえば、最後のタスクを完了するには2か月かかりましたが、公開後、サポート、修正プログラム、および追加の変更により1か月かかるため、次回は同様のタスクで3か月を見積もっています。


0

開幕戦については、Barry Boehmによる「Software Engineering Economics」およびTom DeMarcoによる「Controlling Software Projects」をお読みください。これら2つを読み、要約したら、Barry Boehmによる「COCOMO 2によるソフトウェアコストの見積もり」を読んでください。

次にお話ししなければならないことは、LOTが確率と統計のクラス、さらには基本的な料理の本を取得したことです。

完璧な見積もりはありません。早期に到着する確率と、遅く到着する確率があります。Boehmの元の詳細なCOCOMOモデルは、実際の結果の30%以内であり、60%の時間よりも優れていると予測されました。それは、彼が本を書いて出版したときの一般的なものよりもずっと良かった。

最良の推測を行うと(そしてそれがすべての推定値です)、これらの確率を含めます。推定値を取得すると、遅れて入る確率が高くなります。見積もりを増やすと、早期に到着するか、時間通りに終了する可能性が高くなります。どれだけ引き込むか、または引き出せるかによって、確率がどのように変化するかが制御され、必然的に早いか遅いかのペナルティに依存しなければなりません。(ここにホラーストーリーを挿入します-そして、長年にわたってそれらの多くがありました!)

DeMarcoはこれにある程度取り組んでいます。彼はまた、「不可能な領域」があることを指摘しています:どんな種類のヒロイックが試みられようとも、いくつかのスケジュールはあまりにもきつすぎて作成できません。

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