目次
エンジニアは何かと戦っている

エンジニアやプログラマって、やたらと忙しいイメージがあると思います。
僕も、エンジニア時代は忙しかったです。日付が変わるまで作業したことも、何回かありました。
ぎょぎょぎょ
なんて、前向きな考え方ができれば心配不要!あなたは最強のエンジニアです!!
僕は残念ながら、いつも見えない何かと戦いながら、体も心もボロボロになっていました。
納期はエンジニアに立ちはだかるラスボス
ぎょぎょぎょ
エンジニアは悪戦苦闘の日々です。倒しても倒しても、新しい敵(問題・課題)が襲ってきます。
敵と戦えば戦う程、HP(スケジュールのバッファ)が減り、あと一歩でゲームオーバー(残業地獄)です。
エンジニアには、多くの敵を生み出す強大なラスボスが立ちはだかります。

「納期」と呼ばれる、あまりにも強いラスボスが。
なぜ納期はあまりにも強いのか

納期は簡単に変えられません。どんなに強い攻撃を加えてもビクともしません。
エンジニア一同は、長い旅(スケジュール)を経て納期にたどり着くのですが、スタート時期や攻略ルートを間違えがちです。
- スケジュールの見積が甘かった
(一部の作業が漏れていた・想定より時間がかかってしまった) - 想定外の仕様変更を依頼された
- 作業品質が悪く、後戻り作業が発生した
- 前工程の作業が完了していない
原因はさまざまですが、共通して言えるのは、見積の段階で想定していたスケジュールから外れてしまっています。
道中に知らない敵がいて思わぬ足止めを喰らったり、前の街でイベントを攻略し忘れて後戻りしたり…エンジニアは、納期に対するスケジュール管理で苦労することが多いです。
残業は納期を倒すためのレベル上げ(苦行)
納期が迫ってくると、エンジニアも余裕がなくなります。特にスケジュールに余力が無くなったり、遅れが発生してしまったりすると困ったもんです。
困っていても、納期が待ってくれることはありません。エンジニアは、何とかして対策を立てます。
助っ人を増員する

エンジニア一同は、不足しているリソースを補うため、パーティに助っ人を加えようとします。
しかし、一刻を争う状況です。都合よく、賢者やバトルマスターは現れません。単純作業を分担できる仲間を見つけるのが精一杯です。
残業する

まだエンジニアは、納期に立ち向かうレベルに達していません。地道に残業して、納期と戦えるレベルまで作業を続けます。
しかし、残業はストレスをためる大きな要因です。百害あって一利なしだと思います。サービス残業となり、経験値(残業代)をもらえないこともあるとか。
「遅れた原因はお前らだろ!?なんで残業代を払う必要があるんだ!!」って言われるとね。立場が弱いと言い返せないよ・・・
納期はスケジュールを混乱させる

過去に携わってきたプロジェクトで、余裕のあるスケジュールで納期を迎えた経験は少ないです。
特に下請けの会社は、クライアントから案件を受注するため、多少無理な条件でも引き受けることがあります。前の会社では、そんなことを度々していました。
スケジュールは「問題なく無事に進捗する前提」で作成されます。まぁ当然です。問題が起きる前提でスケジュールを見せたら、「ここに任せて大丈夫か?」って不安にさせてしまいます。

一番苦労させられた問題は、システムの仕様を検討する打合せ(要件定義)が、いつまで経っても終わらない状況です。
当たり前のことですが、エンドユーザはシステムの仕様変更が、どれだけの時間を奪うのか分かっていません。
お客様
なんて言われることもあります。
ここで、エンドユーザーとクライアントがどのように対応しているかによって、下請けエンジニアへのダメージ量が変わります。
Aという仕様が決まった時点で「今後、仕様変更が発生する場合は、別期間かつ別予算での対応となる」のような条件を付け、同意を得ている。
仕様変更により、エンジニアの作業は増えます。ですが、納期を圧迫するような状況は発生しません。しかも追加の予算ももらえます。
「ユーザーさんから頼まれちゃった。申し訳ないが、なんとかできないか。」とエンジニアに頼む。
下請けエンジニアが死ぬパターンです。下請けも必死に抵抗しますが、恐らく追加の予算を多少もらって頑張ることでしょう。
「この間、Aという仕様に決めたじゃないですか!今さら変更できませんよ!」と断る。
下請けのエンジニアからすれば、「えっ、やらなくていいの?ラッキー!」と思う結果です。

ですが、よく考えてください。何のため、誰のためにシステムを作っているの?って話です。
これでは、苦労して作ったシステムを納品しても、ユーザーは喜んでくれません。もったいないです。
僕の関わってきたクライアントには、0点の対応をする方もたくさんいました。
共通して言えることは、エンドユーザともめることが多く、スケジュールに余裕がなくなります。後ろめたさがあるのか、なぜか下請けには腰が低いです。笑
納期を倒す方法は?

僕の個人的な考えですが、エンジニアは必ず納期に悩まされます。下請けのエンジニアは特に。
納期を倒す唯一の方法は「納品」です。納品すれば、すべてが終わります。
エンジニアは長い道のりを経て、システムという武器を作り上げ、納品という「とどめの一撃」を放つのです。

ここまで書いてきた通り、スケジュールの遅延は大きなストレスを感じさせます。それは、納期を倒せる唯一の武器の完成が遠のくからです。
自分自身のミスが原因であれば、手間は増えるけど気は楽です。だって自分が悪いから。時間をかけてでも、頑張れます。
ですが、他責が原因になると、これほどストレスがたまることはありません。
ストレスは、内にため込むとキツイですし、外に吐き出すと周りの空気も悪くなるし・・・

では、スケジュールの遅延を防ぐ方法はあるのでしょうか?
大した内容ではないですが、どうすれば良いのか考えてみました。
本当に大した内容ではありません。でも、できることってこれくらいじゃないかな?
初歩的なミスを減らす(なくす)
誤字脱字はないか、仕様とのズレはないか、バグは漏れなくチェックできてるか・・・
自分で自分の首を絞めてしまうことだけは避けたいです。
こまめにコミュニケーションをとる
完成してから「ドヤッ」じゃなくて、作成途中で「どうですか?」って確認するタイミングを作った方が良いです。
時間をかけて頑張った結果「違う」と言われるより、ちょっと頑張った段階で言われた方が、ダメージは少なく済むと思います。
しつこいくらいに聞いてしまえば良いです。結果的に良いシステムが出来上がるはずなので。
できないことはできないと言う

下請けのエンジニアは、クライアントから難しい対応を依頼されることもあります。そんな時は、無理なものは無理と言ってしまいましょう。やる必要もありません。
ですが、「それヤダ!しんどい!無理!!」と駄々をこねる訳ではないです。
まずは、自分自身の状況をしっかりと把握して、説明できるようになる必要があります。

「追加対応を行うにあたり、現在着手している作業に○○な影響があります。追加対応を優先し、現在着手している作業を…」のように交渉できると良いですね。
少しだけ相手の要求を受け入れつつ、こちらの要望も取り入れてもらうだけでも、負担が大きく変わりますよ。
最後に
最後まで、ご覧いただきありがとうございました。
エンジニアに限らず、納期は社会人にとって「迫りくる恐怖」のようなものだと思っています。
記事を書いている途中で気が付きましたが、納期を倒すには目の前の仕事を頑張るしかありません。

この記事を読んで、少しでも楽しんでもらえたら、また明日から仕事を頑張ってください!