見積もりって難しいですね。

今日明日あたりで最近やってたWebサイト開発案件が完了します(納品後、受け入れテストなどが残ってますが)。それで表題の件。

まず、この案件は僕を含め3人で開発しました(途中、1人卒論のため抜けましたが)。当初、開発メンバーと「3日合宿したら実装、単体テストまで出来るんじゃない?」「そうだねー(発注元の)デザイナさんからHTMLと画像ファイルも貰えるし、画面数も少ないし、機能仕様も難しくないし、いけそうだねー」とか楽観的に話していました。

この時点で見積もりは、3日×3人=9人日

で、ふたを開けてみれば、正確に計測はしていませんが、だいたい25人日+かなり多めの管理稼働。内、徹夜(夜開発スタート4時5時に終了)を2,3回。

見積もり補正係数(今回の場合)

前提条件

  • 開発経験のない言語(PHP5)
  • 開発経験のないWebフレームワーク(CakePHP

見積もり補正係数を計算
25人日(実績) ÷ 9人日(楽観的な見積もり) = 2.78

つまり、開発メンバーで楽観的に見積もって、2.78倍すれば実績に近い数字になる!って後付けか。
(実際には細かく以下の観点で見積もって、発注元に金額を提示して、実績に近い数字で契約が出来ています。)

  • 画面数と各画面の複雑さから何日(何時間)かかるか
  • 機能仕様から何日(何時間)かかるか

それにしても経験のない言語やWebフレームワークはググるのに時間がかかるし、精神的にリズムが崩れて気持ち良くないし、高速に開発できるわけではないから、それなりに見積もりは厳しくしておいた方がいいですね。実際、そうしておいて正解でしたし。

経験がある言語、フレームワークなら妥当な見積もりを提示して、内部ではそれこそ本当に「3日合宿したら実装、単体テストまで出来るんじゃない?」「そうだねー」が、成立しそうだ。けど、こっちのパターンは実績がないから、まだ何とも言えないけど。

開発以外のコスト(管理稼働)

話は変わるけど、開発以外のコスト(管理稼働)について

  • 発注元との仕様の確認(メールや課題管理表と呼ばれるExcelファイル)
  • 開発中に発覚した仕様や技術問題の相互検討
  • 商品データの仕様変更とDB反映
  • それらの電話

この管理稼働がかなり負担となって、開発コストと同等ぐらいの重みに感じました。Redmineを使っていたので開発メンバー内のコミュニケーションやチケットによるTODO管理、ガントチャートで進捗把握などは、かなり楽でした。Redmineは、その辺りの管理稼働を軽減してくれました。仕様の確認、いわゆるQ&Aや課題管理もチケットで行うことを発注元に提案したのですが、断られてしまったので、その分の管理稼働が重たかったですね。次回以降の案件では、なんとか受け入れてもらえるように提案や口説く(?)ことを頑張りたいですね。絶対楽ですよ。メールやExcelより。

蛇足

開発・テスト時に商用データを使うか

開発時に商用データが提供されていたのですが、何度か仕様変更に伴う商用データの変更をDBに取り込むなどの繰り返し作業が発生しました。テストデータを作成する稼働と天秤にかけて商用データを使うことを選択したのですが、こうも更新が多いとテストデータをこちらで作成して開発した方が総合的には楽だったかもしれないです。けど、その場合は受け入れテストや運用が始まってから商用データに対する考慮漏れとかで問題発見が遅れることになるから、商用データが早い段階で受け取れる状況なら利用した方がいいと思う。