プログラマー業界歴10年なのに若手エンジニアの私がどうやって見積もり(人月神話)を乗り越えるか

プログラマー業界歴10年なのに若手エンジニアの私がどうやって見積もり(人月神話)を乗り越えるか

2019, Oct 10

アジェンダ

見積もりの根拠のお話です。 ある意味きちんとしたルールやベストプラクティスが確立していないので、議論をすればするほど沼にハマるやべーネタです。

注意

  • 画像の縦軸は納期、横軸は人数です。
  • グラフの形はイメージなので、実際はもっと緩やかです。
  • 数字に意味はありません。

プログラミングで一番難しいのは「見積もり」だと思うを読む。

こちらは体系的にまとめてあり、イメージがしやすくて素晴らしい資料だと覆います。 が、実際にこのやり方を現場に落とし込めるか?というとなかなか難しいのも現実だと思っています。

私もなんだかんだで業界歴が長くなってしまった[^1]ので、年上の部下や技術的にめちゃくちゃ優秀な年下の上司もいました。 スタートアップなんかはとくに 20 代で CTO をやっている人が非常に多いので、私よりすごいエンジニアなんてどこにでも居る、という思想があります。 その中で、他のエンジニアと明確な差別化を図る方法の 1 つに見積もり術はあると考えています。

見積もりのノウハウを議論する場ってなかなかないですね。 私主導で開催するか、親しいコミュニティで打診するか--。

転職ひとつとっても、際限なく予算をもらえるがしがらみも多い大手企業か、新進気鋭が集まるが超稼働のスタートアップか、なんて事を考える時代です。 迅速に手を動かして攻めるタイプか、じっくり環境を整備して属人化から組織を守るタイプか、では同じエンジニアでもぜんぜん違う仕事なわけです。 当然、スケジュール感も違うので見積もりのアプローチなんかも異なります。スタートアップのノウハウは大手には通用しないし、大手の政治力はスタートアップでは何の役にも立ちません。

人月神話

まじめに書こうかと思ったんですが、以下で完成していたので引用いたします。

人月の神話というのは、ソフトウェア開発の”単位”である「人月」という概念が、神話に過ぎない(つまり、意味をなさない)という悲しい真実を軸に、ソフトウェア開発が如何に困難を伴うものであるかを説いた名著です。
一言でいえば、10人月の仕事=1人で10か月かかる仕事は、「人月という単位が絶対であれば”10人で1ヶ月”でできるハズ」だが、そんなことは起こりえない、というお話です。
そして、この状況を打破し、遅延したプロジェクトに100人投入して一瞬でシステムを完成させるような「魔法の道具(=狼男に決定打を与える”銀の弾”)」は存在しない*と結論付けられます。

引用元

ある程度は人数を突っ込んだほうが早く終わりますが、どんだけ突っ込んでも解消できない部分があります。 その人にしかできない作業とか、分業が難しい作業というものがどうしてもあります。 また、クリティカルパス[^2]もあります。

クリティカルパスについて

ご飯を炊き忘れた時にどんだけお金を突っ込んでも米を温める、炊く時間は変えられない、と考えてもらえばよいかと思います。 安いマイコンの炊飯器だろうが土釜 IT のいい炊飯器だろうが、炊く工程はなくせません。 精々、炊くのを諦めてできあいの白米を店で買ってくるぐらいにしか変えられないです。

人月神話は$$ \begin{align} \frac{規模}{人 × 月} \end{align}