あなたは関連技術に不慣れであり、作業する必要がある既存の低品質のコードベースに慣れていないため、見積もりは双方向である程度異なる可能性があります。しかし、後者の理由についてクライアントに知らせてください:-P
最初に、クライアントが要求した無数の変更/機能をリストします。要件ごとに、コードのレビューを少し行い、それを実装してテストする方法について調査します。見積もりを出す前に、この時間を無駄なく投資する必要があります。
次に、推定用に3つの列を作成します-最良の場合(25%の確率)、平均の場合(50%)、最悪の場合(75%)。最初の段落で述べた2つの理由により、最悪の場合の見積もりを選択できます。その後、20%のバッファ時間を追加することもできます。たとえば、特定の要件の場合、最良のケースの推定は2日、平均のケースは4日、最悪のケースは5日です。20%のバッファー時間を追加すると、推定は6日になります。
3番目に、推定の固定点ではなく、範囲を指定しないでください。上記の例では、見積もりが4〜6日であることをクライアントに通知できます。クライアントは、変更のリスト全体の見積もりを要求する場合があります。その場合、すべての要件の範囲の最小値と最大値を合計できます。次に、5〜6.5か月の範囲で最終的な見積もりを提供します。これには次の利点があります。1つの要件の見積もりを超える可能性がありますが、別の要件を早期に完了する可能性があります。合計すると、それらは互いに相殺され、最終的な見積もりは保留されます。
4番目に、各ユーザーの要件を完了して段階的に提供するときに、各要件の以前の見積もりを確認します。これは継続的なプロセスであり、プロジェクトを進めて経験が増えるにつれて、見積もりを調整/調整する必要があります。洗練された見積もりと最初の見積もりの違いが手に負えないことがわかった場合は、すぐにクライアントと一緒に問題について話し合います。
これらのことは、Steve McConnellの著書「Software Estimation:Demystifying the Black Art」から学びました。私は彼に感謝しています。