タスクの分解と見積もり
ストーリー
「渡辺さん、新機能の実装タスクなんですが、 どのくらいかかるか聞かれて『3日くらいですかね』と答えたら、 実際には1週間かかってしまいました......」
渡辺マネージャーは穏やかに言った。
「見積もりが外れるのはよくあることだ。 問題は、なぜ外れたかを分析していないことだ。 タスクが大きすぎると見積もりの精度は下がる。 分解の技術を身につければ、見積もりも正確になる」
なぜタスクを分解するのか
大きなタスクには3つの問題があります。
大きなタスクの問題
大きなタスク: 「ユーザー検索機能を実装する」
問題1: どこから始めればいいかわからない
→ 手が止まる(分析麻痺)
問題2: 見積もりが不正確になる
→ 「3日くらい」と言ったが実際は7日
問題3: 進捗が見えない
→ 3日経っても「まだやってます」としか言えない
分解後のメリット
分解後のタスク:
1. 検索APIのエンドポイント設計(2h)
2. DBクエリの実装(3h)
3. 検索結果のページネーション(2h)
4. フロントエンドの検索UI(4h)
5. 検索結果の表示コンポーネント(3h)
6. テスト作成(3h)
7. コードレビュー対応(2h)
メリット:
✓ 各タスクが明確で着手しやすい
✓ 合計19hという具体的な見積もり
✓ 「5/7タスク完了」と進捗が伝えられる
タスク分解のテクニック
1. 作業工程で分解する
ソフトウェア開発の一般的な工程に沿って分解します。
機能実装のタスク
├─ 設計
│ ├─ API仕様の定義
│ └─ DB スキーマの設計
├─ 実装
│ ├─ バックエンド実装
│ ├─ フロントエンド実装
│ └─ APIの結合
├─ テスト
│ ├─ ユニットテスト
│ ├─ 結合テスト
│ └─ E2Eテスト
└─ レビュー・修正
├─ PR作成
├─ レビュー対応
└─ ドキュメント更新
2. 機能単位で分解する
ユーザーの操作や機能ごとに分解します。
「ユーザープロフィール編集機能」
├─ 名前の変更
├─ メールアドレスの変更(メール確認あり)
├─ パスワードの変更(現在のパスワード確認あり)
├─ アバター画像のアップロード
└─ プロフィール公開設定の変更
3. 分解の粒度の目安
| 粒度 | 目安の時間 | 適切さ |
|---|---|---|
| 粗すぎ | 1週間以上 | 見積もりが不正確。さらに分解が必要 |
| やや粗い | 1〜3日 | スプリント計画レベル。可能なら分解 |
| 適切 | 2〜8時間 | 1日以内で完了可能。見積もりも正確 |
| 細かすぎ | 30分未満 |