ソフトウェア開発の見積りについて(1/2)
ソフトウェア開発を長く行ってきました。
新規システムの開発時には顧客にその見積り金額をを提示します。
基本的な見積り方法のひとつとして、一人の人間がそのソフトウェアを開発するのに何か月かかるか、を見積る方法があります。
1ヶ月かかる場合を1人月と呼びます。
例えば、ある企業に在庫管理システムの見積を提示しようとします。
要望される機能を大まかに洗い出し、その機能を実現するソフトウェアを、一人で3ヶ月かかるとしましょう。
私のいる地方の技術者単価は、1人月60万円が標準単価とされていました。
3ヶ月かかる場合は、
60万円/月 × 3ヶ月 = 180万円
の見積となります。
ここで「3ヶ月かかる」という部分です。
なにを持って「3ヶ月かかる」と言えるのか、です。
長年、ソフトウェア開発に携わってきましたが、この部分をいつも疑問に
思っていました。今もって正確には判断できません。
大まかな機能定義で見積をして、受注後に隠された面倒な機能が判明すると、「3ヶ月かかる」はもっと長くかかる場合が出てきます。その隠された機能が見積に含まれているかどうかを顧客と交渉しなければなりませんが、
これはハードルが高いのです。
顧客は、社内の稟議で確定した予算で発注をしてきています。
特段の理由を提示しなければ増額は難しいのです。
増額の提示が、顧客が納得しないものであれば、増額を提示した時点で顧客との関係がぎこちないものとなります。
詳細な機能を定義してからの見積りですと、見積作業にかかる時間が増えてしまい、それで失注した場合でも、見積作業にたいする対価は通常は請求することはできません。
詳細な見積り作業は見返りの無い作業となり、それは会社の利益としてはマイナスになります。
見積は早めに顧客に提示するのが良くものと考えていました。顧客へのスピード感は大事な要素です。
ただ、そうすると見積りミスのリスクが高くなり、見積ミスが判明した時点で仕事を継続しても赤字の仕事になってしまうのです。
見積りミスのリスクが高そうな場合は、リスク分を上乗せして
提出することも一案です。
ですが、そうすると金額が高くなってしまいます。
金額が高くなると受注できないリスクも高くなってしまいます。
リスクのある部分は、そこだけは時間をかけて詳細に定義をすることになりますが、うまくいく場合もあれば、考えたとおりにはならない場合も出てきます。
見積りミスを少なくするのは、経験と勘が大きいものと思っています。
IT業界なのですが「経験と勘」なのです。