3周まわってタスク管理をセルフマネジメント激強GTDに改善したい

# はじめに
この記事は[ソニックガーデン 若手プログラマ Advent Calendar 2024](https://qiita.com/advent-calendar/2024/sonicgarden-junior) 記事の一つです。アドベントカレンダーはまだまだ3週間以上続くので、胃もたれしないように息抜きの記事はいかがでしょうか。

今週末にある社内ハッカソン **「『タスク管理＋日報＋振り返り』が一緒になった仕事ツール」** のアイデアが出なすぎるので、この場を借りてタスク管理部分について考えていきます。
この記事では **「何ができたらよりアプリ開発が捗るか？そのためのタスク管理とは？」の構想**に留まるので、「ふ〜ん、こんな風にやるタスク管理・考え方もあるんだなぁ」という姿勢でお読みいただいたら良いと思います。

社会人になって3年目ですが、何周も回って再びタスク管理の改善で行き詰まっています。同様の方々、現状打破していきましょう！

#### 目次
- [x] [自分の仕事についてざっくり](#自分の仕事についてざっくり)
- [x] [これまでのタスク管理と現状](#これまでのタスク管理と現状)
- [x] [どうタスク管理できたらいい？](#どうタスク管理できたらいい)
- [ ] [新しくどういうアプリにできたらいいだろう？](#新しくどういうアプリにできたらいいだろう)
- [ ] 設計してみた
- [ ] 作ってみた
- [ ] 使ってみた
- [x] [結論](#結論)

# 自分の仕事についてざっくり

### 開発

- 2~4人程度のチームで開発する受託案件を複数並行して受け持つ
- チームに最低一人は熟練プログラマがいる *1
- クライアントと毎週開催するミーティングにおいて、開発デモと、次週までの開発タスク決めを行う
- 特定の成果物をもって納品するのではなく、月額定額でアプリ改善を続ける
- クライアントが満足し続け、開発も持続可能になるよう、毎週一定の成果を生む
- 厳密な要件定義は必ずしも存在しないが、クライアントと共有するプロジェクト管理アプリを使用 *2
- チーム内でのコードレビューを通して毎週マージしていく *3

*1) 僕のことじゃない
*2) タスク管理機能もあり、「未着手 → 着手中 → ... → リリース済み」みたいな感じで管理。今回開発するのは、これとは別の個人のタスク管理アプリ
*3) なかなか1回では通らない

参考) [ソニックガーデン「納品のない受託開発」](https://www.sonicgarden.jp/n2jk_concept)

### それ以外

- 日報で成果共有しつつ、その日の学びや所感を整理する
- 毎週、仕事と成果に対してフィードバックを貰いながら伸び代を探す


# これまでのタスク管理と現状

### これまで使ってみたやつ

- Google ドキュメント
    - 案件ごとの管理がしにくくてやめた
- [Todoist](https://todoist.com/ja)、[Tick Tick](https://ticktick.com/?language=ja)、内製プロジェクト管理アプリのタスク管理機能、案件ごとの社内掲示板
    - 時間管理が面倒でやめた
- Google スプレッドシート
    - サブタスク管理しにくくてやめた
- VScode + [Todo+（拡張）](https://marketplace.visualstudio.com/items?itemName=fabiospampinato.vscode-todo-plus)
    - 案件単位での時間管理をもっと楽にしたくてやめた
- [Todoist](https://todoist.com/ja) + [Toggl Tracker](https://toggl.com/)
    - 進捗共有しにくかったのと、多重管理っぽかったのでやめた

### いま使ってるやつ

- 案件ごとの社内掲示板 + [Toggl Tracker](https://toggl.com/)

サブタスクの管理とかは前者、時間管理を後者で並行稼働しています。
社内掲示板を使うとタスク進捗状況の共有やちょっとした相談も掲示板でそのまま出来るのが、この組み合わせの強みです。
ただ、不要なところを作り込んだり、着手中に脇道に逸れていったり、とちょこちょこ失敗します。

# どうタスク管理できたらいい？

### 抜け漏れをなくしたい

- 既に終わっていることが何か分かる
- 今やっていることが何か分かる
- 残りやることが何か分かる

**毎週どの開発タスクをどこまで進めるかをミーティングの場で更新していく**ので、何らかでリストアップ・ステータス管理しないと忘れます。

使用しているプロジェクト管理アプリにもタスク管理機能があるとはいえ、あくまで案件用の粒度で管理されます。
案件単位では1タスクとして数えるものであっても、開発する上ではより細かくサブタスクをリストアップするケースも多いので、必要な機能です。どのページに追加するんだっけ、とかメモしてないと普通に忘れます。

### 時間配分をうまくしたい

- どれくらい時間を使っているのか分かる
- あとどれくらいの時間を使えるのか分かる
- あとどれくらいの時間が必要そうなのか分かる

たとえば、**あるクライアントの開発で一つ大きくハマってしまい、そのクライアントだけ開発コストを増やす**というのは望ましくありません。

案件ごとの開発時間のバランスが崩れてどこかに皺寄せが行かないように、開発時間について把握しておく必要があります。早めにヘルプを出したり、そんな状況でも価値を出すための工夫をしたりする必要があります。
そのためにも、タスクごとの見積もりをもとにクライアントと開発ペースの擦り合わせを行います。クライアントにとって価値が小さなところに時間を使うよりも、より価値を高いところに時間を使った方が WIN-WIN です。

### 手戻りを減らしたい

- どのくらいの完成度が必要なのか分かる
- より良い実装アイデアが何か分かる

**テキトーな思い込みで開発を進めると、「この機能いらん」「この実装イマイチ」等々とコードレビュー時点で吹き飛ばされます**。Approve されるはずもなく、修正の分の時間ロスが発生します。

想像するに、レビュワー側も精神ダメージを負うので、避けた方がいいです。「これはこういう機能・UIでいい」「このパターンはこう実装するのがいい」と明確にいえないようなものに関しては、下手に作り込む前にクライアントや熟練プログラマと擦り合わせるのが吉です。タスクのスコープを間違わないこと、より良いコードにできることもタスク管理に含まれると思います。

### 「考える」と「つくる」を分離したい

- 考えても分からないことが何か分かる
- 手を動かす最中に悩んだり迷ったりする必要がないか分かる

**コードを書きながらウンウン悩んでいると、そのまま視野がどんどん狭まってどん詰まり**になることが少なくありません。

「分からん」「分からなそう」を察知できたタイミングで手を動かすのをやめ、冷静な頭でしっかり考えたり、調べたり、相談したりすることで回避します。
「考えてなかったことだけど、分かるから進める」は要注意です。最近ちゃんと気づきました。反射的に実装してしまうと、「手戻りを減らしたい」レギュレーション違反の可能性が高まります。「よくよく考えたら、ここまで丁寧にやる価値なかったわ」のケースです。

参考) [ソニックガーデン「セルフマネジメントの必須スキル「タスクばらし」そのポイント」](https://kuranuki.sonicgarden.jp/archives/21981)

### 楽に管理したい

- 見やすい、操作しやすい
- 可能な限り二重管理とかしたくない
- 自動化できるものは自動化したい

そりゃそうだろ。

# 新しくどういうアプリにできたらいいだろう？

- 既存サービスとかも参考にすれば問題なく出来そう
    - 既に終わっていることが何か分かる
    - 今やっていることが何か分かる
    - 残りやることが何か分かる
    - どれくらい時間を使っているのか分かる
    - あとどれくらいの時間を使えるのか分かる
    - あとどれくらいの時間が必要そうなのか分かる
    - どのくらいの完成度が必要なのか分かる
        - だけど、個々に手動で記入・選択しないとダメそう
- よく分からん
    - より良い実装アイデアが何か分かる
        - うーん......
        - 比較・評価欄みたいのがあれば...？
        - 掲示板とかに自動投稿できるようにして、相談しやすい状態にするのも一手かな？
    - 考えても分からないことが何か分かる
        - ちょうどいい粒度でタスクを分解できればOKだけど、着手前は見落としているケースもある
        - いざ目の前にした時に、さっとタスク管理に戻りやすくするには？
        - ホットキーとかショートカットとかのUI/UXか...？
    - 手を動かす最中に悩んだり迷ったりする必要がないか分かる
        - 一瞬でも頭の中で最後まで実装する引っ掛かりを作れれば...？
        - エディタ上で手が止まった時にアラートが出る？？？やりすぎ感ある
- あまり考えてない
    - 見やすい、操作しやすい
    - 可能な限り二重管理とかしたくない
    - 自動化できるものは自動化したい
        - 時間管理系はやれそう
            - そこから日報作成とかにも発展させられそう
        - 伸び代系を探すのも自動化できそう
            - 具体的には思いついてないけど

# 結論

セルフマネジメント激強GTDに改善できず ＼(^o^)／
現状のタスク管理で行き届いていない範囲の構想まで終わりませんでした。現状打破むずかしい。

# おわりに

「記事にすれば流石にいい感じに改善するアイデアにまとまるだろう！」と考えてはみたものの、具体的な設計にすら到達できず。
誠に遺憾ながらタイムアップしたので、他の弊社若手プログラマ達のハッカソン成果に期待します。優勝作品は公式Xでも投稿されるはずです → https://x.com/sonicgarden_inc

世の中の人々、どうしているのかしら。