このブログを動かすのはいつぶりでしょうか、くまちゃんです。
これは 道草 Advent Calendar 2024 - Adventar の8日目の記事です。
はじめに
ソフトウェア開発チームのスクラムマスターの役割を10月から担うようになったので、どんなことを意識しているのか、どんなことをやっているのか、を書いてみようと思います。
著者はソフトウェアエンジニアを仕事にしているのですが、社内で少し特殊なポジションにいる関係で、1年ごとに部署を変わりながら、様々なプロダクトの開発に関わっています。現在3年目で、この10月から3部署目で仕事をしています。1年目、2年目の経験を活かして、スクラムマスターとして貢献して欲しい、という前提でのチームジョインとなりました。
そうした状況で、ステークホルダーから見た価値 を最も意識し、価値提供のために日々動きを工夫できるチームにするための仕組みづくりをしています。
スクラム開発とスクラムマスター
前提としてスクラム開発、スクラムマスターについて振り返っておこうと思います。スクラム開発のバイブルであるスクラムガイドを参照しましょう。
スクラムの定義
スクラムとは、複雑な問題に対応する適応型のソリューションを通じて、⼈々、チーム、組織が価値を⽣み出すための軽量級フレームワークである。 簡単に⾔えば、スクラムとは次の環境を促進するためにスクラムマスターを必要とするものである。
スクラムマスター
スクラムマスターは、スクラムガイドで定義されたスクラムを確⽴させることの結果に責任を持つ。スクラムマスターは、スクラムチームと組織において、スクラムの理論とプラクティスを全員に理解してもらえるよう⽀援することで、その責任を果たす。
スクラムマスターは、スクラムチームの有効性に責任を持つ。スクラムマスターは、スクラムチームがスクラムフレームワーク内でプラクティスを改善できるようにすることで、その責任を果たす。 スクラムマスターは、スクラムチームと、より⼤きな組織に奉仕する真のリーダーである。
スクラムマスターは、さまざまな形でスクラムチームを⽀援する。 (中略) スクラムマスターは、さまざまな形でプロダクトオーナーを⽀援する。 (中略) スクラムマスターは、さまざまな形で組織を⽀援する。 (後略)
色々と書いてありますが、要するに以下と思って良いでしょう。
2つのコンポーネントの開発を担うチーム
著者の所属するチームは2つのコンポーネントの開発を担う10人弱のチームです。いわゆる刷新案件というべきもので、従来システムと同等の機能を持ったシステムに一部変更を入れながら、よりモダンなプロダクトに作り変えようというPJに関与しています。
1人は上長であり、目標・評価や他チームとの調整に責任を持っています。著者を含むそれ以外メンバーが半数ずつに分かれて2つのコンポーネントをそれぞれ開発している状態です。各コンポーネントの開発者のうちの1人(計2人)はコンポーネントリードと呼ばれ、企画チームとのやりとり、仕様の策定、コードレビューによる品質担保、開発スケジュール決定に責任を持ちます。
著者自身はというと、メインは片方のコンポーネントの開発者でありながら、チーム全体のスクラムマスターでもあるという立ち位置になっています。チームはスクラム開発をやってみたいとは思っているものの、どうすれば良いかがわからず、「なんちゃってスクラム」をやろうとしていたという状態でした。スクラムマスターのいないスクラム開発になりかけていたところに、著者がジョインしてサポートをしているという感じです。
著者は、プランニングにおけるコンポーネントリードのサポート、デイリースクラム・レトロスペクティブ・リファインメントの進行支援など、スクラム開発をチームに理解してもらい、イベントを成立させるためのサポート全般をおこなっています。チームの関与するものが刷新案件であって、仕様が最初から一定明確である都合上、スプリントレビューと名前のついた会議は設定していませんが、案件関係者が集まる定例の場は存在しているので、必要があれば、定例にチームの成果を持っていくように助言する役割も持ちます。同時に開発者でもあるので、もちろん実装やテストといった作業も行いますし、コンポーネントリードが叩きとして定めた仕様に対して議論も行います。どちらか一方のコンポーネントリードがお休みの時は、コンポーネントリード兼スクラムマスターとなることもあります。(まだ2人のコンポーネントリードが同時でお休みだったことがないのが救いです)
とにかく、スクラムチームを成立させるために必要なあらゆることを、状況に応じてロール変更もしながらしながら遂行していく、これが著者のスクラムマスターとしてのスタイルです。
スプリントゴールドリブンなチーム運営
「なんちゃってスクラム」をやろうとしていたチームに対して著者が一番最初に伝えたこと、それは ステークホルダーから見た価値 を意識しましょうということでした。
開発チームの関心は、しばしば、日々の作業とその進捗に向いてしまいがちです。〇〇の実装が完了するだとか、〇〇のリファクタリングであるとか、そんな具合です。そうではなくて、その作業をやった結果届けられる、ステークホルダーにとっての価値は何か?に向き合わなければいけないと考えています。これは言葉で書くと簡単ですが、実際には難しいことです。チームが日々向き合っているのは「作業」であるのに対して、それら俯瞰で見ることを意識づけようとする活動だからです。
そこで、著者がまず力を入れたのがスプリントゴールの設定です。再びスクラムガイドを参照しましょう。
スプリントゴールとは、そのスプリントになぜ価値があるかをステークホルダーに伝えるものである必要があります。
「〇〇の実装が完了する」だとか、「〇〇のリファクタリング」であるとかは、スプリントゴールとしては適していないという事になるでしょう。〇〇の実装が完了した結果、ステークホルダーに〇〇の機能のデモができるようになるなら、「ステークホルダーに〇〇の機能のデモができるようになる」をゴールにするべきでしょう。〇〇の機能を作るための前作業として、「〇〇のリファクタリング」を必要とするなら、「〇〇の機能のデモをダミーデータ・ダミーロジックで見せられるようにする」をゴールとする方が、内容としては限定的でも、ずっと意味があります。そういった意識でスプリントゴールを設定するように助言しますし、著者自身もスプリントゴールの内容を検査します。
スプリントの終わりに行うスプリントゴールの達成状況の振り返りでも、メッセージングとしては似たものにしています。達成状況の判定で著者がチームに問うていることは1つです。
今からスプリントレビューをやったら、その成果をステークホルダーに見せられますか?
見せられる状態にあるなら達成ですし、そうでなければ未達にしています。逆に、コードレビューの細部の指摘対応が残っているだとか、単体テストが一部実装できていないとかいうことは、達成判定には入れていません。そんなことはチーム内部の都合であって、ステークホルダーの興味ではないからです。しかしながら、そうした残作業は確実に開発者の工数を必要としますから、勘案しないのではなく、次スプリントのゴール設定において加味するように助言をしています。
やや強めの意志を含めたメッセージングではありますが、著者はそれだけ ステークホルダーから見た価値提供 を重視していますし、そのことを強くチームに伝えるスクラムマスターを演じています。
ゴール達成のために日々動きを工夫できるチームへ
スプリントゴールの設定と達成判定に思想を込めたら、最後に手を入れるのは日々の動き、デイリースクラムです。
著者のチームでは、デイリースクラムで、各スプリントゴールに対する状況とまずい場合のチームとしての今日の動きの工夫を1行で書く、という取り組みをしています。これによって、メンバー全員が、毎日、全てのスプリントゴールを意識し、必要であれば動きを変える、ということを実現できています。ここは状況がまずいからペアプロをしよう、アサインを変えようとか、逆に今スプリントは余裕があるからこういうこともやろうとか、こっちのゴールを落としてでもより重要なこっちのゴールを重視する動きに変えようとか、そういった判断を日々行えています。
もちろん、ゴールを達成することが絶対的に褒められるべきことで、未達は絶対的に責められるべきことというのでは決してありません。達成未達に一喜一憂しないでくださいというのは振り返りでも伝えています。お休みの予定がなかった人が休めば未達になりますし、着手してみて初めて、思っていたより高難易度だったということはしばしば起こるからです。そうであっても、ステークホルダーから見た価値提供 のために何ができるか、この問いを日々考え続けられるスクラムチームに育てることは極めて重要だと思っているので、こうしたやり方を採用しています。
おわりに
ソフトウェア開発チームのスクラムマスターの役割を担うようになったので、意識していることと具体的なチームでの取り組みを書きました。
著者のスクラムマスターとしてのスタイルは、スクラムチームを成立させるために必要なあらゆることを、状況に応じてロール変更もしながらしながら遂行していくものです。スクラムガイドで定義される意味でのスクラムマスター、コンポーネントの仕様策定や調整、開発者としての実装・テスト、これらのことを、チームの状況を考慮しながらウエイトを随時変化させて実施しています。
スクラムマスターとしてのチームへの最初にして最大のメッセージングは、 ステークホルダーから見た価値 を意識しましょうということでした。開発チームが行なっているのは具体的な作業なので、その関心もしばしば、日々の作業とその進捗に向いてしまいがちです。そうではなくて、その作業をやった結果届けられる、ステークホルダーにとっての価値は何か?に意識を向けることが重要だと考えています。
この前提のもとで、著者がこだわったのがスプリントゴールでした。スプリントゴールの設定とその達成判定において、ステークホルダーの存在を意識させ、チーム内部の都合と切り離すことを徹底しています。また、ゴール達成のために日々動きを工夫できるチームとするために、各スプリントゴールに対する状況とチームとしての今日の動きの工夫を1行で書く、という取り組みをしています。これによって、これによって、メンバー全員が、毎日、全てのスプリントゴールを意識し、必要であれば動きを変える、ということを実現できています。
ステークホルダーから見た価値 をより強く意識し、結果にこだわれるチームにするために、これからも著者は活動します。