Nick Woods
Weighted Shortest Job First (WSJF) はバックログに蓄積されたワークアイテムから最初にデリバリすべきワークアイテムを見つけるために、コストメリットやジョブサイズを使って評価し優先順位を定義するための方法です。 「コストメリット」はこの場合、何もしなかった場合に発生するコストと似たような意味を持ちます。もし仮に不具合の修正をしなかった場合に重大なトラブルが見込まれる場合、修正のためのコストとトラブルが発生した場合のコストが時と共に増加します。売上が見込まれる新しい機能の実装を後回しにした場合、この機能をデリバリしないことのコストは時と共に増加します。これは機会費用あるいは「遅延コスト」と呼びます。
遅延コスト (Cost of Delay, CoD) は次のように計算します:
遅延コスト = (ビジネス価値, BV + 緊急性, TC + リスク低減 または 機会創出, RR/OE)
遅延コストを算出したら、遅延コストをジョブサイズで割ることでWSJFスコアを算出します。結果として最もコストメリットが高く、かつ小さなジョブが優先順位が高くなるようにスコアが算出されます。
WSJF = 遅延コスト ÷ ジョブサイズ
このプラクティスは Don Reinertson が著書 Principles of Product Development Flow の中で確立したもので、それまで使われていた Shortest Job First を進化させたものです。Scaled Agile Framework (SAFe) で取り上げられ、原則の中に盛り込まれました。
この方法は未完成の大きな作業項目を細部まで掘り下げ、客観的な優先順位を確立し」、ステークホルダーやその他の関係者に共有することができる優れた方法です。 チーム全体でこのプラクティスを実施する場合、より多くの観点を用いてプライオリティや順序性を確立することができます。結果として
In running this exercise with the whole team, a more rounded view of the priority and sequencing is established; 特定の項目と他の項目との間で作業の緊急性をチームが把握できるようになります。
遅延コストの各要素のスコアを1個ずつつけます。スコアにはフィボナッチ数列を使うことが推奨されています。フィボナッチ数列を使うことで大きな数値はそれだけ不確実な要素を含んでいることが分かります。スコアをつける際には一番小さなアイテムにまずはスコアをつけ、相対見積を用いることで他のアイテムのスコアをつけます。
最初はビジネス価値 (BV) です。リストに並んでいるワークアイテムのうちビジネス価値が最小と思われるものに1のスコアをつけます。次に小さなビジネス価値と思われるワークアイテムを見つけ、1と同等程度か、あるいはそれよりも大きいのか、相対的にスコアをつけます。全てのワークアイテムのスコアをつけたら緊急性のスコア、リスト低減あるいは機会創出のスコアと続けます。全ての項目にスコアをつけたら、結果を合計して遅延コストを算出します。
注意: 各アイテムのスコアを正確に定義しようと時間を使いすぎないように気をつけます。フィボナッチ数列を用いるのは詳細の議論に集中しすぎることを避けるためです。
次はジョブサイズに移ります。対象のワークアイテムを実際に開発するチームが、同じようにリストの中で一番小さなジョブサイズのものを見つけて1をつけます。1のアイテムと他のアイテムを比較することでリストの中の全てのアイテムのスコアを定義します。
遅延コストとジョブサイズが定義できたら、WSJFスコアを算出します。スコアが高いものがプライオリティが高いものと考えます。
注意: ジョブサイズが結果として算出された優先順位に対して大きな影響を持つことに気がつくと思います。スコアリングの際にバックログを見直すことをお勧めします。あるアイテムを小さく分割した時に、分割結果の要素のうち特定の要素に分割前の価値のほとんどが集約されていることがあります。