中年システムエンジニアのオモチャ箱

中年システムエンジニアが初体験のブログ活動。技術情報の備忘録以外も、色々と載せていければと思います。


SE プログラム開発の見積り作成


【スポンサーリンク】


プログラム開発を請け負う際、お客様に提示する見積りって、どのような基準で作成していますか?
うちの社内でも、見積りを作成する基準は人によってバラバラです。

 

プログラム開発の見積りって、「アプリケーション」っていう「物」を作成するのですが、正確な実装工数を算出するのは難しいですよね。
では、プログラム開発ではなく、単価が決まっている製品の組み立てなどの見積りはどんなものなのでしょうか?

 

単価が決まっている製品の見積りは?

例えばノートパソコンを組み立てる工場を例に考えてみましょう。

 

ノートパソコン組み立てに必要な部品・単価

(1)ネジ× 30 本 @¥5
(2)ディスプレイ× 1 @¥10,000
(3)キーボード× 1 @¥3,000
(4)電源× 1 @¥7,000
(5)マザーボート× 1 @¥25,000
(6)ハードディスク× 1 @¥10,000

 

 組み立て部品を単純に計算すると、1 台あたり¥55,150 となります。
これに管理費等の利益を製品の 20% と考えると、見積り金額として 1 台あたり ¥66,180 となりますよね。

 

仮に工場の組み立てラインで、1 時間に 10 台まで組み立てが可能だとすると、1 日 8 時間と考えれば 80 台まで生産は可能です。
そうすると、1 日に生産できる見積り金額としては、80 台 × ¥66,180 で、¥5,284,400 と計算できます。

 

当然、ライントラブルや購入部品の入荷遅延等、様々な理由で計画的には進まないと思いますが、各部品の単価が決まっているし、生産ラインの台数も決まっているので、見積り金額は出しやすいですよね。
説明のために簡略的に書いているので、全然、的外れでしたらごめんなさい・汗。

 

プログラム開発の見積りを正確に算出するのは難しい?

では、プログラム開発の見積りについて考えていきましょう。

 

アプリケーション開発の実装機能・工数

(1)ログイン機能× 1 画面 @ 1 人日
(2)検索機能× 2 @ 2 人日
(3)データ登録機能× 2 @ 3 人日
(4)印刷機能× 5 @ 2 人日
(5)ファイル出力機能× 3 @ 1 人日
(6)マスタ登録機能× 3 画面 @ 1 人日

 

 上記は、単純に機能を実装する工数のみを考えているので、設計やテスト工数は考えていません。

 

では、実装工数の「人日」はどうやって決めるのでしょうか?
正しく見積もるのであれば、アサインする開発者を決定し、その開発者がかかるであろう実装工数を計算すれば、ある程度の正確な見積りが作成できます。
ただし、見積りを作成している段階では、アサインできる開発者は実際に決定されていないことが多いと思います。

 

ある程度はアサインできる開発者を予定していても、見積りにより受注できなければ、予定していた開発者は仕事がなくなってしまいますよね。
それを見越して、先に決定しているプロジェクトがあり、予定していた開発者の手が空いていれば、決定しているプロジェクトにアサインしてしまいます。

 

そのような事を踏まえると、ベテラン開発者が実装すれば 1 日で完了する作業でも、中堅開発者が実装すれば 2 日、ルーキー開発者が実装すれば 3 日など、実装工数の「人日」にはかなりブレが生じます

 

よって、見積りを作成する段階では「一般的には(ベテラン、中堅、ルーキーで平均した場合には)、どの程度の実装工数がかかるか?」という感じで、実装工数を算出しています。

 

上記の理由から、正確な見積り工数を算出することは難しいかなと思っています。

 

 
より正確な見積りを作成するには

見積りを作成する前に、お客様が望んでいる機能の把握(要求定義)をし、アプリケーションとした場合はどのような動きになるか(要件定義)を明確にする必要があります。
その段階である程度、受注確度が高いとなれば、アサインする開発者を予定し、見積り時の実装工数の目安にしては如何でしょうか。

 

今までの経験から、その際の注意点。
「ルーキー開発者しかアサインできない予定であれば、その実装工数で見積りをする」ことですね。
できる限り一般的な実装工数で見積ることが前提ですが、アサインがルーキーしか予定できないのであれば、かなりの見積り金額になってしまおうと仕方がないと思います。
だって「一般的な実装工数で見積もれば、赤字になることが目に見えてる」じゃないですか。
結果、見積りが通らず受注に至らなければ、ご縁が無かったということで・汗。

 

しかし、アサインはルーキー開発者しかいないが、とにかく受注したい
そういう場合もあると思います。
例えば新規顧客で、これからの取り引きにつながるとか。
そのような場合は、部長などの上長に「どうしても受注するとなると、赤字になると思いますが了承していただけますか?」と素直に相談することですね。
実際に新規受注した時は赤字だけど、その後は固定客を増やせて利益につながった事もありました。

 

システムエンジニアの多くは、プロジェクトマネージャなどの管理もしているのが実情じゃないかと思います。
お客様に対しても、社内に対しても、より正確な見積りを作成することは難しいことですよね。
しかし一番やってはいけないのは「こんな感じの実装工数でいいや」みたいな、いい加減な見積りを作成することです。
算出根拠を明確にし、お客様に対しても、社内に対しても、よりよい見積書を作成することを心がけていきましょう!

 

【スポンサーリンク】