本章以作者 Kenneth Rubin 在 Genomica 公司的親身經歷開場,說明為何選擇 Scrum,並概述 Scrum 的定義、起源、適用情境與效益。

什麼是 Scrum?#

Scrum 是一種用於開發創新產品與服務的敏捷方法(Agile approach)。其運作方式如下:

  1. 建立 Product Backlog:一份按優先順序排列的需求清單,包含打造成功產品所需的功能與能力
  2. 永遠先做最重要的事:團隊始終從最高優先級的項目開始工作;當資源(如時間)用盡時,未完成的都是較低優先級的工作
  3. 以迭代(Iteration)交付:工作在短期、固定時間箱(Timebox)內進行,通常為一週至一個月
  4. 自組織、跨功能團隊:團隊在每個迭代中完成設計、開發、測試等所有工作,產出可運作的功能
  5. 迭代審查與回饋:每個迭代結束時向利害關係人展示成果,根據回饋調整後續計畫

Figure 1.1: Agile development overview

關鍵概念: 每個迭代結束時,團隊應產出一個潛在可交付的產品增量(Potentially Shippable Product Increment)。可以選擇在每個迭代後發布,也可以累積多個迭代的功能後一次發布。

Scrum 的起源#

  • 1986 年:Takeuchi 與 Nonaka 在《Harvard Business Review》發表〈The New New Product Development Game〉,描述 Honda、Canon、Fuji-Xerox 等公司使用可擴展的團隊式方法進行產品開發,強調賦權的自組織團隊
  • Scrum 一詞:源自橄欖球(Rugby)術語,比喻團隊像橄欖球隊一樣「整體前進、互相傳球」,而非像接力賽般逐段交接
  • 1993 年:Jeff Sutherland 在 Easel Corporation 結合上述文章的概念與物件導向開發、經驗式流程控制、迭代增量開發等思想,創建了 Scrum 流程
  • 1995 年:Ken Schwaber 在 OOPSLA 會議上發表第一篇 Scrum 論文
timeline
    title Scrum 發展歷程
    1986 : Takeuchi 與 Nonaka 發表論文
         : 提出產品開發的整體性方法
    1993 : Sutherland 創建 Scrum 流程
         : 應用於 Easel Corporation
    1995 : Schwaber 發表正式論文
         : Scrum 方法論公開推廣

雖然 Scrum 最常用於軟體產品開發,但其核心價值與原則也已成功應用於硬體開發、行銷計畫及銷售專案等不同領域。

為什麼選擇 Scrum?——Genomica 案例#

作者以 Genomica 的經驗說明 Scrum 適用的典型情境:

  • 複雜領域(Complex Domain):未知遠多於已知,產品前所未見,需要快速探索與學習
  • 快速回饋需求:需要每隔數週向戰略夥伴展示可運作的成果,傳統的詳細前期規劃無法滿足
  • 避免大型前期架構設計:過去花了近一年做純架構工作,最終驗證時發現畫面切換一個欄位需要 42 秒——徹底失敗
  • 跨功能團隊協作:打破開發完成後才交給測試的傳統模式,目標是每日同步

Genomica 的成果#

指標WaterfallScrum
投入人力10x1x
速度(Velocity)1x7x
客戶滿意度優秀

採用 Scrum 後,Genomica 以十分之一的人力投入達成相當的功能產出,開發速度提升至 7 倍,並在合作夥伴的硬體平台發布時程內準時交付。

Scrum 的效益#

Figure 1.2: Scrum benefits

成功導入 Scrum 的組織所體驗到的好處:

效益說明
客戶滿意(Delighted Customers)交付客戶真正需要的東西,而非第一天(所知最少時)規格化的功能
改善投資報酬率(Improved ROI)透過更小、更頻繁的發布來提升價值回報
降低成本(Reduced Costs)持續揭露組織失能與浪費,進而消除之
快速交付成果(Fast Results)每個迭代交付可運作、已整合、已測試的業務功能
應對複雜世界的信心(Confidence in a Complex World)快速適應競爭者、客戶、法規等多方行動
更多工作樂趣(More Joy)頻繁而有意義的協作,提升人際關係與互信

Scrum 的適用情境——Cynefin 框架#

Cynefin 框架是一種情境感知框架(Sense-making Framework),幫助我們判斷所處環境並選擇合適的方法。它定義了五個領域:

Figure 1.3: Cynefin framework

Complex(複雜)領域#

  • 特徵:不可預測多於可預測,正確答案只有事後才知道;屬於湧現(Emergence)領域
  • 策略:探索(Probe) → 感知(Sense) → 回應(Respond)
  • 需要:創造安全失敗(Safe-fail)的實驗環境、高度互動與溝通
  • Scrum 適用性最佳契合。創新產品開發與創新功能開發屬於此類

Complicated(繁雜)領域#

  • 特徵:可能有多個正確答案,但需要專家診斷才能找出
  • 策略:感知(Sense) → 分析(Analyze) → 回應(Respond)
  • Scrum 適用性:可以使用,但不一定是最佳方案。例如效能調校更適合讓專家評估。日常軟體維護多屬此類

Simple(簡單)領域#

  • 特徵:因果關係明確,正確答案顯而易見且無爭議;屬於最佳實踐(Best Practices)領域
  • 策略:感知(Sense) → 分類(Categorize) → 回應(Respond)
  • Scrum 適用性:可以用但效率不高。重複性工作(如第 100 次部署相同 COTS 產品)更適合定義好的標準流程

Chaotic(混沌)領域#

  • 特徵:危機狀態,需要立即行動以防止進一步損害
  • 策略:行動(Act) → 感知(Sense) → 回應(Respond)
  • Scrum 適用性不適用。此時不需要整理 Backlog 或規劃迭代,需要有人立即掌控局面、果斷行動

Disorder(失序)領域#

  • 特徵:不知道自己處於哪個領域,是最危險的狀態
  • 脫離方法:將情境分解為組成部分,分別歸類到其他四個領域中

軟體開發是一項豐富的活動,其各個面向會橫跨多個 Cynefin 領域。雖然大部分軟體開發工作落在 Complicated 或 Complex 領域,但不應一刀切地宣稱「軟體開發就是複雜領域」。

Scrum 與高度中斷驅動的工作#

Scrum 不適合高度中斷驅動(Interrupt-driven)的工作環境,例如客戶支援組織:

  • Backlog 內容持續變動(可能每小時甚至每幾分鐘就改變)
  • 無法可靠地規劃一週以上的迭代
  • 高優先級請求隨時可能打斷既有計畫

替代方案:Kanban——更適合維護與支援工作的敏捷方法。其核心做法:

  1. 視覺化工作流程(Visualize the workflow)
  2. 限制在製品數量(Limit WIP)以確保不超過產能
  3. 度量與優化流程(Measure and optimize flow)以持續改善

在某些組織中,Scrum 與 Kanban 可以並存:Scrum 用於新產品開發,Kanban 用於中斷驅動的支援與維護。

結語#

  • Scrum 不是萬靈丹,但它能讓你擁抱複雜產品開發中不可避免的變化
  • Scrum 框架簡單但不容易:它不會給你標準答案,而是賦權團隊提出並回答自己的問題
  • Scrum 會揭露組織的失能與浪費,這個過程可能令人痛苦,但若能克服最初的不適並解決問題,組織將在流程、產品、員工與客戶滿意度方面獲得顯著進步

Scrum 不會直接給你「食譜式」的解決方案。它讓組織的問題無所遁形——這對許多組織來說是痛苦的第一步,但也是改善的起點。