こんにちは、大阪事業所所属の瀬戸です。
日々業務に取り組む中で、生産性について考えたことはありますでしょうか。かくいう僕は、恥ずかしながら、最近まで生産性について深く考えたことはありませんでした。
生産性を意識しなくても仕事をこなしていくことはできます。
しかし、生産性が低いと、残業時間が増えることとなり、ワークライフバランスの低下、人件費増加でより多くのコストがかかってしまいます。
生産性が向上するとこういった問題が改善されるので、生産性をあげることは自分にとっても会社にとっても大事なことです。
そこで今回は、少しでも生産性をあげるために僕が日々の業務で実践している工夫について、紹介したいと思います。
作業の洗い出し
指示されていた機能の実装が終わり、いざプルリクエストを出してみると、実装漏れや考慮漏れで手戻り(前の段階に戻ってやり直すこと)が発生した、なんてことはありませんでしょうか。
以前の僕は、指示された機能を実装するのに何が必要か、何をしないといけないかを頭で覚えていました。しかし、完成が近づいてくると嬉しさのあまり、途中まで覚えていたこともすっぽり抜けてしまうことがありました。
こういった抜けや漏れを防いだり、手戻りを少しでも減らすためにも、タスクリストを作成するのはとても有効です。
作業に取り掛かる前に必ず、完了までに何をやらなければいけないのか、漠然とでもいいので作業を洗い出すようにしています。
これは一例ですが、僕は普段このような感じで作業の洗い出しをしています。
作業の分解
作業の洗い出しが終わったら、必ずさらに細かく分解するようにしています。
ただ作業を洗い出すだけで終わらせてしまった場合、その作業を完了するために何をすればいいのかが不透明になります。
そのため、何から手をつけたらいいのか、何をするべきなのか、どのぐらいの時間がかかるかがわからなくなるからです。
重要なのは、洗い出すだけで終わらせず、ゴールへの道筋がたてられるほど細かいタスクに分解していくことです。もっと具体的に言えば、作業にかかる所要時間が予測できるレベルまで細かく分解します。
僕は下の画像のように、いつも作業時間が10分?25分以内ぐらいになるように分解しています。
細かく分解することにより、洗い出した作業を完了するために何が必要か、具体的にイメージすることができるようになり、効率的に作業を進めることができます。
簡単なものから先に
細かく分解したタスクは簡単なものから先に終わらせるようにしています。得意なところ、すぐに終わりそうなところや事務書類の提出などは先に終わらせてしまいます。
緊急度が高くなければ、逆に時間がかかりそうだったり難易度が高いものは後に回してしまい、先にそれ以外のことを終わらせた方がいいと思います。
理由としては、難しいものから先に始めると、思っていたよりも時間がかかったときに、未着手のタスクのことが気になって焦ってしまうからです。
先に他のタスクを終わらせていれば、他のことを気にせず難しい問題に取り組むことができます。
TODOは前の日に
僕は明日何をするのかを前の日に考えるようにしています。というのも、次の日の朝仕事始めにTODOを書こうとすると、前の日何をやっていたのかを頑張って思い出す必要があるからです。
頭が働く1日の始めにTODOを書く、という考え方もありますが、エンジニアの仕事は次の日も前の日の続きをするということが多いです。
そのため、記憶が鮮明なその日のうちにTODOを書いてしまうほうがいいと思います。
明日何をするのかをこと細かく真剣に考える必要はありません。どこまで終わらせたのか、続きは何から作業をするのか、何を終わらせるか、などを簡単でいいので書いておきます。
すると、次の日仕事を始めるときにTODOを見返せば、昨日はどんな感じで仕事がおわったのか、何から手をつけたらいいのかがすぐにわかります。
頭の中だけで考えない
以前までは、僕は頭の中だけでものを考えるのが向いていないにも関わらず、文字に起こしたり、図を書いてみる、ということはあまりやってきませんでした。
頭の中だけで考えていると、自分の考えを整理しにくくなり、その結果考える時間が長くなってしまいます。
そのため、考えないといけないなと思ったときは、どんなに簡単なことでも文字や図に書いてみるようにしました。
僕は考えを整理するため、普段はメモ帳のようなテキストエディタに言葉で書いています。図を書いた方がいい場合は紙に書いています。
確認はこまめに
実装した箇所が仕様通りに動いているか確認するときは、こまめに確認するようにしましょう。まとめて確認してしまうと、うまく動作しなかったときにどこが悪いのか、原因追及がしにくくなります。
加えて、バグやエラーの解消のための修正によって他の部分も修正しなければいけなくなったとき、手戻りが大きくなります。手戻りが発生するとその分時間を取られてしまいます。
また、手戻りを減らすという意味では、指示された機能を実装する前にどのような設計・実装にするのかを先輩や上司に確認しておくのも一つです。
僕は以前、ユーザーが使う管理画面の少し難しい画面の実装を任されたことがあります。そのとき、どのような設計・実装にするのかをあまり相談もせず実装しました。
すると、プルリクでたくさんの指摘箇所があり、設計から修正するなど当初の予定よりもかなりの時間がかかってしまったことがあります。
手戻りはないに越したことはないので、開発前の設計や実装についての確認や、開発中の動作確認はこまめにしておいたほうがいいでしょう。
まとめ
タスク管理に関する内容が大半になってしまいました。しかし、生産性を上げる上で、タスクを適切に管理することはそれだけ重要なことだと考えています。
ここで僕が紹介した工夫だけでなく、ショートカットキーをこなしたり、タイポを極限まで減らすなど、他にも生産性を上げる工夫はできるかと思います。
僕もまだまだ生産性をあげる余地はあると思うので、悪いところはどんどん改善していこうと思います。