Scrum 的官方白皮書 The Scrum Guide 非常輕薄短小(像 Nov 2017 版只有 19 頁),它的理念是:只制定最核心的原則、價值、角色、活動、產出物,其餘的則交給團隊根據經驗主義 1 去調適出最適合自己的細節。

想當然爾,有很多事,Scrum 並沒有明說。

那麼,沒有明說的事,就不需要做、就不能做了嗎?做了,就違反 Scrum 嗎?

這是許多奉 The Scrum Guide 為圭臬的人,常有的盲點。

對 Sprint 的誤解

譬如說,有人對 sprint 這種百米賽跑的壓力提出疑問

Run scrum 一陣子了,有感覺到一些跟傳統軟體開發專案不一樣的壓力。以前這種方式對 team member 來說,會有淡季跟旺季的差別,所以大家比較好安排自己的休假,或者在淡季的時候安排一些 researching、training 的工作。

現在 run scrum 覺得每個 sprint 壓力都好大,每個 sprint 都好趕,都剛剛好在最後一刻達到 sprint goal。大家也會因為齊步走的關係,所以都不太好意思請長一點的假。以前一年可能最多面臨四次 milestone review 的壓力,現在是至少每四週都會面臨一次這種壓力,Scrum guide 又說 sprint 開始以後就是一個 sprint 接一個下去,中間不會有間斷,但我們真的好想暫停 0.5 個 sprint 讓大家喘口氣。

前輩們都怎麼處理休假問題跟這種持續性壓力的問題呢?

Scrum 真的沒有「暫停」這件事嗎?

首先,回到 The Scrum Guide 原始文本,看看它是怎麼說的:

The Sprint

Sprints have consistent durations throughout a development effort. A new Sprint starts immediately after the conclusion of the previous Sprint.

Sprint 長度在整個開發過程中都是固定的,前一個 Sprint 結束後,下一個新的 Sprint 立刻接著開始。

如果只以形式主義來說,這些 sprints 的確好像是一棒接著一棒,棒棒相傳,不漏接,無止息。

再進一步思考 sprint 這個載具的原始目的——即所謂 sprint goal,就可發現,goal 的意義,是由我們來賦予的。就連 The Scrum Guide 都叫你要保持彈性,不要形式主義:

Each Sprint may be considered a project with no more than a one-month horizon. Like projects, Sprints are used to accomplish something. Each Sprint has a goal of what is to be built, a design and flexible plan that will guide building it, the work, and the resultant product increment.

每個 Sprint 可視為一個不超過一個月的專案,如同其他專案一般,Sprint 是用來完成某些事情的。每個 Sprint 有著要打造些什麼的目標,而由一份設計和有彈性的計畫來引導其打造的過程、工作與最後的產品 Increment。

Sprint goal 的意義,是由我們來賦予的。

你想賦予什麼意義呢?

市場探索,可不可以是一種 sprint goal 呢?用戶調研,可不可以是一種 sprint goal 呢?五日 design sprint,可不可以是一種 sprint goal 呢?

甚至有點離經叛道的講:恢復元氣,能不能算是一種 sprint goal 呢?

地力需要恢復,人力也是。

地力需要恢復,人力也是。

休耕期

恢復軟體本身的元氣,有一個更正式的名詞——休耕期 (fallow)。

在《編程的頂尖對話》中,大神 Douglas Crockford 如此解釋軟體研發領域的休耕期觀點: 2

軟體研發的休耕期

軟體研發的休耕期

大神 Douglas Crockford 毫不客氣挑明地講:「管理層很難看到這一點⋯⋯管理層很久之後才會發現。」

如果沒有這種特地保留起來的休耕期,那麼,重構、技術債的議題,幾乎註定會一直被推遲到比馬里亞納海溝還更低的順位。這將嚴重破壞 Scrum 的基石:PSPI 3

敏捷陣營也有人呼應這種想法。像 Toronto Agile Conference 2017 有一場演講 “Technical Debt Is a Systemic Problem, Not A Personal Failing”,用的是 “technical-debt sprints” 一詞,還畫出 CLD 呢:

Technical-Debt Stories and Sprints

Technical-Debt Stories and Sprints

「休耕期」觀念,不是出於傳統的 Scrum 論述,The Scrum Guide 也沒講,你認為它有違反 Scrum 嗎?

如何做?

那麼,該如何踏出第一步呢?或者更敏感地講:誰該去在貓脖子上掛鈴鐺?

大神 Douglas Crockford 說:「團隊應該知道什麼時候合適,管理層很久之後才會發現。」

所以,請先自問:你們有規律地跑 retrospective 嗎?在團隊層次,甚至在更大的組織層次?


  1. The Scrum Guide 說:「Scrum 是立基於經驗導向的流程控制理論 (empirical process control theory),或是經驗主義。經驗主義立論於知識來自於經驗和依照已知的資訊來下判斷。Scrum 使用迭代和逐步 increment 的方式,來最大化可預測性和控制風險。」 [return]
  2. Douglas Crockford 在 CUSEC 2010 Keynote - The Software Crisis 這場演講主張:’Perhaps we should take advice from Exodus: “Plant and harvest crops for six years, but let the land rest and lie fallow during the seventh year.” Maybe do six sprints where you add new features, but on the seventh sprint, don’t add new features at all.’ [return]
  3. 我個人認為,Scrum 的判準,就在於 increment,以及能否在各個迭代過程中,捍衛並精進這個 increment 的整全狀態。詳見〈敏捷的判準〉一文。 [return]