Scrum@Scaleでスクラム開発をどのようにスケールするか
1つのスクラムチームをまわしたときには考慮しなくてもよかった事が複数になると以下の点で考慮する必要がでてきます。
- バックログは複数チームでどのように管理するか
- どのように複数チームに分けるのか。機能(商品、決済、クーポンなど)で分けるか。顧客ごとにわけるか。レイヤー(クライアント、サーバ、インフラ)で分けるか。
- スクラムのイベント(リファインメント、プラニング、レビュー、レトロスペクティブ)はどのメンバでどのように行うか。チームごとのセレモニー、すべてのチームで代表者によりセレモニーなど段階にわけるのか。
- 各種決まったとしてツールはどのようなツールを使うか。
スクラムをスケールする1つの方法としてScrum@Scaleがあります。この記事ではScrum@Scaleの紹介と、どのように実際に1つのスクラムをScrum@Scaleでスケールするかを考えてみます。
1つのスクラムがScrum@Scaleにより複数のスクラムチームに変化するときに知るべきこと
詳細はScrum@Scaleガイドや参考に記載した資料を見るとわかりやすいのでここでは1つのスクラムチームが複数のスクラムチームになるとき知る必要があることを説明します。
Scrum@Scaleでは以下のようにプロダクトの何を開発するか(What)の部分をPO(Product Owner)サイクル、開発するものをどのようにして開発するか(How)の部分をSM(Scrum Master)サイクルとして分離しています。
https://scruminc.jp/scrum-at-scale/guide/
これはGitLabのプロダクト開発プロセスでGitLabが行っていたWhatとHowを分離したプロダクト開発サイクルと似ています。各々の役割にそってやるべきことに集中するためにこのように分離されていると考えられます。プロダクト開発で人数が少ないうちは1人がいろいろなことをしてなんとかPMFに近づけている段階ですがPMF後に人数が増えた場合はWhatの部分を一貫性のあるやり方で決めてHowを別に実施するというのは一貫性のある優先順位にそってスケールしながら開発する上で理にかなっていると思います。これは必ずしもWhatを担当するメンバがHowに参加できないというわけではなく単純にプロセスが別だと考えるといいと思います。Howに参加したくなった場合はそれ相応の方法(提案できるなど)も用意すべきだと思います。
先程の図にEMSとEATとありました。エグゼクティブメタスクラム(EMS: Executive Meta Scrum)はスクラム全体によって何を生み出すかに焦点を当てる、つまりWhatの改善をする機構です。エグゼクティブアクションチーム(EAT: Executive Action Team)はどのようにスクラム全体で早く仕事を完了するかに焦点を当てる、つまりHowの改善をする機構です。
実際にどのように組織をスケールするかは以下の図で表せます。
https://scruminc.jp/scrum-at-scale/
1つのスクラムチームと、複数のスクラムチームの規模はScrum@Scaleの記事によると、以下だそうです。
スクラムガイドでは最適なチームの規模を10人以下と定義しているが、ハーバードの研究では、最適なチームの規模は平均で4.6人とされた。よって、スクラムオブスクラムのチームの最適なチーム数は4または5チームである。
スクラムオブスクラムで行われるイベント
ここではSoSoS(Scrum of Scrum of Scrum)の大きなチームを考えます。
スクラムオブスクラムが統合されたスクラムチームとして機能するためには、1つのスクラムチームのイベントと、スクラムオブスクラムとしてのイベントが必要です。さらにそのスクラムオブスクラムをまとめるスクラムオブスクラムオブスクラムのイベントが必要です。Scrum@Scaleガイドなどから必要なイベントをひもとき一例を示します。以下がイベント一覧です(なおSoS(Scrum of Scrum)で一回り小さいチームの場合は赤と青の部分を統合すれば同じように考えれます)。
何をすべきか決める
エグゼクティブメタスクラム
必要な場合に開催されます。スクラムのスプリント内に最低1度は定期開催するのがよさそうです。不定期にすると逆に集まるタイミングが難しくなります。
その中で以下を決定します。
- 戦略的ビジョン
- バックログの優先順位付け
- バックログの分割とリファインメント
- リリースプランニング
2スプリントの各チーム分のバックログの優先順位付け・分割・リファインメントができていると、その後の各チームのスクラムのスプリントがスムーズに回せそうです。その後に各チームでリファインメントするのでここでのリファインメントは優先順位付け・分割ができる程度でよさそうです。
メタデイリースクラム
エグゼクティブメタスクラムで分割されたバックログをさらに分割します。
リファインメント
各チームで直近のスプリントで実施するバックログを精査します。バックログをメンバが実行(Definition of Readyを満たしている状態)できる状態になるようにします。メンバが多すぎると時間xメンバの数だけ工数がとられるので必要なメンバのみのほうがいいと感じています。
どのようにするか決める
プラニング
各チームでそのスプリントに実施するバックログを決めスプリントバックログを作ります。
デイリースクラム/メタデイリースクラム/エグゼクティブメタデイリースクラム
通常のデイリースクラムと同じです。メタデイリースクラムの場合はデイリースクラムであがった課題を話し合い、エグゼクティブメタデイリースクラムの場合はメタデイリースクラムであがった課題を話し合います。このように階層にし、順に実施することで必要な情報をすぐ上位に伝える事ができます。
リリースと改善
スプリントレビュー
通常のスクラムと同じですが個人的には全体で各チームの成果を共有するのがいいのではと思っています。
ただ全体のみで開催するとチームからフィードバックが出しにくくなる場合は、チームで行ってから全体のスプリントレビューにするのもありかもしれません。
レトロスペクティブ/メタレトロスペクティブ/エグゼクティブメタレトロスペクティブ
振り返りを行います。メタ・エグゼクティブメタレトロスペクティブの場合は、成功した改善をその他のチームにも適用できるように共有します。
メトリクス
スクラムが増えると各スクラムが改善し続けているかを取るメトリックスが大事になってきます。最低限として以下が示されています。
- 生産性
- 価値提供
- 品質
- 持続可能性: チームの幸福度など
Four Keysを指標として取るとよいかもしれません。
エリート DevOps チームであることを Four Keys プロジェクトで確認する | Google Cloud Blog
まとめ
最初の疑問に筆者が答えるとすると以下のようになります。
- バックログの管理: 各スクラムチームごと。メタスクラム・エグゼクティブメタスクラム自体もバックログを持つ
- チームの分け方: スクラムチーム自体が完結して価値を届ける必要があるので機能または顧客ごと
- スクラムのイベント: Scrum@Scaleのフレームワークで行う
- ツール: いろんなツールでできそうだがJIRAでもできる
あとがき
どのようにチームにScrum@Scaleを導入したらいいかイメージがつきました。ただスクラム自体がやや複雑な上、さらに複雑になるのでメンバへの浸透を順次していく必要があります。その組織やビジネスにあった継続的な改善が必要です。
注意しなければいけない点として階層が増えるのでメンバから見ると上で何をやっているか見えなくなりそうです。実施した議事録などオープンにし各イベントは必要があれば誰でも参加できるようにするなどの工夫があると見え方もかわるのかなと思いました。
参考
Scrum@Scaleに関する資料
以下に説明があります。
Scrum@Scaleガイド - Scrum Inc. Japan #TeamworkMakesTheDreamWork
Scrum@Scale による企業規模のアジャイル | Atlassian
導入事例として以下があります。
LIXILのデジタル部門はなぜ、1年半で組織をアジャイルに変えられたのか
Scrum@Scaleの基本と実装 - Chatworkの実践に学ぶ「スケールするスクラム」の導入戦略 - エンジニアHub|Webエンジニアのキャリアを考える!