web-dev-qa-db-ja.com

Swagの見積もりを伝える方法

私は、お客様から機能強化のリクエストを頻繁に受ける大規模なエンタープライズソフトウェアプロジェクトをサポートしています。顧客は固定価格の契約でのみ前払いの作業に対して支払います。最初に Swag 見積もりを提供し、次にSwagが青信号になった後で詳細な見積もりを提供します。詳細な見積もりには時間がかかり、拡張が承認された場合にのみ見積もり時間が補償されるため、Swag見積もりは一定の保護レベルを提供します。

Swagの推定値を小、中、大、または超大として伝え、これらの各値に関連する範囲を伝えました。例えば、

Small: < 5 days
Medium: 5 - 15 days
Large: 15 - 50 days
Very Large: > 50 days

これを数年間実践してきたので、いくつか懸念があります。

  1. 時々、盗品の見積もりは範囲の上限にあると予想されます。この形式の見積もりは、顧客の期待を管理することを困難にする可能性があり、15日間の作業は50日間の作業とは大きく異なり、顧客は楽観的な仮定の下でSwagを青信号にすることができます。
  2. Swagの見積もりをお客様が承認した場合、Swagの高い範囲で詳細な見積もりを制限する義務を負う可能性があります。範囲を上に移動すると、通常、追加の請求に関する議論があり、苦痛で時間がかかり、補償の保証が不足します。

顧客の期待をより適切に管理するのに役立つSWAGを通信するための標準的な方法、または試行された真の方法はありますか?

私が指摘した固定範囲ではなく、ケースごとに使用範囲を使用する方が良いですか?範囲ではなく単一の番号に切り替える必要がありますか?

[〜#〜] pert [〜#〜][〜#〜から来るこの種の問題に対処する古いアプローチが実際にあります] cpm [〜#〜] プラクティス。これは滝とPMIに関連しているので、あなたがそう言うと抵抗を受けるかもしれません。しかし、実際にはウォーターフォールとは関係がなく、認定されたプロジェクトマネージャーがそれについて何かを知っているという証拠はあまりありません(認定の一部であるにもかかわらず)。

各項目について2つまたは3つの見積もりを考えます。あなたはベストケースのシナリオ、つまり下限を与えます。つまり、これよりも速く行われません。次に、ハイエンドの見積もりを出します。つまり、それより長くかかることはありません。必要に応じて、その間のどこかに当てはまる「最良の推定」推定値を指定します。これは、ハイエンドまたはローエンドに向けて見積もりを重み付けするのに役立ちますが、厳密には必要ありません。 高レベルの成果物ごとにこれを行います。このアプローチについて人々が誤解していることの一部は、彼らが非常にきめの細かいレベルでそれをしようとすることです。それは機能しません/努力する価値はありません。

次に、レイアウトと依存関係を作成し、よく知られているアルゴリズムを使用して、バンドル全体の信頼レベルで全体的な見積もりを出すことができます。この方法で見積もる項目が多いほど、全体が均一になる傾向があるため、全体的な見積りの信頼性が高くなることを理解しておくとよいでしょう。

コンポーネントの成果物のTシャツサイズでこのアプローチを使用できます。範囲がかなり信頼できる場合は、問題ありません。一部の人々は、これはアジャイル方法論と互換性がないとあなたに告げようとするかもしれませんが、実際にはそうではありません。これは、十分に研究された統計的アプローチを使用して、一連の見積もりを取り、それを複合的なものに変える方法です。本当に優れたアジャイル開業医は、統計的手法を使用しています。しかし、それは一般にチームのほとんどが見ているものではなく、アジャイルの多くは単に貨物カルトプロセスになっています。

2
JimmyJames

考えられるあらゆる方法で仕事を見積もるように求められました。見積もりが多くの点で間違っているのを見てきました。

仕事の範囲がぼやけているので、どのような締め切りにも対応できます。

そのため、いくつかの意味のある受け入れテストを含む作業の範囲を想定して、私が今まで遭遇した唯一の意味のある時間推定値を生成する秘訣を説明します。

あなたに依頼された仕事が誰よりも難しいと想像してください。だれかがそれをとるだろうと誰もが思っていたが、それでもまだ終わっていないのに、それがすでにかなりの時間であると想像してください。これにうんざりして他のことを試してみたいと思う前に、どれだけ長く時間を費やす気がありますか?

そのプロセスは、私が今まで見た中で最も現実的な時間の見積もりを生成します。十分に定義されていない、まだ理解されていない問題とは何の関係もありません。計画全体を解体する前に、この方法でソリューションを取得することにどれほど忍耐強くあるかがすべてです。

私がこれを改善した唯一の方法は、仕事が始まる前にソリューションのプロトタイプを作成することでした。一部の人々は何度も同じことであるクッキーカッターの仕事をしています。それはプロトタイピングとほとんど同じです。これらの種類は、詳細な仕様に最もよく反応します。主にそれらの仕事は何かをすることを忘れないためです。

Swag の場合、それは実際に人々がどのように感じるかについてです。問題の周りの現実。問題ありません。仕事が終わったとき、または人々が待つのにうんざりして他のことを試したときに仕事は終わります。私たちは問題に対する私たちの忍耐力を実際に推定しています。

Swagの見積もりを伝えることに関しては、誤解の最大の原因の1つをすでに対処しています。期間を小、中、大、および非常に大規模なジョブとして表現することで、正確に50日で完了すると言う認識を回避できます。このような数値は常にあいまいです。顧客がそうではないと考えるように導かれるべきではありません。

あなたがそれを伝えても、あなたの顧客に耳を傾けます。あなたがどれだけ理解されているかを理解するようにしてください。あなたにとって完全に明白であるように見えることは、彼らにとって完全な驚きとなるかもしれません。このプロセスには、不必要な驚きを加えることなく、十分な不確実性があります。

時々、盗品の見積もりは範囲の上限にあると予想されます。この形式の見積もりは、顧客の期待を管理することを困難にする可能性があり、15日間の作業は50日間の作業とは大きく異なり、顧客は楽観的な仮定の下でSwagを青信号にすることができます。

これが、私がSwagの見積もりを人々がその仕事についてどのように感じているかを明示的に結び付けている理由です。タスクが50日間の作業である可能性があるという考えに顧客が明らかに不快である場合、作業の範囲を15日以内に収まるものに限定せずに、15日間の作業として販売するという誘惑に負けないでください。努力。それによって何が失われるのかを言わずに、時間についてどのように感じられるかを圧縮しないでください。

Swagの見積もりをお客様が承認した場合、Swagの高い範囲で詳細な見積もりを制限する義務を負う可能性があります。範囲を上に移動すると、通常、追加の請求に関する議論があり、苦痛で時間がかかり、補償の保証が不足します。

まああなたは義務付けられています。実際には、追加の課金に関する議論が始まるのを待たないようにする義務があります。 15日間の仕事の最初の日の後、それが40日間の仕事になることが明らかになった場合は、それを報告します。 15日後ではありません。お客様が責任のないことをしないと言っても、15日間でやり遂げようとすることに夢中になることではありません。それは離れて歩くことをいとわないことです。

個人的には、できる限りお客様に進捗状況をよく理解してもらいたいです。締め切りに取り組んでいるときは、締め切りに間に合う可能性が高いと感じる可能性について、毎日更新します。見積もり作業のチェックリストを作成しているとき、私は エビデンスベースのスケジューリング をお勧めします。つまり、 velocity を使用して、見積もりとどれだけ一致しているかを調べ、完了日を推定します。これは、マイルストーンごとに再計算できます。これが頻繁に再計算されるのを見るのは良いことです。

それをしても仕事は早くなるわけではありませんが、待っている人には何が起こっているのか理解しているような気持ちになります。あなたが彼らにあなたに働き続けさせたいなら、それらの感情を管理することは実際には最も重要なことです。

3
candied_orange

これは、高レベルの見積もりに固有の問題です。深い分析を行っていないので、いくつかの仮定をする必要があります。時々、あなたは、これらの仮定が間違っていることが判明したとき、その仮定に対して罰せられます。 S、SM、M、MH、Hの範囲を<5、5-10、10-15、15-20、> 20として作成することをお勧めします

Tシャツのサイズの見積もりを伝える一環として、上位レベルの想定を強調し、スポンサーが影響を明確にするようにします。その価値のために!

1
Syed Suleman

通常、見積りについて誰かと通信しているとき、それらがSWAGであろうと、より詳細な分析見積りであろうと、見積りの不確実性を表現して強調するようにします。

たとえば、機能にかかる時間の範囲を指定することについて話しましたが、それは良いことだと思います。これは、何かがかかる可能性がある時間の範囲があることを示しています。ただし、これらの小規模、中規模、および大規模なラベルで、割り当てられた時間範囲で常に応答するかどうかはわかりません。 14〜18日かかるプロジェクトと40〜50日かかるプロジェクトの間には大きな違いがあります。しかし、どちらも「大」に分類されます。私はより良い見積もりはそれらの範囲を完全に与えるだろうと思います。タスクに40〜50日かかると思っていることをクライアントが事前に知っている場合、彼らは15日で完了すると信じるほど楽観的であるべきではありません彼らが期待するものを取得しないでください)。

私はまた、人々に信頼度の指標を用いて推定値を提供しようとする傾向があります。つまり、見積もりの​​時間範囲を考え出し、通常は範囲のさまざまな部分について、その見積もりにパーセンテージで到達できると確信していることを表現します。たとえば、クライアントが欲しい新機能を持って来てくれるとしましょう。これは、UIの作業や、新しいデータベースやAPI呼び出し/エンドポイントの作成を伴うWebサイトの機能であると言います。だから私はそれを次のように分解するかもしれません:

Database work:
Create new sprocs for getting data - .5 days
Testing sprocs (correct returns, validating performance, etc) - .5 days + up to .5 days

API work:
Create new stubbed endpoint - .25 days
Create hook stubbed endpoint to DB and call sproc - .25 days
Test endpoint - .25 days + up to .5 days (for bug fixes)

UI work (we'll assume the front end is a mess and doing anything there is a nightmare of brittle, interdependent code):
Adding button to existing page for feature - .25 days
Making AJAX call to endpoint - 1 day
Fixing everything that has broken so far in the UI - .5 days + up to 1 day
Testing the UI / end to end tests - .25 days
Fixing more broken things the test uncovered - .5 days

ですから、これらすべてを追加すると、4.25日+最大2日余分になります。次に、見積もりで予想される分散(高または低)に基づいていくつかの推測を追加します。予想される時間は5日で、3〜8日の範囲が得られる可能性があります。それから私は誰かにこのような何かを言うでしょう:

Estimate (days)  Confidence
3                40%
5                80%
8                90%

そしてそれはこのようにクライアントに伝えられるかもしれません:

そこで、機能Xについて簡単に説明しました。私たちはそれを行うために3〜8日の見積もりを思いつきました。完了するまでに約5日かかることが予想されます。つまり、約40%は3日で達成できると確信しており、80%は5日で達成できると確信しており、90%は8日で達成できると確信しています。これは、彼らのシステムと同様の機能に関する経験に基づいて私たちが行った予備的な推測にすぎません。これは推測のみを目的としており、この機能が特定の時間枠で実行されることを保証するものとして使用してはなりません。

その一部は少しぎこちない言葉で書かれていることに気づきましたが、私はここで指摘したと思います。その点は、あなたが何かについてあなたがどれほど確実であるか不確実であるかを伝えることができれば、人々はあなたが彼らに話していることについてより良い選択をすることができるということです。そして、あなたの不確実性について明確であることは、他の人がそれについて仮定することを防ぎます。

前の例を次の例と比較してください。

機能Zの分析を行いました。ここには不明な点がたくさんありますが、細心の注意を払わなければ問題を引き起こすことがわかっているシステムのデリケートな部分で作業することになります。これには40〜80日かかると見積もられています(40日間は30%の信頼性、70日間は50%の信頼性、80日間は55%の信頼性)。 120日ほどかかる場合もあります。さらに詳細な要件を実行し、興味がある場合はこれをもう少し詳しく説明することをお勧めします。

これはクライアントが「いや、それだけの価値はない」と言うには十分かもしれません。しかし、これは迅速な解決策ではなく、より正確な見積もりを得るにはさらに多くの作業が必要であるという考えに彼らを準備します。


Steve McConnellによる Software Estimation:Demystifying the Black Art を読むことをお勧めします。見積もりを必要とする目的に応じてさまざまな人に見積もりを伝える方法、およびあなたが言おうとしていることを彼らに理解させる方法については、いくつかの章があります。 (私はこの本とは何の関係もありません、私はそれが好きです。)

1
Becuzz

やあ、

私の経験では、このような高レベルの推定はひどく間違っており、いくつかの境界を設定する必要があります。

  1. 顧客がいつお金を使う用意があるかを定義します。すべての顧客には予算があり、それを最大限に活用したいと考えています。問題の始まりは、自分のニーズが何であるか、彼の望みが現実的ではないときに始まります。あなたの場合、これは誰かが何か奇妙なことを試みたように聞こえますが、今は信頼がありません。
  2. 厳しい要件と納品を定義します。あなたの場合、マイルストーンを定義する必要があるため、すべてを明確に定義する必要があります。ここで注意が必要です。すべての変更リクエストは個別に交渉する必要があり、マイルストーンはすべて再交渉する必要があり、マイルストーンの変更にはプレミアムが付きます。
  3. 時間推定の問題を解決する方法の1つは、推定に確信度係数をパーセントで書き込むことです。この係数は、推定時間内での特定の成功の度合いを示す値になります。ほとんどの場合、これは管理者の地獄を怖がらせます。
  4. 次の問題は、リソースの割り当て(開発者、アーキテクトなど)とタスクの実行順序です。ほとんどの問題は、顧客が明日必要な機能を特定したときに発生します。そのため、マイルストーンを含む署名付きタイムテーブルが重要です。トラブルを大幅に軽減します。

他に何か思いついた場合は、投稿を編集します。

0
Marko Bencik