ScaledAgile, Inc. logo

If you only quantify one thing, quantify the Cost of Delay.

—Don Reinertsen, The Principles of Product Development Flow [1]

Weighted Shortest Job First (WSJF)

Weighted Shortest Job First (WSJF) は、最大の経済的ベネフィットを求めて仕事の優先順位を付けるために使用される優先順位付けモデルです。 SAFeにおいて、WSJFは相対的な遅延コストを相対的なジョブの期間で割ったものとして見積られます。

フローベースのシステムでは、最大の経済的成果を提供するために優先順位を継続的に更新する必要があります。 つまり、仕事の順位づけは、各仕事の理論的な費用対効果に基づく優先順位付けよりも良い結果をもたらします。

そのために、SAFeはWSJFを適用してバックログに優先順位をつけます。 バックログには、相対的なユーザーとビジネスバリュー、緊急性、リスク低減 / 機会の創出、ジョブサイズを使用するWSJFアルゴリズムに基づいて継続的に優先順位が付けられます。 WSJFは、リーンエコノミクスの基本的な原則である「サンクコストの無視」を都合よく自動的に行います。

詳細

『The Principles of Product Development Flow』[1] の中で、ライナーセンは遅延コスト (CoD) に基づいて仕事を優先順位付けするモデル (WSJF) を説明しています。 簡単に言えば、CoDは仕事が遅延するまたは特定の時間に仕事を行わないことによって失われるお金です。 それは時間の経過に伴う仕事の経済的バリューを測る尺度です。 例えば、ある将来のフィーチャーの実装が月に100,000の価値があるとし、遅延が3ヶ月あった場合、CoDの合計は300,000になります。 SAFeのコンテキストでは、仕事はそれぞれのバックログに含まれるフィーチャーケイパビリティ、およびエピックです。

最も短い期間で最も高いバリューを提供することができる仕事は、最高の経済的リターンをもたらします。 SAFeに適用されると、WSJFモデルはリーンプロダクト開発フローの経済的原則をサポートします。

  • 経済的な視点を持つ
  • サンクコストを無視する
  • 継続的に経済的な選択を行う
  • 意思決定ルールを使用して意思決定を分散し、制御する
  • 1つのことだけを数値化する場合、遅延コストを数値化する

図1は、実行すべき仕事の優先順位を決定するためにライナーセンのWSJFを適用した影響を示しています。 塗りつぶされた領域は、各ケースにおけるCoDの合計を示しています。 WSJFが最も高い仕事は、最高の経済的成果を提供します。 図が示すように、「次に最適な仕事を選ぶ」ことは、大きな経済的影響を与える可能性があります。

図1   WSJFを適用して優先順位を付けることは、全体的に最良の経済性を提供する
図1 WSJFを適用して優先順位を付けることは、全体的に最良の経済性を提供する

遅延コストの見積り

上記のように、WSJFの計算は、CoD(分子)を時間単位ごとの絶対的な金銭的価値で決定できることを前提としており、仕事の時間をある程度の精度で見積ることができると仮定しています。 しかし、実際には、両方の数値を見積ることは非常に難しい場合があります。 分子に関して言えば、CoDはせいぜい見積りに過ぎません。市場にまだ提供されていない新しい仕事(新しいフィーチャー)の実績値を知るのは誰にとっても難しいものです。 しかし、アジャイルは私たちに「相対的」な基準で迅速に見積る方法を教えてくれます。 バックログには多くの「やるべき仕事」があるため、単に相対的な数字を使って仕事を比較します。

最初のタスクは、適切なステークホルダーを集めて、バックログ内の他の仕事に対する遅延コストを共同で見積ることです。 図2は、特定の仕事におけるCoDの3つの主要なコンポーネントを示しています。

図2   遅延コストのコンポーネント
図2 遅延コストのコンポーネント

図3はCoDの公式を示しています。 まず、ストーリーの記事で説明されている改変フィボナッチ数列から導き出されたバリューを使用して、バックログ項目を相互に比較します。 次に、(相対的な)CoDは次のように計算されます。

図3   相対的な遅延コストの計算
図3 相対的な遅延コストの計算

仕事の期間を見積る

方程式の次の項目、WSJFの分母は、仕事の期間です。 この期間を決定することも困難であり、特に初期段階では、利用可能なキャパシティや各仕事に必要な時間が不明な場合があります。 つまり、仕事を始める前に、誰がそれに取り組むのか、何人が関与するのか、そしてどれくらいの時間がかかるのかを知るのは簡単ではありません。 しかし、大きな仕事は小さな仕事よりも完了するのに時間がかかるため、「ジョブサイズ」を「期間」の代わりに使用できます。 (たとえば、一人で芝生を刈っていて、前庭が裏庭の三倍の大きさであれば、刈るのに三倍の時間がかかるでしょう。)

ジョブサイズを期間の代わりとして使用することで、WSJFを通じて仕事を比較するための計算が簡単になります。図4がその例です。

図4   相対的なWSJFのための公式
図4 相対的なWSJFのための公式

ジョブサイズを期間の代わりとして使用することに関する注意点

重要なのは、ジョブサイズが仕事の期間を正確に表すものではないということです。 2つのシナリオを考えてみましょう。

  • 専門的なスキルが容易に利用可能であると仮定すると、高いバリューを持つ大きな仕事が予想よりも早く提供されます。 その状況では、より短期間でより多くのバリューを提供するかもしれません。 (もし3人が広い前庭の芝を刈る間に1人が小さな裏庭を刈ることができれば、これらの仕事はおおよそ同じ時間がかかりますが、バリューは同じではありません。)
  • 小さな仕事にリソースが不足している場合や、依存関係がある場合、小さな仕事が大きな仕事よりも時間がかかることがあります。

これらのどちらかに当てはまる場合は、単に相対的な見積り期間を使用し、適宜調整してください。 しかし、これらの二つの例外について心配する必要はほとんどありません。 ほとんどの状況では、迅速なWSJF相対見積りで十分です。 これはフローベースのシステムなので、選択に関わる小さなエラーはそれほど重要ではありません。次に重要な仕事はすぐにバックログの一番上に上がってくるからです。

WSJFを計算する

実際の計算と優先順位付けは、ここに至るまでの説明よりもずっと簡単です。 シンプルな表またはスプレッドシート(図5)を使用して、各CoDコンポーネントおよびジョブサイズについて、仕事(この例では3つのフィーチャー)を比較します。 ストーリーの見積りと同様に、大きなバリューはより高い不確実性を反映します。次の指示に従います。

  1. まず、最初の3列のCoDパラメーターの数字を一度に1列ずつ見積り、最小の項目を「1」に設定します。 次に、その仕事に対する他の仕事の見積りを決定します。 注意: 各列に最小の項目を表す「1」があることが重要です。これにより、パラメーターが他と比較され、正規化されます。
  2. 各コンポーネントを合計して、列5のCoDを計算します。
  3. 列6のジョブサイズを見積ります。最小のジョブに1を付けます。
  4. CoDをジョブサイズで割り、WSJFを算出します。

最も高いWSJFが次に最も重要な仕事です。

図5   WSJFを計算するための表
図5 WSJFを計算するための表

: この改変フィボナッチ数列のサブセットは、WSJFが比較的同じサイズのフィーチャーを比較することを保証します。 これは単一のARTのコンテキストに適しています。 大きなイニシアティブは、小さなフィーチャーに分割してから、この方法で優先順位をつける必要があります。 たとえ高い値 (20) でも、WSJF で効果的に使用するには大きすぎるかもしれず、仕事をさらに細分化する必要があることを反映します。

このモデルでは、大きな仕事を小さな仕事に分割することが奨励されます。 さもなければ、重要で大きな仕事が完了しないかもしれません。 でも、それがアジャイルの実践です。 実装がインクリメンタルであるため、大きな仕事を続けることが他の仕事と比べて順位が低い場合は、別の仕事が選ばれます。 SAFeのWSJFモデルのもう一つの利点は、CoDコンポーネントの具体的な金銭的要素が不要であり、複雑さと優先順位付けに費やす時間を大幅に削減できることです。 その代わりに、各仕事は「同じバックログ」の他の項目と相対的に比較されます。 更新されたバックログの見積りには残りのジョブサイズのみが含まれるため、頻繁な優先順位の再設定によりシステムは自動的にサンクコストを無視します。 常に最新の経済要因に基づいて次に最適な仕事が選ばれます。

WSJFの適用性

WSJFは、頻繁な優先順位の再設定が経済的バリューを生み出すフローベースのシステムで特に有用な一般的なアルゴリズムです。 しかし、それは意思決定を行うものではなく、最終的に意思決定を行わなければならないステークホルダーが使用するための単なる推論ツールです。

この記事で紹介されているように、WSJFは特にARTおよびソリューショントレインバックログのフィーチャーやケイパビリティを優先順位付けするのに役立ちます。 これは以下の理由によるものです。

  • フィーチャーはトレインの主要な経済的ドライバーであり、優先順位付けへの投資が正当化されます。
  • 一度に進行できるフィーチャーはあまり多くありません。ARTバックログには通常、取り掛かるべき約100のフィーチャーが含まれています。 一般的に、時間の経過とともにWSJF見積りの展開を維持することは比較的簡単です。
  • フィーチャーはARTのパフォーマンスにとって重要であるため、プロダクトマネジメント、アーキテクト、ビジネスオーナー、影響を受けるチーム、その他のステークホルダーからのインプットが非常に重要です。 ARTのフィーチャーに優先順位をつけるために協力を求める努力は価値があります。

しかし、以下を含むいくつかの場面での使用にはあまり適していません。

  • チームバックログの優先順位付け – ストーリーは小さく、進行中のものがたくさんあります。 ここでは、優先順位はストーリーを生み出したARTバックログのフィーチャーの優先順位とローカルの懸念事項によって決定されます。 マルチパラメーター分析とディスカッションに時間を費やす価値はありません。 そして、ストーリーは小さく、1イテレーションで実装されるため、分母(期間)は優先順位の決定要因としてそれほど重要ではありません。
  • ポートフォリオエピックの優先順位付けにおける唯一の決定要因として – WSJFが役立つもう一つの領域は、後のポートフォリオバックログ優先順位付けステップですが、WSJFだけでは十分ではありません。 初期のカンバンステップでは、WSJFは非常に有用であり、ポートフォリオバックログの記事でそのように言及されています。 しかし、これらはかなりの投資であるため、「2」と「5」の単純な比較でも、数百万ユーロまたは数千万ユーロの影響があるかもしれません。 この場合、リーンビジネスケースで求められる見積りにもっと時間を投資すべきです。これには、バリューや潜在的な金銭的リターン、そして予想される期間に関するより詳細な推測が含まれます。 エピックにWSJFを使用する方法の詳細については、エピックの記事をご覧ください。

詳しく学ぶ

[1] Reinertsen, Donald G. The Principles of Product Development Flow: Second Generation Lean Product Development. Celeritas Publishing, 2009.

Knaster, Richard, and Dean Leffingwell. SAFe 5.0 Distilled: Achieving Business Agility with the Scaled Agile Framework. Addison-Wesley Professional, 2020

Leffingwell, Dean. Agile Software Requirements: Lean Requirements Practices for Teams, Programs, and the Enterprise. Addison-Wesley Professional, 2010.

最終更新: 2023年10月9日