どうも、しんのすけでございやす。
本日の話題は、「作業時間の見積もり」についてです。
みなさんはどうやって見積もりしていますか?
エンジニアならば、必ずといっていいほど現場で困ったことがあるのではないでしょうか。
そこで、本日は特別にとっておきの方法をご紹介致します。
この方法は特に現場経験の浅い新米プログラマーに効果があります。
一瞬で実践できて、その効果は絶大です。
騙されたと思って使ってみてください。
3倍見積もり法!
先に結論を言います。
どうやって作業の時間を見積もるか?
それは自分が だいたいこのくらいかかるだろうと思った時間を3倍にして人に伝える。 たったこれだけです。
え!?たったそれだけ?
ええ。たったこれだけです。
用法
上司やお客様から、「この作業どのくらいでできる?」って聞かれて、「1時間あればできそう」と思ったら「3時間あればできると思います」と答えます。
他、使い方はこのとおりです。
- 「この機能開発はどのくらい?」 ⇒ ザッと3日かな... ⇒ 「9日です」
- 「この設定変更をお願いしたい」 ⇒ 10分あれば楽勝でしょ... ⇒ 「30分ほどいただけますか」
- 「このサイトつくって」 ⇒ 1ヶ月くらいかな... ⇒ 「3ヶ月ってところですねー」
見積もりに潜む恐ろしい罠
甘い考え
そんなワケないやん。1時間くらいかかるって思ったら、「1時間くらいかかる」って素直に言ったらええやん。
そんなふうに考えていた時期が私にもありました。(笑
..........甘い!!(昔の私がw)
世の中、そうは問屋がおろしません。
想定外が必ず発生する
あなたが最初に脳内で見積もった作業時間は、「すんなりいった場合の作業時間」です。
新人エンジニアは、ついつい楽観的な予測というのを立てがちですが、仕事というのはすんなりいくことの方が少ないです。
エンジニアは2種類の想定外に遭遇します。
- 想定外1:経験不足から作業が滞る(職業エンジニアの本質)
- 想定外2:お客様都合で作業が滞る(客商売の本質)
上述の通り、2種類の想定外は、それぞれ本質を突いてます。順番に説明します。
経験不足から作業が滞る
予期しない不具合やエラーに悩まされて、作業が止まる。ハマってしまって時間を食う。という経験はみんなしたことがあるかと思います。
エンジニアが作業時間に割く大部分は、エラー・不具合・謎の現象との格闘です。ごりごりプログラムを書くのは楽しいですが、そういった時間は案外短いものです。
ITの世界は技術の入れ替わりが激しいので、ノウハウの無い新しい技術に挑戦することの連続となります。
そのときは、ベテラン、新米に関わらず、だれでも同様に頭を抱えて悩むことになります。つまり、職業エンジニアの本質とは、どこまでいっても「未経験に挑戦する」ということでもあるのです。
そりゃあ見積もり通りにいかず、滞ることも多いってわけです。
お客様都合で作業が滞る
発注者である客側の都合で作業スケジュールに大幅な遅れが出ることも往々にしてあります。
例えばWEBサイトを作るときに、お客様自身が文面・画像をご用意される/先方の上長に許可を取られる/途中で仕様変更となる...などなどです。
仮に制作期間を「10日間」と見積もったとします。
お客様の都合で方針が定まらず5日待たされたとき、実際に作業にできるのは残り5日間です。
本来10日間の作業なので、寝る間を惜しんで間に合うかどうかになります。
お客様都合が理由だから、納期もズラしてもらえるんじゃないか?それはごもっともな意見です。
ですが、先方や上司や営業マンが理不尽にも、その遅れたツケをあなたに「なんとかしろ」と求めてくるケースだってあるのです。これが客商売の本質だったりします。
もし、日程の再交渉をしてくれる上司や先輩が周りにいたら神として崇めましょう。
そういう会社が良い会社だと思います。
プロは、想定外を想定する
詰まるところ、見積もりとは、端的に言って「想定外の出来事を想定する」ということです。
自分の算段は、楽観的で誤っている。という意識を最初に持っておくとちょうど良いかなと思います。
すごいぞ!3倍見積もり法!!!
上記の罠を回避する意味で、3倍見積もり法が重要になってきます。
会得した経緯
私が20歳の大学生のときです。学内ベンチャー企業で、アルバイトのプログラマとして勤めていました。勤め始めてすぐの頃、「この作業、いつまでに終わる?」と聞かれて、答えることが出来ませんでした。
趣味としてプログラミングをやっていましたが、作業時間なんて意識せず、ただ作りたいように作っていたからです。
そのとき現場で教えていただきました。
自分で思った3倍を言えば、案外ちょうどいいよ
ーー恩師 エコマス株式会社 安藤竜馬社長
ほんまかいな
と、実は疑っていた私です。
そしてPerlのスクリプトを作る作業を渡され、この作業を30分程度。と勘で判断しました。
安藤社長に、「どのくらいかかる?」と聞かれて、私は「1時間半ほどです」と伝えました。
案の定
別に難しい作業でもなく、プログラムの見通しも立っていました。
そのとき謎のエラーが突如出て、事態収拾に追われることに!
なんとかかんとかエラー解消して、作業が完了したとき...時間はちょうど1時間半後でした。
すごいぞ!3倍見積もり法!!!
感動したことを今でも覚えています。
それからというもの、この手法に何度も救われることになります。
ありがとうございます!安藤社長。
見積もり論
ちょっと込み入った話ですが、私の考える見積もり論をご紹介します。
見積もりとは
工数(作業時間)見積もりというのは奥が深いです。
予測できないはずの未来を、過去の経験から予測するという作業です。
これでかかる期間・人員・費用が割り出されるので、開発業の肝と言えます。
信頼関係の象徴
言ったとおりの期日までに、言ったとおりのモノを作り上げる。
言葉にすると当たり前のような感じがしますが、これが一番難しい。
お客様との信頼関係、上司部下やメンバー同士の信頼関係においても、ここがすべてと言っても過言ではありません。
つまり、見積もりの精度 = 信頼 なのです。
お客様は、早く完成しても文句を言わない
通常、どこの現場の見積もりでも、必ずバッファ(予備作業日)を設けます。
なので、あなたが1日で終わらせられる。と確信している作業を、3日かかると言っても問題ありません。
予算が2日間分多く出ているとしても、
- もし本当に1日で終わったら ⇒ 別の作業を早めに始める/サービスとして別の作業をしてあげる
- やっぱり3日かかった ⇒ 見積もり3倍で伝えていたのでセーフ!!
となるので、いいことしかないのです。
遅れが出て、信頼度が下がるより遥かにマシです。
お客様の提示する納期に根拠はあるか?
3倍にしてお見積もり(作業スケジュール)を渡したとき「それじゃあ遅すぎる。どうしても納期がズラせない。」と言われたらどうしたらよいでしょう?
どうして、納期がズラせないのでしょう?
それは案外、先方の担当者の見積もりが甘く、(見積もりを取る前に)上司に先に約束しちゃったから。という理由だったりします。(もちろんそうでないケースもありますよ)
お客様が甘い見積もりをされていたときは、納期の変更を粘り強く交渉する義務が、あなたにはあります。なぜなら、手を動かすのはエンジニアなのだから、鵜呑みにすると自分の首を締めることになります。
エンジニアは奴隷ではありませんし、自分の身は自分で守る必要があるのです。
まとめ
あくまで新米エンジニア向けの3倍見積もり法ですが、とりあえずで使う分には、強力な効能があります。
しかし経験を積まれていく中で、想定外を想定する精度はどんどん上がっていくので、この方法だけに囚われず、自分の見積もり力を磨いていってください。
私も負けないように精進します。
他にも、なにか見積もり法でいい方法があれば教えてください。よろしくお願いします。
【関連おすすめ記事】