時間とタスクを制するエッセンス

:::note
本記事は[リンクアンドモチベーションAdventCalendar2024](https://qiita.com/advent-calendar/2024/lmi)の10日目の記事です。
:::

# はじめに
こんにちは！リンクアンドモチベーションでバックエンドエンジニアをしている津曲です。

新卒エンジニアとしてチームに加わり、タスクを任される中で直面した「タイムマネジメント」と「タスクマネジメント」の課題についてまとめます。

## ジョインした頃の私
:frowning2: < タスクを進めていて気づけば**数時間が経過していた**...
:frowning2: < **集中していたはず**なのに仕事終わってないぞ？
――そんな経験をしたことはありませんか？

タイムマネジメントを意識できていなかった私は、
- とりあえず1日の予定をカレンダーに入れるが、気付けば常に遅延している
- 作業を進めるはずが、調べたり悩んだりで立ち止まってしまう
- できた！と思っても、レビューで差し戻し

そんなことが毎日続き、結局タスクが終わらず翌日へ先送りになる...の連続でした。

## それぞれの課題

- とりあえず1日の予定をカレンダーに入れるが、気付けば常に遅延している

　**課題1 : 時間をなんとなくで捉えている**

- 作業を進めるはずが、調べたり悩んだりで立ち止まってしまう

　**課題2 :【悩む】と【考える】を履き違えている**


- できた！と思っても、レビューで差し戻し

　**課題3 : タスクを適切にスコープ分けできていない**

## 課題1 : 時間をなんとなくで捉えている
- 何していたか思い出せない時間があった

そんなことはないだろうと思うかもしれませんが、あれやこれや悩みながらタスクを進めていると1日を振り返った時「あの時何をしていたっけ...???」という時間が発生していることに気づきました。
原因としては**時間単位で目標を決めていなかった**ためです。
　😎「この時間までに〇〇を終わらせる、そのためにこの時間は△△する」
と決めておけば「あの時は〇〇のために、△△していました」と答えられるはずです。

ちなみにこれはプライベートにも有効な手段で「この時間はインプットとして〇〇をする」と決めておけば、「あれ勉強しないとなぁ」という漠然とした意識にメスを入れることができます。

- 時間に対して「区切りの意識」を持たせていなかった

それまで「始業」と「終業」の時間にしかその日の自分の進捗を把握していませんでした。
なので、日中に1日の目標から逆算してどこまで終わっていればいいのかを認識できていなかったのです。

### 対応策
そこで、1日3回先輩に報告をするように区切りを入れました。
1. 始業時：1日のスケジュールを立て、宣言する。
2. 終業時間の半分が過ぎたタイミング：1日のスケジュールから振り返り、今の進捗を報告する。遅れているようなら、完了できるように修正方針を話す。
3. 終業時：1日の結果を報告する。遅延した場合は要因と対策を一緒に考える。

**このように「時間への目的づけ」と「時間に区切り入れ」をしたことによって、日々段々と遅延が解消されるようになりました。**

## 課題2 : 【悩む】と【考える】を履き違えている
タスクを進める上でわからないことができた時に、コードを読んだり様々な資料を見たりして自力で解決しようとしましたが、「色々調べてみましたが結局わかりませんでした」という報告をしていました。
振り返ってみると、「少しでも頑張った感のある報告をするために、**考えるふり**をしていた」自分がいたことに気づきました。

この**考えるフリ**について、書籍「[イシューからはじめよ](https://www.amazon.co.jp/s?k=%E3%82%A4%E3%82%B7%E3%83%A5%E3%83%BC%E3%81%8B%E3%82%89%E3%81%AF%E3%81%98%E3%82%81%E3%82%88&adgrpid=51691974365&hvadid=679083521642&hvdev=c&hvlocphy=1009318&hvnetw=g&hvqmt=e&hvrand=3221080746893854393&hvtargid=kwd-333310288002&hydadcr=2752_13722226&jp-ad-ap=0&tag=googhydr-22&ref=pd_sl_crl3wpeov_e)」ではこう紹介されています。

> **「悩む」は、答えが出ないという前提のもとに「考えるフリ」をすること。
> 「考える」は答えが出る前提のもとに、建設的に考え組み立てること。**

解決策を探して何時間も頭の中で思考が分散しているうちは**考えるフリ**をしていただけでした。

### 対応策
- ゴールを明確にしてから、足りない情報は何かを明確にする作業をし、その上で調べ考える。
- 足りない情報が調べてもわかることではない場合(今考えているレイヤーの上層にあたることなど)は素直に聞く。
- コードリーディングの際には、何を把握したいのかを明確にした上でスコープを絞って読む。

**結果として、「適切な調査」と「適切な連携」の元で時間を使えるようになりました**

## 課題3 : タスクを適切にスコープ分けできていない
> 今回上げた課題の中でここが一番クリティカルな部分でした。

私は渡されたゴールに対して整理もせず、「まぁこの辺から進めるだろう」とできることをそのまま進めてしまっていました。
つまり「タスクマネジメント」の「タ」の字もないままだったのです。
問題としては以下のようなことが起こっていました。
- PRに対象とするスコープを設定していないせいで、あれもこれも直してと改修範囲が広がり最初からやり直し。
- リリースする前に、「顧客連携が必要か」連携すべきところをすっ飛ばして進めてしまい、許可が取れるまで待機しなければならなくなる。
- 前作業として依頼しないといけないことを全体を把握しないままお願いしたせいで、後々再度追加で依頼することになり遅延。

など、アジャイルもびっくりなヒットアンドアウェイ方式でタスクを進めていました。

### 対応策
以下のステップでタスクを進めることにしました
- Step1 : ゴールから逆算してToDoの全量を把握する
- Step2 : 各ToDoの工数と依存関係を把握する
- Step3 : クリティカルパスを見極める
- Step4 : マイルストーンに落とす
- Step5 : モニタリングしつつマイルストーンに従って進める

一つずつ見ていきましょう
- **Step1 : ゴールから逆算してToDoの全量を把握する**

タスク完了までのToDoの全量を最初に洗い出します。
それにより、後で「これもしなきゃいけなかった」という巻き戻しを防ぎます。
またどの単位でPRを出すのかなどのスコープも適切に捉えられるようになります。

- **Step2 : 各ToDoの工数と依存関係を把握する**

ToDoの工数と依存関係を整理します。
一つの作業に何人日かかるのか、Aが終わっていないとBができないといった依存関係を整理します。
これをフロー図にすると視覚的にわかりやすいです。

(例)
```mermaid
graph LR
    Start -- 3時間 --> A
    A -- 2時間 --> B
    A -- 4時間 --> C
    B -- 3時間 --> D
    C -- 4時間 --> E
    D -- 1時間 --> F
    E -- 1時間 --> F
    C -- 3時間 --> G
    F -- 1時間 --> END
    G -- 1時間 --> END
```

- **Step3 : クリティカルパスを見極める**

タスクの全量と依存関係がわかれば、最優先に終わらせるべき作業が見えてくるはずです。
全タスクの中で最も長い期間を要する一連の依存タスクの集合が**クリティカルパス**です。
このクリティカルパスを把握することで、何を最優先にやるべきかがわかります。

(例)
今回の場合
```Start → A → C → E → F → END```
の道筋が最も長い期間になるので、ここがクリティカルパスです

```mermaid
graph LR
    Start -- 3時間 --> A
    A -- 2時間 --> B
    A -- 4時間 --> C
    B -- 3時間 --> D
    C -- 4時間 --> E
    D -- 1時間 --> F
    E -- 1時間 --> F
    C -- 3時間 --> G
    F -- 1時間 --> END
    G -- 1時間 --> END

    linkStyle 0 stroke:red,stroke-width:2px;
    linkStyle 2 stroke:red,stroke-width:2px;
    linkStyle 4 stroke:red,stroke-width:2px;
    linkStyle 6 stroke:red,stroke-width:2px;
    linkStyle 8 stroke:red,stroke-width:2px;
```

- **Step4 : マイルストーンに落とす**

クリティカルパスを踏まえつつ、スタートからゴールまでのマイルストーンに落としましょう。
ここまで来れば、もう準備完了です。

- **Step5 : モニタリングしつつマイルストーンに従って進める**

あとは実行するだけです。
進めていく中でこれまで話した時間ごとの振り返りを行うことで、大きな巻き戻りは避けられると思います。

#### ※注意点:不確実性への対応
計画段階で全てを完璧に把握することは難しく、多少の不確実性が含まれることと思います。
その際は事前のヒアリングや確認、調査で不確実性をできるだけ減らしておきましょう。

---

以上の5つのステップでタスクを進めることで、大きな巻き戻りなく作業を行えるようになったと思います。
他にも、以下のようなメリットがありました：
- 日次での報告・連絡・相談が楽になった
- 作業に必要な協働者との連携がしやすくなった
- やるべきことが明確なので、単純に作業スピードが向上
- 途中で差し込みが入っても、再開時に「どこまでしていたっけ？」と思い出す手間がない

全てに対してここまで綿密に計画を立てるのは難しいかもしれませんが、観点だけでも頭に入れておけば悩むことは少なくなるでしょう。
特にどんなに忙しくても「**タスクの全体像の把握**」だけはやっておくべきだと思います。

## 終わりに
以上のように時間とタスクを自分で管理できるようになったら、少しずつ**自己支配感**が芽生えてきました。
時間とタスクに流され「余裕のない自分」を作り出すのも、時間とタスクを支配し「余裕のある自分」を作り出すのも自分自身であると感じます。

仕事でもプライベートでも余裕を生み出すことで、充実した毎日を過ごしていきたいです。

とはいえ、実際には上記をしっかりやっていても時にはうまくいかないこともあると思っています。
- 体調の問題
- 急なタスクの入れ替え
- その他予期しない事態

しかし「今自分が何をすべきか」を常に理解していれば、様々な要因で迂回して戻ってきた後もすぐに「あ、自分は今これをすべきだった」と判断できると思います。
これにより、タスクごとの切り替えコスト削減ができれば良いと考えています。

---
引用元：安宅和人 著『[イシューからはじめよ](https://www.amazon.co.jp/%E3%82%A4%E3%82%B7%E3%83%A5%E3%83%BC%E3%81%8B%E3%82%89%E3%81%AF%E3%81%98%E3%82%81%E3%82%88%EF%BC%BB%E6%94%B9%E8%A8%82%E7%89%88%EF%BC%BD%E2%80%95%E2%80%95%E7%9F%A5%E7%9A%84%E7%94%9F%E7%94%A3%E3%81%AE%E3%80%8C%E3%82%B7%E3%83%B3%E3%83%97%E3%83%AB%E3%81%AA%E6%9C%AC%E8%B3%AA%E3%80%8D-%E5%AE%89%E5%AE%85%E5%92%8C%E4%BA%BA/dp/4862763561/ref=sr_1_1?adgrpid=51691974365&dib=eyJ2IjoiMSJ9.XhZiNVfOt1SrAcQzPiTjOHDLDahb6is55mxpU2T_VU1Jbba3_NEiUAewc7yoeT85G2VBH_fLhFgsqyJC3z8HTdZTpDE-dpFHRp_u2J4Q1MsRkCxgQBHGGAvSSFVL85ELm_gQbj-0NUB5jj0L0xr_QV17tRc5gICInQUr3_PE8XeBGHDUcYuOTa7Tl20iB9VgtG7ouJz7xijbxTWFF0z7va3kLY2QEd4nUbgWxtByI5-Crkq0K-SMrUCf1FQ8j3nh6gdvQju6UIR2fZgKIqN4oClb2BkuMgAlx6tSqXl1Ypk.YW8LD0O563roCO9Z-EJV2l6utDkUVC1TPWB7O1pTdZg&dib_tag=se&hvadid=679083521642&hvdev=c&hvlocphy=1009318&hvnetw=g&hvqmt=e&hvrand=3221080746893854393&hvtargid=kwd-333310288002&hydadcr=2752_13722226&jp-ad-ap=0&keywords=%E3%82%A4%E3%82%B7%E3%83%A5%E3%83%BC%E3%81%8B%E3%82%89%E3%81%AF%E3%81%98%E3%82%81%E3%82%88&qid=1733728720&sr=8-1)』


## PS
```terminal
 タイムマネジメントをサポートする用のデスクトップアプリを自作してみました！
```

と、本当はこの記事に書きたかったのですが、この記事を書くことに対してのタイムマネジメントができておらず、またの機会になってしまいました...
私もまだまだです。これからも精進します。