最近人気の職業であるプログラマー、残業が多いという話をよく聞きますが、実態はどうなっているのかを解説します。
結論
プログラマーは残業が多い職業と思います。
※個人的な見解です。
残業が多い理由
プログラマーは何故残業が多いのか、残業時間が多くなる要因がいくつかありますので以下に挙げてみました。
予定外の作業が多発しやすい
プログラム作業を行っていると、突然の仕様変更などによりプログラムを修正することが多くなります。せっかく作成したプログラムも修正を行うことでテストを含めやり直す必要があります。
テストをやり直すということは、テスト結果を証明するエビデンスも再作成する必要があります。
ユーザによる仕様変更、関連システムによる仕様変更、関連機能による仕様変更、設計ミス・漏れなど・・・もちろん自身のミスによる戻し作業などが発生します。
予め作成されるスケジュールもバッファなどの余裕があるスケジュールであればリカバリすることができますが、ビッシリ詰まったスケジュールであると少しの遅れが最終的には大きな遅れとなることもあります。
思い込みによる間違いが発生しやすい
プログラマーは設計書を見てプログラミングを行います。設計書はシステムエンジニアがユーザ要件を元に作成する資料となりますが、レビューを通った設計書でもミスや漏れなどがあり、間違った状態でプログラム作成になる場合があります。
設計書をベースにプログラミングを行いますが、何も疑問を持たずに設計書通りにプログラミングを行い、結果正しく動作しない、想定通りの結果を得られないという状態となります。
その場合よくあるのが責任範疇の話になりますが、間違った設計書を作るシステムエンジニアが悪いのか、間違ったことに気づかずそのまま作るプログラマーが悪いのか、、、どちらにせよ正しいプログラムに修正し再度テストする必要があることには変わり有りません。
納期に間に合わせる必要がある
仕事において納期というものは重要なものであり、間に合わせることは当然であることが前提とはなりますが、自身の責任でない戻りや再作成が必要となった場合でもユーザへの納期を遅らせることはできません。
納期を遅らせるということは関連システムにも影響が出たり、制度ものであれば制度までにシステム対応を間に合わせる必要があるからとなります。
残業を発生させないためには・・・
残業が多いのは仕方がない!と諦めずに自分で対処するで残業が発生しにくい状況にすることは可能です。
報連相をしっかり行う
業務に報連相はつきものです。しかし設計を行ったシステムエンジニアとプログラミングを行うプログラマーとでは認識相違が頻繁に発生します。違う人間が作成した成果物であることから、文字だけで意図を全て伝えきるのは非常に難しいと思います。
そこで不明点・問題点などが発生した場合、しっかり設計者に確認を行うということが重要となります。
設計者は多くの作業があり何でも回答できるわけではないですが、プログラマーがしっかり仕様を把握したうえでの質問はとても助かります。
設計ミスをテストまで進めずに拾い上げることができるので手戻りも少なくなります。
また検討不足により自分で思った通りに進めるよりも、事前に設計者へ確認し個別で作成する機能なのか、共通で作成する機能なのかなどを決めることで自分の作業ではなくなるときもあります。(共通機能で作成されたものを呼び出すだけ)
プログラマーは一人でコツコツとやる作業のイメージですが、実は周りの作業者とのコミュニケーションが非常に大切な仕事となります。
要件定義を前提に設計書を確認する
プログラマーは設計者が作成した設計書をベースにプログラミングを行います。ただしプログラマーは設計書が正しく作成されているのか、考慮漏れがないのかという観点で確認することで不要な手戻りをなくすることができます。
例えば関連システムにテキストファイルデータを送る際に改行コードはCRLFでいいのか、LFがいいのかなど。簡単なことではありますが、設計書に記載がない場合は確認し記載する、関連システムと調整できていない場合は関連システムへ問い合わせをし、何が正しいかを確認する、このような作業がその後のテストで障害を発生させずにスムーズなテストを行うことができるようになります。
プログラミングをするので設計書だけを確認する、というわけではなく、しっかり要件定義を確認し、このシステムは何のために作ろうとしているのかを理解してから設計書を確認すると、要件に沿わなかったりする場合があります。
また実際の運用などを想定するだけで設計書の記載漏れや考慮漏れなどに気付くことができます。
まとめ
上記の通り、プログラマーの作業は多くなる傾向が強いと思います。特にスケジュール上の期日間際など遅延が発生した場合はリカバリーやその理由の報告などの手間を考えると期日内に終わりにさせたくなるため、より忙しくなりやすい状況です。
外的要因での遅れは仕方ないとしても、自身で回避できる問題点は事前にしっかり情報整理することでより自分が管理しやすいスケジュールにすることも可能となります。