初めに
スクラムやろう!
という話が本格化してきたので、改めて、何をやりたいんだっけというのを考えたり、自分が疑問に感じていることを洗い出したりしてみました。
注意:具体的なスクラム
の手法についてはここでは言及しないので、気になる方は無料のスクラムガイド
や他の本を参照してみてください。
スクラムについてふりかえってみる
- アジャイルについて
アジャイル
とスクラム
を似たようなものとして捉えていたのですが、
-
アジャイル
= 「概念」 -
スクラム
= 「手法」
というのが説明として正しいようです。(抽象クラスと具象クラス的な…)
アジャイル
の説明は、もっと正確なものが世の中にたくさんあると思うのですが、私はIT開発のつらみである「あとから仕様がどうせ変わる」に対応したものだと考えています。
ウォーターフォール
は、フェーズが「仕様策定」 ->「設計」->「開発」->「UT」->「IT」->「ST」->「リリース」と分かれています。これが、当初の仕様や設計と1ミリも違わず最後まで行けたら問題なさそうですが、UT、IT、STまで来て、「やっぱり変えたい」「これじゃない」「設計が間違っている」となった場合、スケジュールは大幅に遅延することになります。そして、それは、後の工程になればなるほど痛みは大きく、戻る歩数も多い。
それは、正しい仕様/設計ができないのが悪い、となりそうですが、実は 「正しい」仕様をやる前から分かる人はほとんどいない のではないでしょうか。なので、外部の変化やユーザの声、そういうものを受けて変化していく仕様の方が実は「普通」であると捉えれば、それに対応すべき開発手法が生まれて然りで、アジャイル
はそれに対応したものだと思っています。
- スクラムを自分たちがする意味
スクラムを導入する意味について考えました。
-
PM さんやビジネスサイドからの声を受けやすくなる
-
スプリント
に一回、スプリントレビュー
という検査の工程が挟まれます。これにより、意図していなかった実装があとになって気づかれることを避けたり、声を反映しやすくなります。
-
-
ユーザからの声を受けやすくなる
- これまでは、例えば6ヶ月間プロジェクトが走っている間、他にやりたいことがうまれたとしても、それを止めることはできなかったと思います。しかし、
スクラム
ではスプリント
単位でプロダクトオーナーの意向が反映できるので、途中で優先事項の高い開発が生まれた際には、そちらを優先することができる様になります。 - また、新機能を小さくリリースして、ユーザの声を受けて改善していく、ということがしやすくなります。機能が求められているかはリリースしてみないとわからない部分があるので、よりユーザの声を即時に反映しやすくなります。
- これまでは、例えば6ヶ月間プロジェクトが走っている間、他にやりたいことがうまれたとしても、それを止めることはできなかったと思います。しかし、
-
作業の待ち時間が減るので、リリースまでの期間が短くなる
- 機能横断的なチームになることによって、人の手待ちではなく、「作業の手待ち」が減ることになると思われます。
- 印象的な「作業の手待ち」の話
エッセンシャルスクラム
という本を読んでいて印象的だったのは、スクラムは「作業の手待ち」が減らせるという話です。
「作業の手待ち」とは、そのまま作業の待機時間と考えてよく、通常はよく「作業者の手待ち」(作業者がタスクを持っていない状態)を減らそうとしますが、スクラムでは「作業の手待ち」を減らそうとします。作業の手待ちをへらすことのメリットはなにかというと、リリースへのリードタイムが減ります。
わかりやすい例としてリレーが上げられており、リレーのバトンが作業であり、リレーの走者が作業者と捉えた場合、リレーの走者はバトンが渡されるまで待機しているので作業者の手待ちは多いですが、バトンが最速で渡されれば「作業側の手待ち」はほぼないことになるので、最速でゴールに到達できます。このリレーで「作業者の手待ち」を減らそうとしたときには、走者は待機中にあちこちを走り回る…ということになると思いますが、それでは、最速でゴールに到達するという目的を達成できません。
スクラム
では、機能横断的なチームによって作業の手待ちをへらすことができます。
- それらは理想であり、そんなにうまくはいかないのでは?
過去にスクラム
の話をしたとき、スクラム
の目指すものが、今の仕組みとうまく噛み合っていかないのでは?と思ったことがあります。
我々は予め決められたプロジェクトを遂行していくことを求められているのに、そこに変化や自律性を持ち込む余地はあるのか?ということを、色んな人が不安や疑問に感じているように思います。また、開発チームとしても、機能横断的で自律的なチームを作ったとて、自分たちに裁量がなければ、特に活かすことはできない無力感を得てしまうだろうな、と思います。
これについて、いろいろ考えたのですが、今の所結局できるときにできることをやっていくしかないのかな、と思っています。めちゃくちゃ現実的なラインとしては、プロジェクトは年がら年中やっているわけではないので、隙間に自分たちのやりたいことをやるなど…
それが成果を上げられたらもう少し話が変わるかもしれない、という思いと、あとは、わたしはステークホルダーをすべて把握しているわけではないので、実際の我々を取り巻く環境をもう少し詳しく知ってから考えてみたいと思っています。
いずれにしろ、私はプロダクトに良くなってほしいと思っていて、それに対して最大限に効果を出せそうなスクラムという手法をやってみたいと思っています。
具体的にやろうと思ったら困りそうなところ
自分の運用上の疑問を書き連ねてみます。
- プロダクトバックログの整理はいつやるのか
バックロググルーミング
とか、バックログリファインメント
と呼ばれるイベント時に行います。
プロダクトバックログ
のアイテムの作成と改良、見積もり、優先順位付けを行います。
- 本当にざっくりでいいから今後のタスクについて見積もりがしたい
ポートフォリオバックログ
というエピック
を集めたバックログ
が、場合によっては作成され、
それらに対してはS, M, LのようなTシャツのようなサイズ感で予め見積もっておくとよいようです。
- エピックとは
epic
自体は「大作」という意味らしく、大きいサイズ感のユーザストーリーのことらしい。
- ジャストインタイムについて
ジャストインタイム
とはいうけど、先に仕様は全体的に決めて共有したいし、プロジェクトのリリース日の目安も知りたい
ジャストインタイム
という言葉の解釈で、全部スプリント開始直前にやるのかなと思っていたのですが、全部を直前にやるわけではなく、ただアイテムがスプリントバックログ
に入る直前まで仕様が変更可能である、ということのようです。
- 出荷可能なプロダクトってなにか、スプリント単位でリリースするってこと?
よくスプリントレビュー
で、「出荷可能なプロダクト」を検証すると書かれていて、ずっと毎スプリントリリース
することだと勘違いしていたのですが、あくまで「可能」なプロダクトであって出荷は別のフェーズでもよいようです。
- スプリントレビューまでに終わらなかったら、そのスプリントって中止?
いくつか本を読んだのですが…とりあえず、できたところまで見せるという形になりそうです。
-
「
スプリントゴール
は動かさないとは言ったが、その機能がスプリントゴール
に含まれるとはいっていない」- 商品一覧を作成する」というゴールだったときに、一覧表示機能と検索機能を期待していたが、検索機能のみスコープアウトするなど、一部をゴールの対象から除外する
-
できたところまでを
スプリントレビュー
に提出する- 上と似ていますが、うまくいかなくてもなお見てもらうことで、次の反省に活かす
- 割り込みのタスクがどうしても生まれるんですが、スプリントゴールって変えてはいけない?
割り込みのタスクは基本的にはスクラム
とはマッチしない考えのようです。
プロダクトバックログの優先順位が絶えず変わる場合、イテレーション
の見積もりがしづらくなるためです。本当に頻繁に入れ替わる場合、同じアジャイルでも、「カンバン方式」のほうが管理としてはよいようです。
スクラム
で割り込みのタスクが発生した場合、急ぎではない場合は次のスプリント
に変更するのがよさそうに思えます。どうしてもすぐやらなければいけないことも中にはあると思うので、その場合は割り込ませた上で、できたところまでをスプリントレビュー
で出すということになりそうかなと思いました。
- なぜ職能横断的なチームが推奨されるのか
誰かのタスクが終わらなかった場合、Aさんは終わったけどBさんは終わらなかったので、スプリントゴール
未達成とするのではなく、終わらなかった人に極力協力していくのがスクラム
では推奨されています。それが、自分の専門外であってもです。協力を考える時、スクラム
が推奨する少人数のチームが長く継続するのはかなり効率が良いように思います。
一方で、職能横断的なチームが推奨されている理由についてなぜなのか調べてみたのですが、スキル的、観点的な多様性がスクラム
内で問題を解決するスピードを速めるからのようです。スクラムチーム
にとってはそのスプリント
にスプリントゴール
を達成するのが目的ですが、たとえば外部チームにそれが依存していると達成できない可能性が高まるように思います。
終わりに
本を読んでいて、スクラム
ってなぜこうなんだろう、に対する答えが結構見つからないことがあって、自分なりにこうなのでは?と考えた結果も含め、書いてみました。
誤っている部分などあれば、指摘がもらえると嬉しいです。