(誰も待っていないと思うけど)お待ちかねの「3分間見積もりクッキング」の時間です。
結局のところ「概算見積もり」というのは、QCD(機能、コスト、納期)の枠を決めることで、その範囲内で、
・人員を確保する。
・機能を配分する。
・社員を育てる。
・できるだけ、利益を出す。
を行います。
なので、以上を踏まえたときに、大まかな見積もりは以下の点のみ決めます。
発注会社サイド
・全体の開発予算(コスト)
・開発期間(納期)
機能が抜けているのは、作らなければいけない機能よりも、予算や期間が優先されることが多いためです。
特に発注会社の場合は、
・開発予算から利用するアプリケーションの減価償却
・利用開始時期から、開発期間
が決まるために、ある意味で「機能」のほうが調節可能な場合が多いのです。
# 現に、予算が少ない場合は、機能削減で凌ぎますし、
# 予算が多い場合は「機能を盛り込み」ます。
# ただし、官庁系のように入札が行われる場合は、かなりの程度まで要求仕様=機能が
# 決まっているために、別な概算予算の立て方が必要です。
IT会社サイド
IT会社(受託請負)の場合は
・単価(コスト)
・確保できる人員(人)
が決まっています。
ソフトウェア開発の場合、必要経費のほとんどが人件費のため、概算予算を立てるときに「人の単価」と「人」が最大のボトルネックになります。
さて、この単価、と人はどこから決まるのかと言うと、
・給与(コスト)
・技術スキル(勤続年数など)
に依ります。
技術スキルを勤続年数に掛けるかどうかは疑問が多いところでしょうが、
若干でも「年功序列制の給与体系」をIT会社がしている場合は、勤続年数を考慮したほうがよいでしょう。また、年棒制など序列がない場合は、ITSSなどを利用したレベルを考慮するとよいでしょう(個人的にITSSは反対ですが、外部的な指標としてはアリです)。
IT会社サイド(その2)
さて、IT会社としては、先の人員(開発要員)だけで廻るわけではありません。
ここを、発注会社/IT会社ともに忘れてしまうことがあるので問題です。
・リスク(保険)
・管理費用
・営業費用
リスクは、いわゆる「保険」です。受注してはみたものの、要求仕様が膨らんだり、予期せぬ事情が発生したとこのバッファのためにお金を積み上げます。ここの「保険」の部分は、色々事情があるでしょうが、現実問題として無くすことはできません!。発注会社から「保険分をうちで持つから(仕様変更等は後で積んでもらえばいいから)」という理由で「保険」を外そうとする動きをしたとしても、必ず「保険」は積まれます。
ですので、外せないものであれば、あらかじめ積んでおくのがいいでしょう。
同様に、管理費用も積まれます。
一見、提出された見積もりに管理費用の項目が載っていない場合であっても、それは単価(人月)に積まれています。発注会社は「管理費用はそちらもちではないか?」と文句を付けたとしても、その項目が無くなっただけで新しい見積書には「薄く」管理費用は積まれています。
ですので、外せないものであれば、あらかじめ積んでおくのがいいでしょう。
同じく、営業費用も薄く積まれます。
営業費用自体は、営業部のあり/なし、受注した時の形態などを加味する必要がありますが、
「その営業の人はどこから給与を捻りだしているのか?」
を考えると、ソフトウェア開発費用のどこかに積むしかありません。
ですので、これも考慮に入れておきます。
実例
さて、実例を示してこれを計算してみましょう。
Excel シートはここから。
http://moonmile.net/mymy/solution/011.zip
発注会社からは、予算2000万円、期間6か月で発注をしました。
このときに、IT会社が概算見積もりをするときの内容です。
・開発者(社員)の単価が100万円/月(給与から算出します)
・リスクを10%
・管理費用を50万円/月
マネージャは他プロジェクトとの掛け持ちです。
・営業費用を100万円
歩合の場合が多いので、100万円/プロジェクトで計算
これから、使える開発者の人数が計算できます。
C12の式は
=((C4-C11)*100/(100+C9)-C10)/C8
です。
・人員が、16.8人月
・期間が6か月なので、2.8人の張り付き
と計算できます。
さて、ここで問題ですが、ソフトウェア開発で 2.8 人の貼り付けをすることは難しいです。と言いつつ、そうやっている会社が多数なのですが、現実問題として、2.8人なんていう半端な割り振りはできません。プロジェクトが終わってみれば、3人の開発者が張り付いているのが普通です。
そうなると、プロジェクト終了予定時から逆算すれば、
・人員が、18人月
・人員が、3人貼り付け
がベターなわけです。
そうすると、差分1.2人月(金額にして120万円)が出ます。
ここで、発注側が予算額を 2,120万円に挙げれば、おそらくプロジェクトは安泰に終わります。
同様に、120万円分に機能を削り(5%程度の機能削除)をすれば、プロジェクトは安泰です。
ですが、これをIT会社に持たせようとする、2.8人という変な数字のために、無理矢理 1.2 人月分の効率化を社内でしようとします。採算確保のためですね。ですが、大抵はこの変な「効率化」のためにプロジェクトが破綻します。
また、この概算見積もりのように、リスク/管理費用/営業費用を見積もっている場合は、その分を引いていますのでスケジュールを縮めることは少ないのですが、これを忘れている(特にIT会社側が忘れていることが多い)と、これも変な「効率化」を始めてプロジェクトが破綻します。
経験上ですが、こういう変な端数に人は縛られてしまうようです。特にマネージャあるいは上司が採算を求められている場合は、このような 2.8 人という 0.2 人分を減らそうとして、プロジェクトから人を引き抜きます。そうすると、プロジェクトの最後で引き継ぎをすれば良かったのに、途中でプロジェクトを引き上げるために引き継ぎの作業が途中に入ってしまいます。これは全く無駄なことです。
そんな訳で、これぐらいの概算見積もりを出してから、見積もりを出しましょう。
という提案なんですが、どうなんでしょうねぇ?
いきなりボトムアップで作っているところが多いだけど。
追記 2019/01/11
10年ぶりに追記をしたので、こちらもあわせて もっと簡単に超概算見積もりver2
今回の発注書を見てみると、きちんと管理費用も相手から請求されて、
最初の見積もりは向こうの通り呑んでますね。
発注会社としては、素晴らしい会社だと思います。
それでもできないのは、さらに利益を出そうとした
向こうが悪いのか??
端数を切り上げることで安泰なら払うべきだと思いますが、
内戦もあることだし、発注側もなかなか難しいです。
「さて、ここで問題ですが~」以降は蛇足だなぁ。無用な混乱をさせてしまいました。ごめん。
・発注会社から見て、IT会社の管理費用は不透明
・発注会社から見て、IT会社の営業費用は不透明
・発注会社から見て、IT会やのリスクは不透明
なのが常なので、普通は先の見積もりがIT会社から提出されることはありません。
が、内実は作っている。二重見積もり、二重進捗管理になっている。
なので、発注側としてはIT会社の見積もりから、管理費用等を導き出さないといけない。
「相見積もり」っていうのも怪しいもの。
というのが落ち。
逆に、IT会社から見れば、
・発注会社に対して、管理工数を積めない。
・発注会社に対して、営業費用を請求できない。
・発注会社に対して、リスク費用を積めない。
ので発注会社に対しての見積もりは、単純な人月単位で出している。その方が通りやすいから。
が、内実は、二重見積もり/二重進捗管理をしている。
政治的な問題はさておき、馬鹿馬鹿しいね。貴方はどう思いますか?
というのが落ち。