ほとんどすべての開発者は、次のようなビジネス側からの質問に答える必要があります。
この簡単なお問い合わせフォームを追加するのに2日かかるのはなぜですか?
開発者がこのタスクを推定するとき、彼らはそれをいくつかのステップに分けるかもしれません:
これらは、基本的にタスク全体をいくつかのHTMLを組み合わせてデータを格納するためのテーブルを作成するものと見なす非技術者に説明するのは難しいかもしれません。彼らにとってそれは2時間MAXであるかもしれません。
では、なぜ開発者以外の人にとって推定値が高いのかを説明するより良い方法はありますか?
あなたはあなたの質問でそれをしました。
タスクを個々のステップに分割し、各ステップの見積もりを与えます。これは、すべてのオプションを検討し、(できれば)すべての不測の事態をカバーしたことを示しています。
タイムスケールが大きすぎる場合は、クォートをパイントポットに詰め込もうとするのではなく、具体的なデータを使用して、この場合に不要な部分(電子メールの確認など)について話し合うことができます。
これを頻繁に行うと、一目で目に見えるよりも開発には通常多くのことがあることをうまく説明できます。
タスクをリストアップすることはほぼ完璧ですが、エンジニアにとって完璧な意味を持つタスクは、技術者ではない人にとってはほとんど意味がないことを覚えておいてください。たとえば、上記のリストで、「DBの変更を速度のために最適化する」ことは、コードのプロファイリング、遅いポイントの検索、専門家によるレビュー、またはコードの実行など、1つまたは複数の時間のかかるタスクである可能性があることを知っています。製品に固有の事前定義されたテストのセット。そして、遅すぎる領域を修正する方法を見つけようとしている間、おそらく数日ではないにせよ、数時間頭を机にぶつけます。
しかし、「最適化」という言葉でなければ、「DB」という言葉のプロジェクト管理が失われた可能性があります。
私は通常、このことをプロジェクト管理に大きなステップで表現し、ビジネスの面でリスクを説明する言葉を使用します。リストを見て、プロジェクト管理と話していたら、このように要約します。
半日未満の見積もりは避けます。彼らは、あなたが話していることを知っていることを、ある程度、信頼しなければならないでしょう。そして、彼らが本当にそれが2時間だけだと思っているなら、あなたに2時間一緒に座ってもらい、SW開発者の生活の中で2時間がどのように見えるかを正確に説明します-そして、コーディング101クラスをしてください約2時間、問題の解決を開始するために考慮すべきすべてを正確に示すため。
最も重要なことは次のとおりです。
「5ポンドのバッグに10ポンドの(がらくた)を入れることはできない」という格言があります。あなたの仕事は、タスクが10ポンドであり、彼らが5ポンドの時間枠でそれを持っていることを求めていることを示すことです。
欠けているのは時間の見積もりだけです。各タスクに時間の見積もりを置き、これらすべてが提供する見積もりにどのように加算されるかを示します。 4時間を超える見積もりは許可しないでください。 「1日」または「10時間」と言うタスクがある場合は、より小さなサブタスクに分割します。
2h make some changes to Database
2h add front end HTML
write server side code
4h input validation
4h database inserts
2h add validation
2h add client side javascript
use unit tests
2h client-side tests
3h server-side tests
2h make sure SEO is setup is working
2h implement email confirmation
2h optimize DB changes for speed
2h refactor and optimize the code for speed
これで、コストの明細化された請求書を入手できました。全部で27時間の作業になります。
これを顧客に見せて、「これらは、それぞれのコストで実行する必要があることです」と言うことができます。時間ISコストであり、経営陣がコストを理解しているため、「コスト」という言葉を使用します。最後に2つの最適化タスクをドロップする可能性があることを説明しますが、マイナスの影響があります。道路、そしてそれらは総推定値のわずか15%です。
また、1日の時間を現実的に説明するようにしてください。たとえば、テクニカルサポートやデータベースのメンテナンスなどが必要な場合は、それを見積もりに含めます。 「まあ、1日7.5時間のコーディングができる」とは言わないでください。おそらく5か6に近いでしょう。
次に、最も重要なこととして、進捗状況を追跡します。あなたがコーディングの1日あたり5時間を行うことができると言います。その後、月曜日に最初の2つのタスク(私の例では)をノックオフし、3番目のタスクを終了し、4番目のタスクを火曜日に開始する、などのようにできるはずです。このことを示すチェックリストを作成して、水曜日に彼らが来たときにそれらを示し、「金曜日の終わりまでにまだどうするつもりですか」と言うことができるようにします。
私の講演のスライドをご覧ください 危機の防止:効果的なプロジェクトの見積もりと追跡 数年前にOSCONで提出しました。スライド21の「今週の計画」をご覧ください。 サンプル速度チャート もあります。
彼らに尋ねる:
どうしますかどのモジュールを変更しますか?コードは何行ですか?セキュリティへの影響は何ですか?データベーススキーマに変更はありますか? DBに変更を加えた場合、影響を受けるファイルの数はいくつですか?最後のフォームを追加するのにどれくらい時間がかかりましたか?フォームを追加するための平均(算術平均)は何ですか?一番長かったのは?私はそれが最長よりも1分かかると推定します。最後のN個のフォームを追加するのにかかった時間がわからない場合、この見積もりは1桁の精度でのみ保証されます。