はじめに
これまでスクラムでの開発業務を2年以上の間で3チームほど経験してきていますが、
経験上スプリントゴールというものを設定したことがありませんでした。
そんな中、社外のアジャイル・スクラム研修を受講する機会があり、その中でスプリントゴールの設定について話を聞きました。そこで今までスプリントゴールについて勘違いをしていたことと、スプリントゴールを設定する重要性を認識できたので、そのことについてここでまとめたいと思います。
今まで勘違いしていたスプリントゴール
これまで私は「スプリントゴール = 今スプリントで予定した全PBIを完了・受入してもらうこと」と認識していました。
つまり、これまでは予定したPBIを問題なく完了させるために、予定したタスクをすべて完了させることに全力を注いでいました。
なぜ、「スプリントゴール = 今スプリントで予定した全PBIを完了・受入してもらうこと」ではいけないのか?
それは、アジャイルソフトウェア宣言の背後にある原則の冒頭に答えは書かれています。
顧客満足を最優先し、
価値のあるソフトウェアを早く継続的に提供します。
要するにアジャイルにシステムを開発するということの目的は、ユーザーにとって価値のあるソフトウェアを(早く継続的に)提供することであり、開発メンバーが計画したタスクを全て完了させることや、スプリントで予定したPBIをプロダクトオーナーに受け入れてもらうことは、その目的を達成するためのプロセスの1つでしかありません。
正しいスプリントゴールとは何か
先ほども記載しましたが、アジャイルにシステムを開発するということの目的は、ユーザーにとって価値のあるソフトウェアを(早く継続的に)提供することです。
したがって、スプリントの成果として(リリースするか否かは関係なく)何かしらの価値をユーザーに提供している(もしくは、提供できる状態である)ことが求められます。
要するに**「このスプリントが終了したときにユーザーに対してどのような価値を提供できるか?」をスプリントゴールに設定すべき**なのです。
正しいスプリントゴールを設定することによる効果
正しいスプリントゴールを設定することで次のような効果が得られると考えられます。
開発メンバーが目指すべきはタスクの完了や予定していたPBIを全て受け入れてもらうことではなく、ユーザーに価値を提供することであることを明示することができる
こちらについてはこれまで記載してきた通りですが、スプリントゴールを明示することでアジャイルの元々の目的である「ユーザーに価値を提供する」ことを意識させることができます。
開発メンバーがタスクを完了した先にあるものを明示することで、開発に対するモチベーションを上げることできる
今担当しているタスクが最終的にユーザーへ対して与えることができる価値を知れることによって、開発のモチベーションに繋げることができます。
自分の作ったものでユーザーを喜ばせる姿を想像することが、どれだけモチベーションに繋がるかはもはや説明不要だと思います。
デイリースクラムで着目すべきポイントが明確になる
デイリースクラムをする上でよくあるあるなパターンとして聞かれるのが、デイリースクラムがただの進捗共有になってしまうということです。
スクラムガイドの中ではデイリースクラムについて以下のように書かれています。
開発チームはデイリースクラムを使って、スプリントゴールとスプリントバックログの進捗を検査する。
デイリースクラムは、開発チームがスプリントゴールを達成する可能性を最適化する。開発チームは、自己組織化チームとしてスプリントゴールを達成し、スプリント終了までに期待されるインクリメントを作成できるかを毎日把握しなければいけない。
つまり、開発チームはデイリースクラムの場では、このままスプリントを進めるとスプリントゴールを達成することができるのか、また、スプリントゴールを達成するために障害となっていることや困難になっていることが無いかを毎日検査する必要があります。
このようにスプリントゴールを設定し、デイリースクラムを運営することにより、ただの進捗共有で終わってしまうデイリースクラムは避けることができます。
スクラムチーム全体で目標を意思統一できる
一般的にプロダクトオーナーはビジネス側の立場として、開発チームへお願いをするのに対し、開発チームはどうしても作ることに注力してしまい、ビジネス面での興味が薄れてしまいます。
もう何度も記載していますが、これではアジャイルの目的から逸れてしまい、アジャイルに開発する意味が無くなってしまいます。
そのためにもスプリントゴールという目標をスクラムチーム全体で共有する必要があります。
開発チームがスプリントゴール達成のためにより良い方法やアイデアは無いか考えるようになる
今スプリントで予定した全PBIを完了・受入してもらうことのように誤ったスプリントゴールを設定してしまうと、ただ設定されたPBIの受入条件を満たすことに全力を注いでしまい、より良いものを作ろうというマインドが働きづらくなってしまいます。
逆に正しいスプリントゴールを設定すると、そのゴール達成に向けた良い方法や新しいアイデアが開発チームからも出るようになります。
スプリントゴールの設定の仕方
どのようなスプリントゴールを設定するかについては、先ほど記載した通り**「このスプリントが終了したときにユーザーに対してどのような価値を提供できるか?」**をテンプレートに毎スプリントでゴールを設定すればよいです。
要するに決めることは、
- どのユーザーに価値を与えたいか
- そのユーザーにどのような価値を与えたいか
の2つです。これだけ簡単なテンプレートで多くの効果が得られるのがスプリントゴールの役目です。
最後に
チームによっては、ユーザーを直接的に幸せにするようなモノを作ることがないスプリントを経験することがあるかと思います。
しかし、その先には必ずユーザーにとっての価値があるはずです。
例えば、今自分のチームではシステムの脆弱性対策をしていますが、確かに脆弱性を対策することでユーザーが何か幸せを感じたり、使いやすさを直接的に感じる訳ではありません。しかし、その脆弱性対策にもその先には「ユーザーがより安全にこのシステムを使うことができる」という素晴らしい価値があります。
我々が作り出そうとしているのは必ずしもユーザーが直接感じる価値ではありませんが、必ずユーザーにとって価値になっているものを作り出そうとしています。
そんなことをスプリントゴールとして設定するだけで、開発していく上でのモチベーションが上がると思いませんか?
是非スクラムで開発をしているのに正しいスプリントゴールを設定できていなかったという方、チームのみなさんもこれからスプリントゴールを設定してみてはいかがでしょうか。