私はしばらくの間この経験をしてきました。クライアントがソフトウェア製品を必要として私に連絡したとき、クライアントは通常、この製品が完成する時間枠を知りたがっています。通常、ソフトウェア開発者として、解決に数週間(場合によっては数か月)かかるエラーが発生する可能性があるため、ジョブを完了するのにかかる時間を完全に判断できない場合があります。
私の分析に基づいてクライアントに予想される時間枠を伝えると、つまり、それがどんなに悪くなっても、たとえば最大6か月で仕事を終えることができるはずです。私のクライアントは通常NOと言います! 6か月は長すぎるので、早急に必要です。私がクライアントから与えられた時間枠を受け入れることを拒否した場合、彼はクライアントの短い時間枠を受け入れても時間内にジョブを実行しない別の開発者に契約を与える可能性があります。
一方、クライアントの短い時間枠を受け入れて契約を結ぶと(時間内に完了することは不可能であることを十分に理解している)、契約を結ぶことに成功し、後で言い訳を思い付くだけです。なぜ仕事が間に合わないのかについて。これは今では当たり前のようですが、契約を結ぶために不正直になる方法を深く学んでいるように感じます。それは悪いことですか、それとも単なるビジネス戦略ですか?
このような状況では、これらのタイプのクライアントについて推論する必要があります。
最初から最後まで単一の時間枠を与える代わりに、1か月のスパンである程度生産可能なツールを使用できることを説明します。
彼らに(一枚の紙のように)ソフトウェア製品の作成に必要なアルゴリズムまたはステップを説明すると、ソフトウェア開発とは何かが理解できるようになります。人々が一般的にこれにどのように向かっているかを知っているので、生産プロセスの重要な部分を強調する必要があります。
例えば:
このプロセスを説明するために料金を請求する必要はないと思います。ただし、彼らが支払っている割り当てられた時間内に完了することができない場合は除きます。
私が言おうとしていることの要点は、クライアントが自分自身に直接利益をもたらすことができるようにクライアントに説明する必要があるということです。
たとえば靴の小売業を経営している場合、ソフトウェア開発者から最も聞きたいことは、彼らの仕事が私のビジネスにどのように役立つかということです。
最後に、1か月間で良い最終製品を達成することが不可能である理由を説明することもできます。
次に、与えられたすべての事実に基づいて、少し長い時間(6か月は非常に長い時間)でより良い解決策ではなく、1か月で焼きたての製品を入手することが許容できるかどうかを彼らに決定させます。動作するバージョンがすぐに利用できるローリング製品を提供する場合を除いて、この時間を最大2〜3か月に短縮することを検討する必要がありますが、本番環境に対応するまで更新を続けます)。
あなたが与えたシナリオに基づいて、私はクライアントがあなたまたは他の会社に正直であるかどうか疑問に思います。あなたはそれが6ヶ月かかると言います、しかし彼らはそれを1つで望んでいます。不完全なプロジェクトには言い訳がありますが、クライアントはとにかく支払いますか、それとも今ではそれを遅らせることができますか?何かが足りないか、クライアントが緊急の意味について大まかな解釈をしている。
双方がゲームをしているようです。開発者は見積もりを埋め、クライアントは開発者が構築にかかる時間を誇張していることを知っているため、任意に短い期日を設定します。私たちはまだスコープクリープにさえ到達していません。
個人的には、このようにクライアントと取引することは避けています。プロジェクトの見積もりに大きな違いがあるということは、何かが非常に間違っていることを意味します。プロジェクトをより小さな部分に分けて、それらの見積もりを出します。これにより、クライアントは何が必要か、およびそれらを適切に実行するための時間についてより良いアイデアを得ることができます。これらは調整可能であり、プロジェクトを見積もるのが難しい多くの場合、初期の試行錯誤が必要です。あなたの競争は不誠実ではないかもしれませんが、何が必要か、あるいはおそらく彼らが問題に対してより多くの開発者を投げていることに気づいていない、いくつかのボイラープレート/プレハブコードとともにこの領域での経験があります。