pluralsightのScaling Agileの講座を受けてみた

今回はpluralsightのScaling Agile - Coachingを受けてみましたので全体の概要と特に参考になった部分について解説しようと思います.

概要

こちらの講座はScaled Agile Frameworkと言う大規模な企業(数千人単位ぐらい)にアジャイルの考え方を導入する際のフレームワークについて解説された講座です.どのような順番でアジャイルを広めて行くかやアジャイルラクティスについて解説が行われていたり,アジャイルにあった予算の配分方法についても解説がありました. 僕が所属するチームは50人ぐらいの開発チームなので大規模にどう導入して行くかはすぐ試せるほどの参考にはならなかったのですが,個々のプラクティスの説明には参考になった部分がありました. 今回は僕が特に参考になったと思ったユーザーストーリーの分割方法その優先度づけの方法について説明します.

ユーザーストーリーの分割方法

アジャイル開発は短期間でリリースを頻繁に行います.そのためにはプラグラムが顧客にもたらす価値を表すユーザーストリーを細かく分割する必要がありますので,ここではその分割方法について紹介します.

CRUDで分ける

これは情報の操作する機能を作成,閲覧,更新,削除でストーリー分ける方法です.例えば「ジムのユーザーは自分のプロフィールの管理ができる」と言ったストーリーは以下のように分割することができます. - ジムのユーザーは自分のプロフィールを作成できる

  • ジムのユーザーは自分のプロフィールを閲覧できる

  • ジムのユーザーは自分のプロフィールを更新できる

  • ジムのユーザーは自分のプロフィールを削除できる

ステップで分ける

ステップで分けるとはある操作がいくつかのステップから成る時にストーリーをそのステップで分けると言った方法です.例えば「ジムのユーザーはプライベートレーニングスペースを予約できる」というストーリーは以下のように分割できます. - ジムのユーザーはプライベートレーニングスペースを選択できる

  • ジムのユーザーはプライベートレーニングスペースのある時間枠を選択できる

  • ジムのユーザーは選択したプライベートレーニングスペースを指定した時間枠で予約できる

ビジネスルールで分ける

ビジネスルールで分けるというのはある操作する時に複数のルールが存在するときそれぞれで別のストーリーに分けて考えるという方法です.例えば「ジムのユーザーはクレジットカードで支払いをすることができる」というストーリーは以下のように分割できます. - ジムのユーザーはクレジットカードで支払いをすることができる

  • ジムのユーザーは間違ったクレジット番号を入力すると警告される

  • ジムのユーザーはクレジットカードの限度額を超ている場合警告される

データのバリエーションで分ける

これはある情報を複数の形式や,複数の言語で見せたい時にそれぞれで分けると言った法う方です.例えべ「ジムのユーザーは母国語でアプリをみることができる」というストーリーは以下のように分割できます. - アプリを日本語で見ることができる

  • アプリを英語で見ることができる

入力方法で分ける

これはあることをするための入力方法が複数考えられる時それぞれでストーリーを分けると言った方法です.例えば「ジムのユーザーは検索結果からかリストからエクササイズを選択できる」というストーリーの場合以下のように分割することができます. - ジムのユーザーは検索結果からエクササイズを選択できる

  • ジムのユーザーはリストからエクササイズを選択できる

品質で分ける

これはある機能を作りたい時に,品質が低い状態ではあるがそれが達成できるストーリーと,品質は高いが困難で時間がかかりそうなストーリーを分けると言った方法である.例えば「ジムのユーザーはジムの進捗状況を確認することができる」というストーリーは以下の2つのストーリーとして分けることができます. - ジムのユーザーはジムの進捗状況を1日ごとに確認することができる

  • ジムのユーザーはジムの進捗状況をリアルタイムで確認することができる

こうすることで本当はリアルタイムで見たいかもしれないが,難しいく時間がかかるのでまずは1日ごとで確認できるような機能をリリースするという選択をとることができます.またユーザーに価値を届けてみるとこれで十分という反応が返ってきてリアルタイムな機能を実装せずに済むかもしれません.

ストーリーの優先づけの方法: WSJF

以前アートオブアジャイルデベロップメントではストーリーの優先度を決める方法として計画ゲームを紹介しました.XPの計画ゲームではプロダクトオーナーに優先度を決めてもらう方式でしたが今回ご紹介する方法やプロダクトオーナーが複数の場合やステークホルダーが複数の場合,またストーリーのサイズの大きさも考慮して決める時に有効な方法であるWeighted Shortest Job First (WSJF)ついてご紹介します. これはCost Of Delayというそのストーリの実装を遅らせることにより発生するコストをストーリーの大きさであるJob Sizeで割ってその値大きい順番に優先度が決まる方法です. WSJF = Cost Of Delay/Job Size このCost of Delayは以下の3つの要素の和となっています. Cost of Delay = User business value + Time criticaly + Risk reduction/ Opportunity enablement value - User business value - ユーザーに対してどれだけの価値を届けられるか

  • Time criticaly

    • 早くすることにどれだけ価値があるか
  • Risk reduction/ Opportunity enablement value

    • 将来のリスクをどれだけ減らせるか / 別プロジェクトへ繋がって価値を生み出せそうか

これらの値はそれぞれある基準のストーリーに対する相対ポイントによって決まります.これらはプロダクトオーナーやステークホルダーが参加し,ある基準のストリートのUser business valueやTime criticalyのポイントを決めて,それに対する相対ポイントを出し合い,話あって決めていきます.ストーリーポイントを決めるプランニングポーカーが参考になります. User business value以外の2つはわかりにくいので少し説明します.Time criticalyはキャンペーンサイトの実装などが当てはまります.クリスマス用のキャンペーンサイトはクリスマスをすぎると意味がなくなるのでTime criticalyポイントが高くなります.Risk reductionとはセキュリティ対応などが当たります. Job Sizeはストーリーポイントや,複数のストーリーをまとめて考える場合はその合計を表します. 以下にテンプレートを載せておきます.https://www.scaledagileframework.com/wsjf/

f:id:harada-777:20200831210803p:plain:w400

ここで言うFeatureはストーリやその集まりのことを指しています. Cost Of Delay/Job Sizeの高い順番を優先で実装することで常にその単位当たりの時間で最も価値の高い状態を維持できます.またCost Of Delayを複数の人でポイントを出し合って決めるのでより多くの人が決まった優先順位に納得することができます.

感想

今回は初めてpluralsightを受けて見たのですが,英語がわりかし早くて大変でした..笑 ただアートオブアジャイルデベロップメントにはないプラクティスが紹介されていたり,そもそもアジャイルではない組織にどう導入するかや大きな組織にどう対応するかが解説されており学びも多かったです.