讀完這章你要能回答:一則好的用戶故事長什麼樣?為什麼 story point 不是工時?什麼是「固定時間、彈性範圍」的發布規劃?

把需求拆成可交付的小塊,並用團隊自己的節奏來估算與發布。

用戶故事(User Story)#

產品經理基礎介紹的 product backlog,裡頭裝的就是一則則用戶故事。用戶故事不是規格書,而是「一段待展開的對話」。

用戶故事的經典格式:

作為(As a)某類使用者, 我想要(I want)做某件事, 以便(so that)達成某個目的。

重點在最後一句「以便」——它說明了為什麼,連結回使用者真正想完成的「工作」。少了它,故事就退化成沒有脈絡的功能條目。

範例:

作為一個通勤的上班族,我想要 App 記住我上次聽到哪,以便被打斷後能直接續聽,不用重找。

INVEST:好故事的六個標準#

一則值得放進 backlog 的故事,應該通過 INVEST 檢查。

字母標準意思
IIndependent 獨立盡量不依賴其他故事,可單獨排序與交付
NNegotiable 可協商是對話起點,不是寫死的合約
VValuable 有價值對使用者或業務有可感知的價值
EEstimable 可估算團隊有足夠資訊去估它的大小
SSmall 夠小一個 sprint 內能完成,太大就拆
TTestable 可測試有明確的驗收標準,知道何時算「做完」

故事太大、估不動,通常代表它還沒被理解清楚。這時不要硬估,而是回到梳理流程把它拆小。

相對估算與 Story Points#

Story point 是相對大小,不是工時。一個 3 點的故事,意思是「大約是 1 點故事的三倍工作量」,而不是「要花 3 小時/3 天」。

為什麼不用工時?因為人類擅長比較大小(這顆比那顆大),卻不擅長預估絕對時間。用相對點數,能避開「到底幾小時」的無謂爭論,也讓估算更穩定。

常見做法是用費氏數列(1、2、3、5、8、13…)當點數刻度——數字越大、間隔越大,反映「越大的東西越估不準」。

Planning Poker 怎麼跑#

1. 主持人朗讀一則用戶故事,團隊澄清疑問
2. 每人手上有一組點數卡(1, 2, 3, 5, 8, 13...)
3. 同時亮牌(避免互相影響、錨定)
4. 若估值分歧大,最高與最低的人各說理由
5. 重新亮牌,直到收斂到共識
6. 記下這則故事的點數,進入下一則

同時亮牌是關鍵。先聽到資深工程師喊「2 點」,其他人就會不自覺跟著喊——這就失去了集體判斷的價值。

速度(Velocity)需要時間才準#

「速度」= 團隊一個 sprint 平均完成的點數,用來預測「這些 backlog 大概要幾個 sprint」。

速度至少要累積 5 個 sprint 以上才有參考價值。前幾個 sprint 團隊還在磨合、估算還不穩,拿來預測或拿來比較不同團隊,都會誤導。速度是團隊對內的規劃工具,不是對外的績效指標。

發布規劃:固定時間 + 品質,彈性範圍#

傳統專案常想「時間、範圍、品質」三者全鎖死,結果往往三者皆崩。敏捷的發布規劃改成:

鎖死(不退讓):
├── 時間:發布日期固定
└── 品質:達不到 Definition of Done 不算完成

彈性(可調整):
└── 範圍:時間到了,就發出「已完成的最高優先級故事」

換句話說,當進度吃緊,砍範圍而不是砍品質或延期。因為 backlog 已排好優先級,砍掉的永遠是最不重要的那些。

Definition of Done(完成的定義)#

Definition of Done(DoD)是團隊對「什麼叫做完」的共同約定。沒有 DoD,「我做完了」這句話人人定義不同——有人指寫完程式,有人指上線可用。

一份典型的 DoD 清單:

  • 程式碼完成且通過 code review
  • 通過單元測試與整合測試
  • 符合該故事的驗收標準
  • 文件/埋點已更新
  • 已部署到可驗證的環境(如 staging)

DoD 對所有故事一體適用,是「品質底線」;驗收標準則是逐則故事不同的「這則故事要對的事」。兩者搭配,才能讓「固定品質、彈性範圍」真正落地。

本章要點#

  1. 用戶故事三段式:作為…我想要…以便…,重點在「以便」說明為什麼
  2. INVEST:獨立、可協商、有價值、可估算、夠小、可測試
  3. Story point 是相對大小不是工時:人擅長比大小、不擅長估時間
  4. Planning Poker:同時亮牌避免錨定,分歧時辯論再收斂
  5. 速度需 ≥5 個 sprint:是對內規劃工具,不是對外績效指標
  6. 固定時間與品質、彈性範圍:進度吃緊時砍範圍,不砍品質
  7. Definition of Done:團隊對「做完」的共同底線