ねえぶ

猫好きエンジニアのブログ

1人月は何ヶ月としてスケジュールすべきか?

ブログを引っ越ししましたので,5秒後に移動します

システム開発の作業工数見積りにおいて,人月を単位として算出することがよくあると思います. それ自体の是非は別として,1人月の作業は期間としては何ヶ月でスケジュールすべきでしょうか?

前提

人月の神話によると,システムプログラム開発においては人と月は等価には交換不可能とあり,この基本的な考え方には私も同意しており,複数要員の場合にはまた違った話になるので,ここでは要員数は1人として考えます.

分担はできるが、サブタスク間でのコミュニケーションが必要な仕事においては、コミュニケーションにを図る労力を、こなすべき仕事量に追加しなければならない。

(人月の神話[新装版] フレデリック・P・ブルックス, Jr. p13)

また,ここでは1人月が20人日・160人時だった場合の1ヶ月を20日・160時間とします.

私の考え

私が過去に見てきたプロジェクトにおいては、当然のように1人月=1ヶ月としてスケジュールされることが多かったです. しかし,私はそれは間違っていると考えていて,基本的には(条件がなければ)1人月=1.25ヶ月としてスケジュールするようにしています.事実,1人月=1ヶ月としてスケジュールしているプロジェクトは,炎上するか遅延する例が多かったように思います(もちろんスケジュール計画以外の問題もあったろうと思いますが.)

この1.25ヶ月という数字は,組織やプロジェクトの諸条件や要員の雇用契約形態などによって妥当な値が異なると思います.

1人月=1ヶ月でない理由

1人月(1人が1ヶ月かかる工数)がなぜ1ヶ月というスケジュールに収まらないのかというと,そのプロジェクトに専属の要員であっても,間接作業や非可動時間が発生するからです.例えば,次のようなものが考えられます.

  • 所属組織内の業務(進捗会議,報告,目標管理など)
  • 教育と情報収集(研修,展示会など)
  • 法令関連業務(避難訓練など)
  • 雑務(整理整頓,掃除など)
  • 休暇
  • 祝日

考えみれば当たり前ですが,スケジュールを計画する際にこの考慮をせず,プロジェクトに専属なのだから100%の時間を当てられるだろうという間違いを犯してしまう例をよく目にします.

この点を無視すると,期間に当てられる作業量が,計画時点ですでに残業を織り込んだものになるため,進捗が遅延し,作業者の能率が悪くなり,品質に影響を与えることに繋がりやすくなります.

計算

先に述べたとおり,組織やプロジェクトの諸条件や要員の雇用契約形態などによって妥当な値は異なると思いますが,例としてこの間接作業と非稼働時間を考慮した計算をしてみます.

  • 進捗会議: 1時間/週(4時間/月)
  • 業務作業報告: 1時間/週(4時間/月)
  • 研修・e-learning: 2時間/月
  • 展示会参加: 4時間/月
  • 雑務: 30分/週(2時間/月)
  • 休暇: 1日/月(8時間/月)
  • 祝日: 1日/月(8時間/月)

上記のような場合,32時間/月(20%)が非稼働時間になります. つまりプロジェクトに当てられるのは1ヶ月=0.8人月であり,かかる期間は1人月=1.25ヶ月です.

一般的には間接作業は分けて工数実績を付けていると思うので,自身の組織でどれくらい間接作業に時間が使われているか調べてみると,実情がわかり妥当な計画が立てられるかもしれませんね.