NTTドコモ様_dカーシェア
NTTドコモ様_dカーシェア
2018.07.07

デスマーチ確実! 絶対にやってはいけないシステム開発スケジュールの作り方

はっしー

こんにちは、ニュージーランドで働くプログラマのはっしーです。

僕がかつてシステムエンジニアとして働いていたとき、めちゃめちゃ苦手だったのがスケジュール作成。まったく予定通りに進まず、毎回のようにデスマーチ(=連日の残業地獄)に陥ってしまっていたからです。

いったい何が原因なのかさっぱりだったんですけど、仕事をやめてから5年経ってようやく問題点がわかってきました。

今回は、元へっぽこシステムエンジニアの僕が「絶対にデスマーチになるスケジュールの作り方」を教えます!

 

<他にも働き方のヒントになる記事を書いています!>
無駄をなくして早く帰ろう!ニュージーランドで働くプログラマが使っている Chrome 拡張機能4選
残業の原因はスケジューリングに根拠がないこと! 定時に帰るための工数の見積もり方
業務時間中の飲酒やゲーム、こんなのアリ? ニュージーランドで自由すぎる働き方ができる理由
我慢するなら仕事辞めます。ニュージーランド式「我慢しない」キャリア形成の考え方策
会社が有給を取らせてくれない?有給休暇の取りやすい職場に必要な3つのポイント

すべての工程のスケジュールを一度に引いてしまう

システム開発は、作業が段階的にわかれているのが普通です。一般的なウォーターフォール型のモデルでは、要件定義→基本設計→詳細設計→実装、のように開発が進んでいきます。

ここで注意してほしいのは「前の作業が終わるまで次の作業ボリュームが確定しない」という点です。たとえば、要求された機能を実現するためにどれくらいの画面やフォームが必要になるかは、基本設計が終わってみるまでわかりません。基本設計が終わるまで詳細設計のスケジュールを引くことはできないはずなんです。

にもかかわらず、「基本設計は1週間くらいかな〜 詳細設計は2週間でいけるかな〜」などと適当にスケジュールを引いていると、前工程で予想外の開発ボリュームがあらわれた時点でジ・エンド。

「前の工程が終了次第、成果物のボリュームをみて次の工程のスケジュールを考える」と段階的に予定を決めていくようにしましょう。

そもそも、1ヶ月も先のことまで見通してスケジュールを引こうというのが無謀すぎます。人間そんな未来のことまでわかりません。まともに予定が立てられるのはせいぜい2週間くらいと思っておいたほうが確実です。

一切のバッファをもうけない

「1週間で終わるかな〜」と思われる作業があったとします。それに対し1週間ぴったりでスケジュールを引いてもよいのでしょうか?

当然、答えはNOですね。

システム開発に限らず、あらゆる仕事には「不確実性」がつきものです。急ぎの仕事が飛び込んでくるかもしれないし、思いもよらないミスが見つかって作業がやり直しになるかもしれないし、インフルエンザにかかって一週間休んじゃうかもしれない。

そんな不測の事態に対応するためにも、スケジュールにはバッファ(あそび)をもうけておく必要があります。これを怠ると、ちょっと想定外のことが発生した時点でもう残業から逃げられません。

ただし、バッファの取り方にもコツがあります。バッファは、各工程に割り振るのではなく、まとめて全行程の最後に設けるようにしましょう。

なぜかというと、各工程の直後にバッファがあると次のような問題が起きてしまうからなんです。

  • まだ時間があると思ってギリギリまで作業に着手しない(学生症候群)
  • 早く仕事が終わっても結局バッファいっぱいまで仕事してしまう(パーキンソンの法則)

これは「クリティカル・チェーン・マネジメント」と呼ばれる手法です。より具体的な内容をはずばり『クリティカルチェーン』という本に詳しく書かれていますよ。

作業の遅れを残業で取り戻そうとする

いざ開発を進めてみると、思ったより難しくてはかどらないってことがよくあります。

「進捗報告会議で”遅れてます”なんて言いにくい……」

「スケジュール通り作業ができないなんて、使えないヤツと思われるかも……」

そんな不安から、ついつい残業してでもスケジュールに間に合わせたくなる気持ちはわかります。ですが、作業の遅れを残業で取り戻すのは絶対にダメ!

残業しないと間に合わない状態にあるということは、スケジュールに対して作業量が多すぎるんです。それを無理してスケジュール通りに進めていくと、後半になればなるほど作業量がふくれあがって、残業でもカバーしきれなくなります。

そこまで事態を放置してしまうとリカバリーも困難。「スケジュール通り進んでます」ってずっと報告してきたのに、いまさら予定を変更するなんて無理でしょう。徹夜と休日出勤を繰り返し、泣きながら納期に間に合わせる地獄が待っています。

スケジュールに対して遅れが出るのは悪いことではありません。重要なのは、遅れが出た時点ですぐに上司に報告し、スケジュールの延長や開発ボリュームの削減を申し出ること。早めにヘルプを申し出れば周りも手伝いやすいですからね。

万が一、上司が「なにがなんでもスケジュール通りにやれ!」と指示してきたとしたら……その会社はけっこうやばいので転職を考えたほうがよさそうです。

まとめ〜スケジュールは柔軟に変わるものだと考えよう〜

自分がしでかしてきた失敗をひとことでまとめると「一度決めたスケジュールは絶対だと思いこんでいた」と表すことができます。

特にシステム開発では、いきなり完璧なスケジュールを作ることなど不可能です。実際の仕事量を見ながら、少しずつ正確な日程を作り上げていくつもりでいないと、あっという間にデスマーチになってしまいます! くれぐれもお気をつけください。

次回も働き方のヒントになる記事をお届けします。それではまた!

 

<他にも働き方のヒントになる記事を書いています!>
無駄をなくして早く帰ろう!ニュージーランドで働くプログラマが使っている Chrome 拡張機能4選
残業の原因はスケジューリングに根拠がないこと! 定時に帰るための工数の見積もり方
業務時間中の飲酒やゲーム、こんなのアリ? ニュージーランドで自由すぎる働き方ができる理由
我慢するなら仕事辞めます。ニュージーランド式「我慢しない」キャリア形成の考え方策
会社が有給を取らせてくれない?有給休暇の取りやすい職場に必要な3つのポイント