システム開発でスケジュールの遅れを取り戻す現実的な方法
「っていうか、遅れない時がない…」
「何か根本的に間違ってるのかなぁ?」
システム開発っていつも納期に追われて大変ですよね。
追われるどころか追いつかれて置いてかれて、つまり予定より遅れてくわけです。前倒しで作業してたつもりでも、いつの間にか余裕がなくなってたりします。
何か根本的な解決策が必要ですよね。
そこで今回は、私が実際にやってみて効果があった方法を紹介します。
スケジュールは遅れて当たり前
PMBOKというプロジェクトマネジメントに関するノウハウや手法を体系立ててまとめたガイドラインがあります。
そのPMBOKの基本的な管理項目の一つに「スケジュール管理」があります。
管理するとは問題を解決するということです。
スケジュールの問題とは進捗の遅れです。
それが管理項目になっているということは、
スケジュールは、
- 遅れるもの
- 遅れて当然のもの
と考えるべきなんです。
つまりは、はじめから遅れることを想定して臨めばいいんです。
遅れに対応する方法
納期を延期する
遅れた分だけ納期を延ばせば、納期までにシステムを完成させることができます!
いやぁ、すばらしい!この方法が一番確実です!
って、実際こんなハッピーなことにはなりません。納期が設定されているのには理由があるので、かんたんに延ばすことはできませんからね。
よって、次の策です。
開発範囲(スコープ)を狭める
納期が遅れた分、作る範囲を減らせば、納期に間に合います。
開発する予定だった機能の中で優先順位をつけて、削れるものがあれば削りましょう。
システムをリリース後、追加開発で実装すれば済むものもけっこうあるはずです。
どうしても機能を削れない場合は次の策です。
開発要員を増やす
開発要員を増やすことで進捗がスピードアップします。
単純計算すると、5人で作業するよりも10人で作業した方が早く進みます。
ですが、人を雇うにはお金がかかるので、開発予算に余裕がない場合、この策は使えません。
それに人月の神話というソフトウェア開発の名著では、
「要員を追加しても進捗は良くならない。なぜならば、新しい要員に仕事を教えるコミュニケーションコストが増えるからだ」
これを称して、「ソフトウェア開発に銀の弾丸はない」と言われています。銀の弾丸とは万能の解決策のことです。
たしかに人を増やしたら、その人たちに
- プロジェクトの概要を説明
- 何をやってもらうかの説明
をする時間が掛かって却って進捗が遅れることってありますからね。
そこで次の策です。
作業効率を上げる
作業効率って少し仕事のやり方を見直すだけで大きく改善できる場合があります。
例えば、会議に参加する人数を減らすことです。
会議中は参加者全員の作業が止まります。
会議を進められる最小限のメンバーに絞ることで、会議から外れたメンバーが作業を進めることができます。
作業効率を上げるというとキーボードのタイピング速度を上げるとかショートカットキーを覚えるなどの、スピード系の技を思い浮かべてしまいがちですが、そういった方法よりも、会議参加者を絞るなどのように仕事の分担を見直すことの方が大きな効果が得られます。
作業効率を上げても、納期に間に合わせるのが難しい場合は、次の策です。
残業や休日出勤して作業時間を増やす
作業時間が増えれば、その分早く進みます。
ですがこれって最終手段なんです。
それなのに、最初からこの手段を使うプロジェクトが多いんです。
残業や休日出勤をすれば一時的に進捗速度は上がりますが、疲労による
- 注意力低下
- 手抜き
等が発生してしまいます。
その結果、せっかくがんばって納期に間に合わせても、バグや障害が多発して顧客にも迷惑をかけてしまう、そんなことになりがちです。
つまり、安易に残業や休日出勤して作業時間を増やすという手段を取る企業やPMは、顧客のこともエンジニアのことも大切にしていないんです。
こういう場合、私たちエンジニアはどうすればいいのでしょうか?
無理な納期をハードワークで間に合わせても品質の高いシステムを作ることはできません。
私ならこんな場合、すっぱりその会社を辞めて転職します!
「おいおい逃げるのか?無責任じゃないか!」
と思われたかもしれませんが、そんなことありません。
不誠実なプロジェクトで仕事をしないためです。
ただそれだけです。
「不誠実な会社はつぶれるべきなんです!!」
って言いすぎですかね(笑)
それに転職活動すると分かりますが、世の中いっぱい会社があります。
いろんな仕事があります。何も今いる会社に拘る必要はないんです。
ちゃんと探せば、いい会社ってありますからね!