Overview#

大多數組織需要同時開發多個產品。這些多產品組織需要一種方式來做出關於如何管理其產品組合(portfolio) 的經濟合理決策。組合管理或治理流程也需要與核心敏捷實踐良好對齊,否則將與個別產品層級使用的敏捷方法產生根本的脫節。

本章列出了 11 個組合規劃策略,按排程(scheduling)產品流入(inflow)產品流出(outflow) 分組,最後討論如何決定是否應繼續投資正在進行中的產品。

組合規劃(portfolio planning) 是一種活動,用於決定要處理哪些組合待辦項目(portfolio backlog items)、以什麼順序、以及持續多長時間。組合待辦項目可以是產品、產品增量(一個發布)或專案。

大多數組織(無論是否敏捷)在組合層級的規劃都做得很差。許多組織的組合層級規劃流程與核心敏捷原則根本相悖。當這種情況發生時,組合層級的決策會破壞工作的快速、靈活流動。

時機#

組合規劃是一項永不停止的活動。只要有產品需要開發或維護,就有組合需要管理。組合規劃不僅針對新構思的產品,也在定期排程的間隔中對已在進行的產品進行審查。

參與者#

  • 內部利害關係人——必須擁有足夠廣泛的商業視角,以正確排列組合待辦清單的優先順序並對進行中的產品做出決策。在某些組織中,利害關係人共同組成審批委員會、治理委員會或類似的監督實體。
  • 產品負責人——作為各自產品的擁護者和必要資源的倡議者參與組合規劃
  • 資深架構師或技術主管——經常需要其輸入,以確保重要的技術約束被納入組合規劃決策

流程#

Figure 16.1: Portfolio-planning activity

輸入包括:

  • 新產品資料——來自構思(envisioning)的新構想產品,帶有成本、時程、價值、風險等資料
  • 進行中產品資料——帶有中間客戶回饋、更新的成本/時程/範圍估計、技術債水平和市場相關資料

輸出包括:

  • 組合待辦清單(portfolio backlog)——已批准但尚未開始開發的未來產品的優先排序清單
  • 活躍產品集合——已批准且即將開始開發的新產品,以及目前正在進行且已批准繼續的產品

參與者在四類活動中運作:排程(scheduling)、管理流入(inflows)、管理流出(outflows),以及管理進行中的產品(in-process)。

Figure 16.2: Portfolio-planning strategies

11 個策略的分類:

類別策略
排程優化生命週期利潤、計算延遲成本、估算準確度而非精確度
流入應用經濟篩選器、平衡到達率與離開率、快速擁抱新興機會、較小且較頻繁的發布
流出專注於閒置工作而非閒置工人、建立 WIP 限制、等待完整團隊
進行中使用邊際經濟學

Scheduling Strategies#

組合規劃必須以經濟上合理的方式,將組織有限的資源分配給各產品。本章聚焦於三個排程策略。

Optimize for Lifecycle Profits(優化生命週期利潤)#

為了優化組合中的產品排序,我們需要決定衡量哪個變數。Reinertsen 建議使用一個經濟框架,其中所有決策和權衡都以標準化且有用的衡量單位來考量:生命週期利潤(lifecycle profits)

  • 對於特定產品,生命週期利潤是該產品在其整個生命期的總利潤潛力
  • 在組合規劃中,我們關心的是優化整個組合的生命週期利潤,而不是單一產品
  • 我們可能需要次優化個別產品以優化整個組合

Reinertsen 進一步指出,對生命週期利潤影響最重要的兩個變數是延遲成本(cost of delay)持續時間(duration)。根據這些變數在組合中各產品之間的相似(或差異)程度,他建議選擇以下排程方法之一:

延遲成本持續時間/規模排程方法
所有產品相同各產品不同最短工作優先(Shortest job first)
各產品不同所有產品相同高延遲成本優先(High delay cost first)
各產品不同各產品不同加權最短工作優先(Weighted shortest job first, WSJF)
flowchart TD
    A{延遲成本是否大致相同?}
    A -->|是| B{持續時間是否大致相同?}
    A -->|否| C{持續時間是否大致相同?}
    B -->|是| D[任意順序皆可]
    B -->|否| E["最短工作優先\n(Shortest Job First)"]
    C -->|是| F["高延遲成本優先\n(Highest CoD First)"]
    C -->|否| G["加權最短工作優先\n(WSJF)"]

在產品開發中,延遲成本和持續時間通常都會變動,因此經濟上最佳的排序是使用 WSJF,計算方式為:延遲成本 / 持續時間(或實施工作量)

Calculate Cost of Delay(計算延遲成本)#

當我們排序組合待辦清單中的項目時,我們必然會先處理某些產品而推遲其他產品。那些未立即處理的產品有延遲的開始和交付日期,這存在可量化的成本。

大多數組織甚至無法回答一個簡單的問題:「如果我們將產品部署延遲一個月,對生命週期利潤的延遲成本是多少?」

對延遲成本視而不見的組織,通常選擇用「高利潤優先(high profit first)」這個簡單(且經常錯誤)的方法來排序組合。以下例子說明這種方法的問題:

指標專案 A專案 B
投資報酬率(ROI)20%15%
延遲成本(每月)$5K$75K

使用「高利潤優先」策略,我們會先做專案 A(ROI 較高)。但延遲專案 B 來先做專案 A 對組合生命週期利潤的影響要大得多——因為專案 B 的延遲成本是專案 A 的 15 倍

延遲成本體現了時間確實會或可能影響大多數變數的事實。ROI 的計算是基於特定的時間相關假設(開發何時開始和結束、可用資源、資源成本、人們願意支付的價格、技術和商業風險等)。延遲或加速開發,這些變數的值都可能改變。

Leffingwell 的延遲成本模型#

Leffingwell 提出一個延遲成本計算模型,是三個產品屬性的聚合:

  • 使用者價值(User value)——使用者眼中的潛在價值
  • 時間價值(Time value)——使用者價值如何隨時間衰減
  • 風險降低/機會促成(Risk reduction/opportunity enablement)——在降低風險或利用機會方面的價值

每個屬性被賦予 1(最低)到 10(最高)的分數,產品的總延遲成本是三個分數的總和。

延遲成本概況(Cost-of-Delay Profiles)#

另一個有效的方法是描述延遲成本的一般概況

Figure 16.3: Cost-of-delay profiles

概況名稱描述
線性(Linear)延遲成本以恆定速率增加
大額固定成本(Large fixed cost)如果不立即行動,會產生一次性成本;例如交付後才能獲得大額付款
必須立即執行(Must do now)延遲成本立即且快速增加;例如不做就會立即失去收入或成本節約
固定日期(Fixed date)必須在固定的未來日期前交付,在固定日期前延遲成本為零,日期過後全部成本立即累積
對數型(Logarithmic)大部分延遲成本在早期就累積,之後增量逐漸減少
無形(Intangible)長時間看似沒有延遲成本,然後突然累積非常高的延遲成本。技術債就是典型例子——可能達到臨界點,屆時延遲其他工作的成本突然變得顯著且極高

如果計算精確的延遲成本數字非常耗時或容易出錯,可以考慮選擇適當的延遲概況(或創建新的概況),用概況代替具體數字來做排程決策。

Estimate for Accuracy, Not Precision(估算準確度而非精確度)#

為了正確排程組合待辦項目,我們也需要了解其工作量/成本。在估算組合待辦項目的規模時,我們追求的是準確度(accuracy),而非精確度(precision)——因為首次估算時可用的資料非常有限。

某些組織偏好使用 T-shirt 尺寸 來估算組合待辦項目:

尺寸粗估成本範圍
特小(XS)$10K - $25K
小(S)$25K - $50K
中(M)$50K - $125K
大(L)$125K - $350K
特大(XL)> $350K

T-shirt 尺寸估算的好處:快速、通常足夠準確、且在組合層級提供可操作的資訊

以某個組織為例:行銷部門帶來一個專案想法,工程部門討論後給了一個「中」的尺寸。行銷部門就能判斷做這個專案的效益是否超過中型專案的成本($50K - $125K)。這與過去工程部門花大量時間得出一個聽起來很精確但不準確的猜測 $72,381.27 一樣有用。該組織發現這些範圍足夠準確,且消除了浪費,不會將期望拉得太高或提供虛假的安全感。

Inflow Strategies#

流入策略處理以下問題:

  • 如何應用組織的經濟篩選器來做出是否投入的決策
  • 如何平衡產品插入組合待辦清單的速率與被拉出的速率
  • 如何在機會出現時快速把握
  • 如何透過較小且較頻繁的發布來防止組合瓶頸

Apply the Economic Filter(應用經濟篩選器)#

構思的輸出是產品願景,以及清除與構思相關的信心門檻所需的資訊。基於這些資料,組織需要做出是否推進產品開發的決定。這就像是應用經濟篩選器來檢視新產品是否符合組織的資金需求。

Figure 16.4: Applying the economic filter

一個好的經濟篩選器應該:

  • 快速批准任何交付的價值相對於成本而言壓倒性的機會
  • 拒絕大多數其他項目(除非有特殊情況)
  • 如果價值完全壓倒成本,不需要花太多時間討論——直接批准並排入組合待辦清單
  • 如果在做決定前需要為小幅的成本或價值差異爭論不休,應該拒絕該產品——因為顯然沒有壓倒性的經濟支持

在大多數組織中,高價值的產品開發機會太多,不值得花時間討論有疑問的機會。

Balance the Arrival Rate with the Departure Rate(平衡到達率與離開率)#

在實務上,我們希望有穩定的產品流入組合待辦清單,與穩定的產品從組合待辦清單流出之間取得平衡。

Figure 16.5: Balancing inflow and outflow in the portfolio backlog

我們不想透過同時插入太多產品來超載組合待辦清單。就像一家餐廳突然被一整車飢餓的老年旅行團湧入一樣,會壓垮餐廳的能力,導致每個人都有不好的體驗。

許多組織在年度策略規劃中,同時將下一會計年度的所有產品插入組合待辦清單,這會:

  • 壓垮組合規劃流程
  • 違反將規劃選項保持開放直到最後負責時刻的原則
  • 違反使用經濟上合理的批量大小的原則
  • 使排程決策變得過度複雜且昂貴

應對方法

  1. 更頻繁地引入產品——例如每月(或至少每季)而非每年
  2. 專注於較小的產品——產生持續完成的產品流,釋放容量以從組合待辦清單拉取新產品
  3. 節流流入——當組合待辦清單開始增長時,調整經濟篩選器以提高產品批准標準,只讓更高價值的產品通過

在組合待辦項目數量少的情況下,任何避免明顯愚蠢優先排序的排序方式通常就夠好了。排序問題在項目較少時簡單得多。

Quickly Embrace Emergent Opportunities(快速擁抱新興機會)#

組合規劃需要擁抱新興機會(emergent opportunities)。新興機會是之前未知的、或被認為不太可能發生因此不值得花錢的機會。

書中以一個線上博彩市場的組織為例:其業務受各地區法規高度監管,法規可能隨執政黨更替而改變。加州的線上賽馬博彩交易所就是這樣一個新興機會——如果組織只在每年十月做一次策略規劃,就會錯過利用這個機會的時機。

Figure 16.6: The value of many emergent opportunities decays rapidly.

許多新興機會的經濟價值會隨時間快速衰減。不迅速行動,機會一出現我們就幾乎立即失去所有經濟價值,使得日後(例如在下一次年度策略規劃會議上)再追求它成為一個糟糕的經濟選擇。

如果組織使用定期且頻繁的時程表來評估機會(例如每月一次),並擁有高效的經濟篩選器,同時使用較小的發布WIP 限制,就永遠不必等太久來考慮新興機會。

Plan for Smaller, More Frequent Releases(計畫較小且較頻繁的發布)#

如同第十四章討論的,較小且較頻繁發布的經濟效益令人信服。除了改善生命週期利潤外,管理組合時還有另一個原因要做較小且較頻繁的發布——避免車隊效應(convoy effect)

Figure 16.7: Large products in the portfolio backlog create a convoy.

就像在鄉間小路上被大型農用車輛困住一樣,大型產品會佔用大量資源很長時間,使得許多在佇列中排在後面的較小產品無法獲得資源。這些小產品在排隊時都會累積延遲成本。當我們加總所有小產品的延遲成本,再考慮較小增量發布的經濟效益,就能清楚看到大型產品對生命週期利潤造成重大經濟損害

應對策略:

  • 某些組織在組合規劃時制定規模政策,明確限制產品開發的最大規模(例如不超過九個月)
  • 如果有人提出更大的產品,就被要求想出以較小、較頻繁發布交付產品的方法
  • 組織需要明確表示:後續發布可以且將會基於其個別的經濟價值來進行

「我們永遠不能假設任何產品會有第二次發布」的文化與較小、較頻繁發布完全相悖。如果相信可能永遠不會有第二次發布,自然反應是在第一次發布中塞入所有需要的東西,加上所有我們認為某天可能需要的東西。這不僅會產生更大的開發工作,而且幾乎肯定會在處理大型產品的極低價值功能時,延遲其他產品的高價值功能。

Outflow Strategies#

管理流出的策略幫助組織決定何時從組合待辦清單中拉出產品開始開發。

Focus on Idle Work, Not Idle Workers(專注於閒置工作而非閒置工人)#

決定何時從組合待辦清單拉取產品的關鍵策略是記住第三章的原則:閒置工作遠比閒置工人更浪費且更具經濟破壞性。然而這與許多組織管理其組合的方式相反。

一個常見但被誤導的做法:

  1. 從組合待辦清單拉取最上面的產品,指派人員處理
  2. 所有人都 100% 利用了嗎?如果沒有,重複步驟 1

這種方法會讓每個人都很忙,但也會讓每個產品的工作都變得緩慢且容易出錯。更好的策略是:只有當我們能確保兩件事時才開始處理新產品——新產品上的良好工作流,以及新產品不會中斷其他進行中產品的流程。

Establish a WIP Limit(建立 WIP 限制)#

以餐廳為例:你看到有空桌但工作人員不讓你入座。因為幾個服務生請了病假,聰明的餐廳老闆不應該讓你入座——否則每個人的服務品質都會下降。超過可用服務能力的接客量意味著所有服務生都會過度勞累,每個人都會有糟糕的體驗。

我們永遠不應該從組合待辦清單拉取超過我們有能力完成的產品數量。這樣做會導致每個產品可用的容量減少(導致每個產品都被延遲),以及所有產品的工作品質下降。做得更慢且品質更低不是致勝策略。

如何確定適當的 WIP 限制?團隊是建立 WIP 限制的容量單位。了解有多少個 Scrum 團隊,以及他們能處理什麼類型的產品,將引導我們決定應該同時追求多少個以及哪種類型的產品開發工作。

Figure 16.8: Teams are the unit of capacity for establishing the product WIP limit.

例如:如果有三個團隊能處理第 I 類產品,兩個團隊能處理第 II 類產品,這就是建立各類型產品最大同時進行數量的絕佳起點。相比之下,僅用個人技能組合的資訊來嘗試確定適當的同時開發數量要困難得多。

Wait for a Complete Team(等待完整團隊)#

最後的流出策略是在開始處理產品之前,等待完整的 Scrum 團隊可用。

違反「專注於閒置工作而非閒置工人」原則的組織,經常在只有幾個人可用時就開始處理產品。他們的想法可能是:「幾個開發人員還沒到 100% 的利用率,讓他們至少開始在下一個產品上取得一些進展吧。」

這是一個有缺陷的策略,因為它會導致更多工作在其他產品上被阻塞,減慢所有產品的交付速度,並產生顯著的延遲成本。

因為 Scrum 中的容量單位是團隊,如果沒有完整的 Scrum 團隊就不應該開始處理產品。不完整的 Scrum 團隊不足以將功能推進到完成狀態。一個例外是:對於需要多個 Scrum 團隊的產品,如果一個完整的團隊可用且適合先開始,可以考慮先開始,然後在其他完整團隊可用時加入。

In-Process Strategies#

管理進行中產品的策略指導我們判斷是否應該保留(preserve)轉向(pivot)交付(deliver)終止(terminate) 目前正在開發的產品。我們需要在定期間隔(例如每個 Sprint 結束時)做出這些決定,有時也需要在異常事件發生時進行非週期性的審查。

Use Marginal Economics(使用邊際經濟學)#

這應該是指導決策的首要策略,且與核心 Scrum 和敏捷原則良好對齊。

從經濟角度來看,產品到目前為止所有的工作都是**「沉沒成本(sunk cost)」。我們只關心採取下一步的邊際經濟學**:花費下一筆錢是否能被該投資產生的回報所正當化。困難的部分是在不被已經花費的錢所負擔的情況下做出這個決定。

使用邊際經濟學,對每個被審視的進行中產品有四個主要選項

選項英文說明
保留Preserve繼續開發產品
交付Deliver停止開發並發布產品
轉向Pivot利用已學到的知識改變方向
終止Terminate停止開發並終止產品

Figure 16.9: In-process product decision flow based on marginal economics

決策流程:

  1. 下一筆投資是否經濟上合理? 如果是 → 保留,繼續花錢開發
  2. 如果不合理 → 是否已有最小可發布功能(MRFs)? 如果是 → 考慮交付
  3. 如果沒有 MRFs → 是否有其他值得探索的路徑? 如果是 → 轉向,回到構思階段考慮新路徑
  4. 如果進一步投資不合理、對現狀不滿意且沒有成功轉向的前景 → 終止

忽視邊際經濟學會導致愚蠢的行為。在許多組織中,一旦花了第一塊錢就永遠不會(或很少)終止產品——「投入一分錢,就得投入一磅」似乎是他們的策略。書中舉了一個例子:一個組織原本認為產品對 100% 客戶有價值、成本 $1M。花了 $1M 後發現只對 10% 客戶有價值、總成本要 $10M——成本效益比變了 100 倍——但他們仍然選擇繼續花額外的 $9M,原因是會計系統的操弄:終止產品會讓 IT 部門的費用預算受損,但繼續花錢並上線一天就能把成本轉移到業務單位進行資本化。

邊際經濟學是做正確事情和揭露愚蠢浪費行為的強大工具。它應該是你考慮進行中開發工作時的首要策略

Closing#

本章討論了組合規劃(組合管理)的 11 個重要策略。這些策略並非自助餐式的選擇——它們相互強化,同時使用所有策略才能獲得最大效益。

如果只能從每個類別中選擇一個策略,作者建議聚焦於:

類別建議策略英文
排程延遲成本Cost of delay
流入較小且較頻繁的發布Smaller, more frequent releases
流出WIP 限制WIP limit
進行中邊際經濟學Marginal economics

下一章將討論產品規劃(構思 envisioning),其輸出為我們提供在組合規劃期間考慮的候選產品。