Written by TSUYOSHI

残業が多すぎる! 忙しすぎるプログラマーの対処方法

PROGRAMMING WORK

残業が多いプログラマー「残業が多すぎて辛い… 仕事が終わらない…」

こういった悩みにお答えします。

本記事の内容

  • ラストスパートではなくスタートダッシュで仕事をする
  • タスク形式にして集中する時間を作れるようにする
  • 今やる作業のみにシングルタスクで集中する
  • 頻繁に相談がくる → すべてSlack経由かミーティングでまとめて話をしてもらう
  • 差し込みで作業が発生しすぎる → 見積もりだけして後回しにする
  • レビュー依頼が頻繁にくる → 時間を決めてその時間以外は対応しない
  • 新たに人を入れてもらうよう提案する
  • 現状がきついなら心がけるべきこと

この記事を書いている僕は、フロントエンドのプログラマー(フリーランス)として活動しており、Vue,React,Nuxtなどフロントエンドの開発を得意としています。

忙しくて仕事が終わらないプログラマーに向けて、僕の経験から現実的な解決方法を記事にしています。

この記事を読むことによって、現状打破の糸口になればと思っています。

ラストスパートではなくスタートダッシュで仕事をする

早めに手をつけて完成させる

ラストスパートではなくスタートダッシュで仕事は片づけます。
ラストスパートは最悪です。早めに手を付けるようにして、スタートダッシュで仕事を終らせるつもりで取り掛かるのが重要です。

仕事を依頼されたら、まずは見積もりをすぐにする

仕事を依頼される多くの場合、実際に手をつけてみないとわからないことが多いです。「ちょっとだけ確認の時間をもらっていいですか」とまずは確認の時間をもらい、できそうかどうかを確認してから返事をするといいと思います。

何なら少し作ってみてもOK。見積もりを間違えるから忙しくなりすぎるのです。

ちなみに僕がよく参考にしているのはマイクロソフトでWindows95の開発などをした「伝説のプログラマー」と呼ばれる中嶋聡さんで、著書の「なぜ、あなたの仕事は終わらないのか スピードは最強の武器である」はすごくオススメです。

中島さんは年齢に関係なく、未だにコードを書いて現役で活躍されている尊敬するプログラマーです。

タスク形式にして集中する時間を作れるようにする


僕が実際にやっていたのは、すべて計画に入れてできるだけ時間を決めて対応するという方法を取っていました。

忙しくなってくるとプロジェクトのことで話しかけられたりして、集中できる時間が減ってきます。この原因は様々ですが、以下のようなものでした。

・技術が分からない営業ポジションの人から頻繁に「これは実現できるのか」と相談を受ける。
・差し込みで作業が発生しすぎる
・レビュー依頼が頻繁にくる

これらをスケジュール化して対応する方法にしました。

「メール確認は1日1回にしろ」などの提言はよくありますが、クライアントワークや会社の仕事ではコミュニケーションを取らないといけないため、現実的ではありません。

計画を立て、集中する時間を作って、「30分集中して作業→メールやSlack確認を5分→また30分集中して作業」というような感じのことを繰り返すようにすると良いと思います。

今やる作業のみにシングルタスクで集中する


基本的にはシングルタスクで行動し、集中することが重要です。
依頼が何かあったら、TrelloやGoogleカレンダーなどの予定表に予定を入れたらその作業のことは忘れ、今やっている作業のみに集中します。

チームで対応をしていると、Slackの返信などはある程度頻繁にやらなければならないことが多いと思います。

僕がやっているシングルタスクでのやり方は、(先ほど述べた内容と被りますが)30分〜1時間は集中して作業し(この間は作業中の事以外は何もしない)、その作業後にSlackをみて必要なものは返事だけしてToDoはタスクに入れ、次の集中すべきタスクに取り掛かるということを繰り返すイメージです。

頻繁に相談がくる → すべてSlack経由かミーティングでまとめて話をしてもらう


主に営業ポジションの人から頻繁に「ちょっといいですか?」と話しかけられ、結局そのまま仕様を決める手はずになり、30〜1時間時間を取られるということが頻発していました。

これの対応として、ちょっとした相談でも「◯時から打ち合わせ」というようにスケジュールに入れてしてもらうようにしました。これでいきなり話し合いが始まって作業が中段されることは少なくなりました。
相手との関係性が多少ギクシャクするようになりましたが、これを徹底してもらうようにしました。ただ新人だったりすると言いづらいし、この方法は難しいかもしれません…

タスク化されていれば◯時〜打ち合わせだから、それまでは集中できるという感じで時間が作れるようになると思います。

気軽に話しかけてもらえるのは人間関係としては良いことだとは思いますが、プログラマーだと集中している時に作業が途切れるのは結構つらかったりする場合もあります。心を鬼にして、協力してもらえるようにお願いしましょう。ちなみに相手にもよりますし、全ての人にお願いするのは無理なので、できる範囲での対応といった感じです。

差し込みで作業が発生しすぎる → 見積もりだけして後回しにする

不具合調査が急に発生する時の対応方法

「ちょっと◯◯の動作がおかしいので、急ぎで調べて欲しい」と言われて、いきなり調査が発生することはどこでも発生してしまうことかと思います。これは仕方がないので、調査して原因だけすぐに調査します。

原因を突き止めたら、修正に必要な工数を見積して、修正は別スケジュールでお願いするようにします。調査に時間がかかる場合は別途、Issueとして課題に上げて、時間を別にとるようにします。
可能なら調査自体も緊急ではなければ、後回しにさせてもらいます。

急に当日対応を迫られる時の対応方法

締切間近の対応について、自分の知らないタスクがいきなり振られたりすることもあります。例えば、バックエンドの対応だけで済むと思っていたら、自分が担当しているフロントエンドの対応も必要なことが判明して対応の締切が翌日までだったりするパターンです。

できるだけ対応するようにした方がいいと思いますが、自分が残業したりして対応するのを前提にせず、期日を伸ばせないかの相談をすることを第一に考えた方がよい場合も多いので、ケースバイケースで対応しましょう。

レビュー依頼が頻繁にくる → 時間を決めてその時間以外は対応しない


最初はレビューしてもらう側ですが、少し経験値が上がってくるとレビューをする側に回ることになります。いわゆるレビューアです。

他人のコードを読むのは大変だし、仕様もある程度理解しないといけないし、意外と結構たいへんだったりします。しかも複数人のレビュー対応をすることになると…

僕は8人のプロジェクトメンバーのレビューを対応していた時期があるのですが、レビューの時間を1日に4時間以上取られていることがありました。レビューも1発で通るものばかりではないので、何度もやり取りし直さなければならなかったり、大量の差分が有るプルリクを一気に送られることもありました。

相手の作業を止めないようにできる限り、こまめに最初は対応していましたが、自分の作業が全然進まない状況に陥ったため、工夫するようにしました。

レビューは1日に2回しかしないようにした

朝イチと夕方の2回だけレビュー対応する時間を設けて、その時間のみ対応するようにしました。それ以外の時間はレビュー依頼は基本的に溜めておき、対応しないようにしました。
締切が近いものだけは別途、急ぎで対応するようにはしていましたが、これでかなり楽になりました。

新たに人を入れてもらうよう提案する


僕の場合はだいたい以下の方法をプロジェクトマネージャーに提案して解決します。
僕はJavaScriptのフロントエンド周り(VueやReactなど)を担当することが多いのですが、運用フェーズに入るとだいたい自分一人での対応になります。
予算の関係もあったりしますが、運用フェーズに入ったプロジェクトで、顧客の要望が立て続けにあって忙しくなった場合、外部の経験浅めのエンジニアを入れて、僕がレクチャーして徐々に独りで回せるようにしてもらって、僕が対応しなくてもよい状態にしたりします。

そうすることにより、メイン担当が自分以外の人になって徐々に楽になります。
やることとしてはレビューをしたり、難しい問題が発生したときにフォローする程度で負担はかなり減るはずです。人を入れ始めたときだけ、大変ですが長期的には楽になります。

フリーランスの場合は社員ではないので、ここまでする必要はないかもしれませんが、こういうことはよくあります。

自分で言うのも何ですが、今までフリーランスとして関わってきた企業には期待を上回る仕事をできていると自負しています。そのため、僕の場合は同じ案件で単価アップの交渉をして成功したこともあります。

時間単価で仕事をしているのだから与えられた仕事をきっちりこなせばよいと考えているフリーランスもいますが、常に当事者意識をもって仕事に取り組んだ方がお互いによいと思います。相手の立場になって考えればわかりますが、親身になって対応してくれる人の方が信頼できますし、仕事を任せたいと思えるはず。
僕はフリーランス=プロとして、相手の期待値を常に上回る仕事を心がけています。

現状がきついなら心がけるべきこと


以下の意識を持ちながら行動をし続けると現状は良くなるのではないかと思います。

常に仕事(プログラム)のことを考え続ける

いつも仕事のことを考えているということは重要だと思っています。
ただし職場にずっと束縛され続けるということではありません。移動中などにも考えるだけならできるという意味です。歩いている時や風呂に入っている時に解決策を思いつくこともあるはずです。

プログラマーは成果をあげることが第一

ミーティングやメール対応ばかりになってしまう日もあるかもしれません。これは仕方ないことです。

これらの対応だけで仕事をした気になってしまう時もあるかもしれませんが、プログラマーはコードを書いて成果物を作ることが仕事であることを考えながら行動しないと本質を見誤ることになります。

新しいことを学び続けなければ衰退しているのと同じ

Web系は特に技術の進歩が早いので、Web系エンジニアは勉強をし続けなければなりません。これを苦と感じる人には向いていないかもしれません。ちなみに僕は自分が学びたい知識であれば学習は楽しいと感じるタイプです。

IT業界では現状維持は後退しているという認識を持ち、少しずつでいいので自分が成長し続けることができるようにしましょう。学習時間を確保するためにも残業はできるだけ無くすべきです。

まとめ:ラストスパートではなくスタートダッシュで仕事をする

僕が仕事をする時に心がけているのは、以下の点です。

  • ラストスパートではなくスタートダッシュで仕事をする
  • タスク形式にして集中する時間を作れるようにする
  • 今やる作業のみにシングルタスクで集中する
  • 頻繁に相談がくる → すべてSlack経由かミーティングでまとめて話をしてもらう
  • 差し込みで作業が発生しすぎる → 見積もりだけして後回しにする
  • レビュー依頼が頻繁にくる → 時間を決めてその時間以外は対応しない
  • 新たに人を入れてもらうよう提案する

ご参考になれば幸いです。

※当サイトでは一部のリンクについてアフィリエイトプログラムを利用して商品を紹介しています