スクフェス金沢2024での登壇資料です。
https://confengine.com/conferences/scrum-fest-kanazawa-2024/proposal/20007
このセッションでは、タスクを「分割」するのではなく、タスク達成のために必要となるステップを列挙することを提案します。
Agile において計画の重要性はよく知られていると思います。だからこそ、 Scrum においては Sprint Planning が Scrum のイベントの一つとして定義されているのでしょう。
その計画を行うにあたって、「大きい」タスクがまず持ち込まれると思います。たとえば、「フリマアプリにおいて、在庫を持つ商品を出品できるようにする」などです。当然、それをそのまま「よし、やるぞ」というわけにはいきません。具体的なアクションにまで落とし込まないと実行に移すことはできないわけです。
そこで、その「大きい」タスクは分割されます。これにより、分割されたそれぞれの「小さな」タスクごとに何をしたら完了で、どのようなアクションが期待されているかが明確になり、チームが自信を持ってそれぞれの「小さな」タスクに取り組むことができるようになります。
このとき、もとの「大きな」タスクをどのように分割しますか?そのタスクを達成するために「やらないといけないこと」を列挙していくのではないかと思います。実は分割する、と言ったときに文字通り分割することはないはずです。つまり、分割という響きから、すでにそのタスクの内容に「答え」が含まれていて文字通り「分割」するだけに感じますが、よくよく考えてみると「分割」ではなくゴール達成までの「ステップ」を組み立てているのではないでしょうか。
しかし、チームによっては「分割」を文字通り解釈してしまいます。そうした解釈によってなされる「分割」をすると、「大きい」タスクは 「実装」「レビュー」「テスト」みたいになります。ソフトウェア開発の工程はたしかに大まかに「実装」「レビュー」「テスト」などに分けられるでしょう。だからこそ、その工程をもとの「大きな」タスクに当てはめて「分割」したわけです。しかし、そのような「分割」だとそれぞれの分けられた「小さな」タスクの完了が曖昧です(テストがないのに完了なわけはないですよね)。いわば、「大きな」タスクにウォーターフォールの世界観が持ち込まれたような感じがするのです。
このように「分割」という言葉にはタスクを文字通り切り刻んでしまう落とし穴があると思うのです。
そこで、私はタスクを分割するのではなく、タスクがあったら、それを達成するためにステップを重ねて積み上げていくイメージで計画を立てることを提案します。タスク達成のために必要なことを列挙してそれらを並び替える、それらを完成させると「大きな」タスクが完了します。「カレーをつくる」方法を考えてみると、「具材を切る」「具材を炒める」「煮る」「ルウを入れて煮込む」というステップに分けられますね(ハウス食品さんのレシピを参考にしました)。このときそれぞれのステップには完了の定義があるはずです。炒めるステップでは「玉ねぎがしんなり」することを目指していますね。それらのステップがすべて終わるとカレーができあがります。これと同じでタスクについてはそれを達成するためのステップを考えていくことで、計画がしやすくのるのではないかと思います。