新人プログラマに意識してほしいタスク管理

# はじめに
仕事において個人のタスク（ToDo）を管理することはとても重要です。
特にプログラマは自身のタスクをきちんと管理することで大きく生産性に寄与してくると私は思っています。

私は新人の頃、記憶に頼って一切のタスク管理をやっていなかったのですが、仕事が増えてくるにつれタスクの抜け漏れが多くなり破綻するようになりました。
その時にタスク管理について試行錯誤するようになったのですが、この記事では私が考えるタスク管理のメリットと私が実践していることについて紹介します。

あくまで個人レベルのタスク管理でプロジェクトやチームにおけるタスク管理には触れません。

# タスク管理の効能
タスクを管理しだすとこんないいことがあります。

先ず当然のことですが、しっかりタスクを管理することで、**タスクのやり忘れやり漏れが**なくなります。
人間の記憶力には限界があるので、外部記憶を使ってあげましょう。

次に、タスクを外部に吐き出すことで、**頭の中がクリアになる**という効能があります。
皆さんにも急に色んな用事をポンポン振られて処理しきれずパニックになった経験が少なからずあると思います。

普通の人は聖徳太子じゃないので基本的にマルチタスクで物事を処理できるようにできていません。
人の脳みそは**今気になってること**に大きなリソースを使うので、火急でないタスクは逐次ToDoリストに記録して、とっとと脳みそから追い出してしまいましょう。

あとで落ち着いてそれらを眺めて優先度をつけて対処していけばよいのです。

そんなわけでタスクを管理しだすと、仕事が円滑に進むようになるだけでなく、心の余裕もできてメンタルヘルスの向上にも一役買います。
上司やクライアントからあれやってないこれやってないとか怒られなくなって良いこと尽くめです。

どうでしょう、少しはタスク管理にメリットを感じれたのではないでしょうか。

# タスク管理のコツ
それでは、そんなタスク管理をうまくやっていくために、私が心がけてるコツを紹介します。

## タスクの記録
まずは兎にも角にも、発生したやること（タスク）をなんでも記録しましょう。
全ては記録することからはじまります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96507/6fbef7a4-4c10-758f-94aa-96f79c27c1c9.png)

後述しますが私は色々試した結果、今はシンプルに箇条書きのタスクリストを作るやり方に落ち着いています。

もちろんTODOツールやアプリを使ってもいいでしょうし、テキストファイルでも紙のノートでもいいから**まずは何かしらにタスクを記録**しましょう。
やってみて、やり方は各々試行錯誤していけばいいと思います。

記録することで、揮発する記憶ではなく、記録に残るようになります。
ついでに、あの時何やったっけというタスクの実行ログも残ります。

## タスクの分解
往々にしてタスクは粗い粒度で発生します。

どういうことかというと…。
例えば分かりやすいように、「**今夜の夕食までにカレーライスを作って**」というタスクがあなたに指示されたとしましょう。

![syokuji_curry_man (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96507/2405a660-6b42-f435-cc14-b6e3c45340ec.png)


そしてあなたはそれをタスクリストに追加します。

```markdown
* カレーライスを作る（期限：今日の夕食）
```

ですが、カレーライスを作るという作業は、よくよく考えるといくつかのタスクの集まりで構成されていて分解可能であることに気づけたでしょうか？
さらにいえばカレーライスを作るための前提タスクも存在します。

```markdown
* 材料の買い出し（今日の16時）
* カレーライスを作る（期限：今日の夕食）
  * 炊飯
  * 食材を切る
  * 炒める
  * 煮る
    * ルーを入れる
  * 盛り付けする
```

![205cc7b9-5f1b-4181-8633-420914524249-960x303r.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96507/d7cc8d8f-5c0b-b1f5-c927-a5eee52b2c03.png)

このようにタスクを**細かく分解・構造化**できると、それぞれのタスクでやることがよりはっきりしてきます。
これによりタスクごとに必要な**作業時間や進捗状況の見積もり**が正確になり、時間が足りなくてタスクが完遂できないリスクを減らすことができます。
また、タスクの難易度も見えてきて、場合によっては分解したタスクの一部を自分ではなく**他の人に任せる**ことだってできます。

実はプログラマが行う作業見積もりもこれに近しいものがあります。
一つの機能の実装をより細かい粒度に分解することで正確な作業工数見積もり、進捗率を導けるようになります。

というわけで、タスクが発生したらまずそれをとっつきやすくなるよう分解していきましょう。

### マインドマップ
タスク分解が難しいときや、込み入った問題を考えるときにはマインドマップを書いてみるのもいいかもしれません。

![b043b261-1d61-4b74-a2e4-f52dbeb90801-960x721r.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/96507/c681b17b-b543-ee40-dd52-58f7dc019a34.png)

これもタスクリストと同じように、思い浮かんだことをすべてアウトプットして考えを整理するのに便利です。

## タスクの消化・優先づけ
タスクの消化は何も考えず到着順に消化していくのではなく、ルールで優先づけをして消化していくのがよいです。
適切な優先づけでタスクリストが組まれていれば、急な横入りのタスクや、優先度の入り繰りがあってもうまくはめ込んで対処できるようになります。

### 時間管理のマトリクス（アイゼンハワー・マトリクス）
重要度と緊急度を軸に行動を優先づけするためのマトリクス表です。

|            | 緊急である | 緊急でない|
|:-----------:|:------------:|:------------:|
| **重要である**   | **第Ⅰ領域（緊急）**<br>・締め切りの迫った仕事<br>・障害対応<br>・問合せ対応<br>**⇒すぐにやる**| **第Ⅱ領域（投資）**<br>・メンバーの教育<br>・コードのリファクタリング<br>・体調管理**⇒いつやるのか決める**|
| **重要でない**   | **第Ⅲ領域（錯覚）**<br>・出る必要のない会議<br>・儀式的な資料作成<br>・誰も見ないエビデンス<br>**⇒誰かに任せる**| **第Ⅳ領域（浪費）**<br>・暇つぶし<br>・必要以上の息抜き<br>・通勤時間<br>**⇒後でやるor排除する**|

たしか出展の『[７つの習慣](https://www.amazon.co.jp/dp/B00KFB5DJC)』では、自分の行動を見直して第Ⅱ領域の時間を増やしましょうね、みたいに使われていたと思います。

緊急で重要なことはすぐやるべきですし、緊急で重要でない仕事は減らせるように工夫して、緊急でないけど重要なことは忘れないように未来のタスクに回して、緊急でも重要でもないことはやらない。
といった感じでタスクの分類に使えると思います。

### 朝一番にカエルを食べろ
その日の一番重いタスク（カエルを食べる）を、最初に消化しなさいというものです。
作業のとりかかりにその日一番重いタスクを持ってくる方が後半バテない。

[カエルを食べてしまえ! | ブライアン トレーシー](https://www.amazon.co.jp/dp/B082PKZMR9/)

### 2分間ルール
パッと考えて**2分以内に終わりそうなタスクなら予定に加えずにその場ですぐやる**というものです。
熟考しなくてもすぐに返せるメールやチャットの返事など。
すぐ終わるものをいちいちタスクリストに加えるのは時間の無駄です。

### ポモドーロ・テクニック
これは私は合わなかったのでやってないが時間管理術の一つです。
興味がある人はググってみてください。

# 私のタスクリストの作り方
最後に私のタスクリストの作り方も紹介します（別にこれがいいというわけではありません）。
といってもそんな凝ったことはしていません。

[バレットジャーナル](https://www.kokuyo-st.co.jp/mag/Life-and-Work/2020/07/000140.html)というメモ帳の作り方があります。
これのDaily Logの部分だけを取り入れて、今まで紹介してきた指針に沿ってノートアプリに延々とタスクを書いていってるだけです。
（※2024年追記：最近はSlack canvasやSlack リストを活用して管理するようになりました）

私の場合はToDo管理のアプリやツールを使うより自由度が高いこのやり方があってました。
※別途スケジュールを管理するためのカレンダーアプリは使っています。

簡略化してますが大体こんな感じで書いてます。
今日が4/8だと思ってください。

```
～～～～未来～～～～
2022/07/04（月）
■プロジェクトA
    ・カットオーバー（13:00～
        ・クライアントに連絡
        ・デプロイ作業

2021/04/08（金）
■プロジェクトB
    ・[issue #○○ URL] 対応
    ・打ち合わせ（11:00～

■プロジェクトC
    ・設計書作成
        ・○○機能仕様書作成
        ・××機能仕様書作成
    ・内部打ち合わせ（16:00～

■その他
    ・勉強会（18:30～

2022/04/07（木）
■プロジェクトA
    ＋打ち合わせ（13:30～
        ＋あれ伝える
        ＋これ伝える

■プロジェクトB
　＋打ち合わせアジェンダ作成
    ＋[issue #○○ URL] 調査（4/8まで
        ＜[issue #○○ URL] 対応

■その他
    ＊なんか思いついたメモ

2022/04/06（水）
～～～～過去～～～～
```

直近１週間先の分くらいは枠を作ってやることの予定を書いておきます。
それより未来のものも大事なタスクは予め書いておきます。

その日の優先度の高いタスクは上に持っていきます。が、適宜差し込みタスクがあれば書いて、入れ替えしていきます。
未完了は`・`、完了は`＋`、先送りは`＜`みたいに自分ルールで記号を決めて、タスクの状態が変われば更新します。

人に見せるものでもないんでタスク以外のメモなんかも書いちゃいます。

業務中は常にこれを開きっぱなしで、タスクを記録、分解、消化してノートを更新しながら業務を進めていきます。
今日やるべきタスクの所在をすべて決めればその日の業務は完了。

# さいごに
プロジェクトやチームのタスクはPMや上司が管理することかもしれませんが、個人のタスクは自分で管理するものです。
実装能力が高いことよりもタスクを忘れず期限内に消化できる人のほうが信頼されます。
この記事を読んで、抜け漏れなく効率よくタスクを消化して、とっとと気持ちよく定時であがれる助けになれば幸いです。

技術スキルは時代の流れで陳腐化していくことが多いですが、タスク管理に限らずこういったソフトスキルはなかなか腐らないのでちょっと目を向けてみてはいかがでしょう。

https://qiita.com/official-events/3f21c92121aa125807b4