【エンジニア】仕事の納期が間に合わない時の対処法【3つある】

Engineering SE

エンジニアの方:
・納期が守れるか怪しくなってきた。どうしたらいいんだろう?

・もう間に合わない!何をどうしたらいいんだろう?

・そもそも、納期が遅れないようにするには普段から何をどう心掛けるべきなんだろう?

エンジニアとして、納期は常にまとわりついてきますよね。
今回はこのような悩みについて解説していきます。

これを書いた自分はこんな人です学卒後、組み込みエンジニア職に従事。これまでソフトウェア開発リーダー、製品開発リーダーを経験し、納期遅れ、納期交渉を経験

【エンジニア】仕事の納期が間に合わない時の対処法【3つある】

下記となります。

  • 品質を限定して納入する
  • 納入を複数回にわける
  • 納期そのものを延ばしてもらう

順番に解説していきます。

品質を限定して納入する

正常系のテストのみ実施済の状態で一旦納入するなどの、品質を限定した納入です。

このやり方が有効な理由として、顧客としても、納品物受領後、いきなり例外ケースのような動作をするケースは稀で、通常は正常ケースの動作から入っていくのが一般的であるからです。

具体例は以下です。

  • 正常系テストのみ終了した段階で一旦納入
  • 主要機能のみ完全にテスト完了した状態で一旦納入
  • 後追い対応で納入

正常系テストのみ終了した段階で一旦納入品質を限定した納入の定番の1つとして、まずは正常系テストのみ完了した段階で一旦納入するというやり方です。

これはその名の通り、作成したソフトや製品について、まずは通常通りの使い勝手が問題なくできるかのみを確認して納入するということです。

最終的には、例えばボタンを連打することや、別々のボタンを同時に押したときにどうなるかなど、例外的な処理も考慮して、テストケースを網羅する必要がありますが、そういうのを抜きにして納入します。

主要機能のみ完全にテスト完了した状態で一旦納入開発中の製品には、複数機能が実装されているが、そのうちの主要な機能のみすべてのテストが終わっており、まずはその状態で納入するというやり方です。

主要機能というのは、例えば、キッチンタイマーを例ににするならこんな感じ。

  • 主要機能:確実に狙った時間で時間が測定できる、といったもの
  • その他機能:タイマー測定画面の背景を変えられる機能

このように、

  • キッチンタイマーとしての主要機能は検証がすべて済んでいる
  • しかし、その他機能のような、「今は必ずしも必要ない」機能は未完了
  • なので、品質限定品として、この状態で一旦納品をする

といったやり方です。

後追い対応で納入こちらは、一旦製品を納入後に、残りの作業を行うというものです。

例えば、

  • テストがすべて完了したので、製品としては納品
  • しかし、テスト結果のまとめや、ドキュメントの作成など、付属の成果物は未作成
  • なので納品後に作成、つまりは後追いで作業し、完了次第再度納入する

というやり方です。

これですと、一応納品自体は終わっており、テストも完了して品質としても問題ないはずなので、顧客にも特にノーリスクではないでしょうか。

納入を複数回にわける

検証完了した機能から順次納入していくなど、納入を複数回にわけて行う、というやり方です。

顧客としては、納入品を受領後、まずは納品物の主要な機能から使い始めることが予想され、サブ機能は必ずしも納入直後から必要でない場合にこのやり方が使えのではないでしょうか。

主要機能を元々の納期に、それ以外を後日に納入まずは主要機能のみ検証まで完了したものを納入し、後日別の機能も検証完了した状態で納入する、といったやり方です。

但し、主要機能がリリース不可ならお手上げかもこのような分割納入は、注意点としては、主要機能がリリースできないのなら、このやり方は使えないと言うことです。

さすがに、どうでも良い機能を先に導入しても、顧客は何のメリットもありませんので。

納期そのものを延ばしてもらう

納期に間に合わないのなら、単純に、納期そのものを延ばせるかを素直にお願いしてみましょう。

なぜなら、顧客側も、日程にマージンをもった状態で納期を設定した可能性があるためです。

顧客側も日程をギリギリでひっぱってないことがある顧客側も、納入品を受け取って、それを使ってすぐに社内でテストなどをするとは限らないことが多いです。

まず納入品を受領後、2、3日してから他部署にその納品物を渡して作業する、みたいな感じが多いのではないでしょうか。

このように、日程をギリギリで引っ張っていない可能性があるので、納期交渉はやってみる価値ありです。

そもそも、納期自体を遅れないように計画的に作業すべき

これまで、納期が間に合わない場合の対処法を3つ解説しましたが、エンジニアとして、そもそも納期に遅れること自体がまずいです。

なぜなら、いうまでもなく、納期の遅れは、顧客や相手との信頼に関わるからです。

では、納期遅れとならないようにするためにはどうしたら良いでしょう。

きちんと計画を立てて作業しよう

1番大事なのはこれです。開発をする際は、まずはしっかりと計画を立てましょう。

当たり前のように感じるかもしれませんが、実際の開発現場は、開発に忙しいので、開発以外のことを消極的になりがちです。計画なんてその典型的な例です。開発当初こそ計画を立てるが、以降はリスケせず、そのまま、なんてこともよくあるのかなと。

計画するのは、作業計画であったり費用見積もりだったりいろいろありますが、ここでは作業計画について簡単に解説します。

作業計画の際はまずは以下の2点を守りましょう。

  • 1日8時間の作業時間で計画
  • 最後の追い込みを計画しない

1日8時間の作業時間で計画1日の作業時間を残業なしの8時間で計画しましょう。

こうすれば、万が一計画を遅れた場合は、残業で送りをカバーすることができますので。

例外として、短納期、かつ残業すれば納期が間に合う場合には、やむなく最初から残業ありきの計画を組むこともあります。

最後の追い込みを計画に入れない人間、納期が迫ると、集中して一気に作業をやり遂げられる場合がありますよね。

小学校の時の夏休みの宿題みたいなものです。

確かに、お尻に火がつくと一気に作業できるかもしれませんが、それを期待して最初からそれを計画に入れるのはリスキーです。

なので、そのような計画をたてるのはやめましょう、ということです。

経験談:仕事を引き受けすぎて納期遅れ

こんな失敗をした過去があります。

  • 日程的にはかなり厳しい
  • とはいえ、自分がやりたかった作業があった
  • なので、平日帰宅後、土日を使って鬼作業
  • しかし終わらず、納期前に上司に打ち上げ
  • ヘルプに入ったメンバに迷惑をかけることに

間に合わないかなと感じた時点で、すぐに他人にヘルプを求めればよかったものの、どうしても自分で全てをやり遂げたかったので、ギリギリまでヘルプを頼みませんでした。

結果、納期間近でギブアップし、そこから他人にヘルプしてもらったため、他人も含めて深夜まで残業させてしまいました。

なので、これからは、とにかくやっつけ作業しようとするのではなく、まずは落ち着いて作業計画を立てることが大事だと痛感しました。

優先度をつけて機能実装していこう

いざ開発が始まった場合、どのような機能からまずは実装していきますでしょうか。まずは、その製品の主要機能から作り込むべきです。

なぜなら、それがないと、他の機能の作り込みができないからです。例えば以下です。

  1. クルマのエンジンをかける機能
  2. エンジンがかかった後で動く機能

この場合、1の実装が先にできていないと、2はできませんよね。

なお、テストの場合も同様です。

なので、複数機能を実装するにしても、どの機能から実装するのかをきちんと優先順位付けしてから、作業開始するようにしましょう。

経験談:高優先機能から作業したので助かった例複数機能を一人で実装する予定でしたが、最高優先の機能が、その他機能に密接にかかわるものであったため、コード作成にかなりの時間を費やしてしまいました。

とはいえ、そこからはパラ(並列)で作成可能な機能でしたので、他者にヘルプいただき、結果として納期に間に合うことができました。

もし、実装する機能に優先度をつけず、手当たり次第でコード実装していたら、どれもが中途半端となり、他人には手だしができず、一人で実装せざるを得ない状況になったかもしれません。

なので、どの機能から実装するのかをきちんと優先順位付けしてから、作業開始してよかったとその時思いました。

納期間近になって上司に打ち上げても遅い

納期に間に合いそうにないとわかった時点で、上司にその旨打ち上げましょう。

そうすれば、納期までまだ日にちがあるから、他者のヘルプをもらうことで、納期に間に合う可能性があるからです。

よくあるケース年は、先ほど解説した自身の失敗例のように、

  1. ずっと納期遅れの可能性の事実を隠す
  2. 納期間近になって、やっぱり間に合わない
  3. 炎上

と、いったケースです。
直前にいきなり言われても何もできませんよね。
なので、遅れそうな時点ですぐに打ち上げましょう。

計画的に作業し、だめなら納期交渉をこのように、納期が間に合わない場合の対処法はありますが、その前にまずは納期に遅れることがないように、日頃から計画を立てて作業しましょう。

今回は以上です。