# Scrum 標準與心得

# Scrum 標準組成和流程

Scrum 是 Agile 的一種實踐框架。Scrum 的主要組成有以下四點：

1. 三個角色
2. 三個 Artifacts
3. 七個工作流程
4. 五個價值

## 三個角色

1. Scrum Master：負責帶領團隊執行 Scrum，幫助團隊清除障礙
2. Product Owner：確定產品的方向和願景，定義產品的發布內容、優先級和交付時間
3. Delivery Team：跨職能的團隊，建議人數為 5-9 人

## 三個 Artifacts

1. Product Backlog：整個專案的概要文件，主要使用 User Story / Use Case 的方式來描述，從使用者的角度作出發點。主要關注於想要生產什麼樣的產品。開放式的，所有人都可編輯。包括所有需要功能的簡略描述，粗略的難易度估算，通常使用時間或 Story Point。這可以幫助 Product Owner 衡量優先度和時程。
2. Sprint Backlog：細化 Product Backlog 的文件，內容需要包含團隊如何實現 Sprint（基本的設計、系統架構的可能性）。然後會細分為 Task，其執行時間可以細分到小時為單位。沒有任務可以超過 16 小時。如果需要超過 16 小時，就應該再次拆分。Sprint Backlog 上的 Task 不會被分派，而是由團隊成員自由認領喜愛的任務。
3. Increment：在 Sprint 完成後所提出的文檔，列出已經完成的 Task，有時候會使用 Burndown Chart 作為代替。

## 七個工作流程

1. Sprint：貫穿整個 Scrum 的流程。通常時間為 2 週或一個月為一個迭代的週期。
2. Sprint Planning：討論哪些 User Story 會加入到新的 Sprint 中。有些做法會拆成兩個部分 What-meeting 和 How-meeting。
    * What-meeting：將 User Story 從 Product Backlog 中移入到 Sprint Backlog（優先順序由 PO 決定、要選多少則由團隊決定）
    * How-meeting：團隊成員將 Story 拆分為更細小的 Task，並對 Task 依照複雜度、耗時性等去做估算（通常用時間或是 Story Point)
3. Daily Scrum：會議目的是要 Sync 團隊狀況，具有以下原則
    * 會議準時開始
    * 歡迎所有人參加，但只有 Scrum Master、Product Owner、Delivery Team 可以發言
    * 不論團隊規模，限制在 15 分中內結束
    * 所有出席者應站立
    * 會議固定時間和地點舉行
    * 會議上每個成員只需要回答三個問題：
       1. 昨天完成了什麼工作
       2. 今天打算做什麼
       3. 完成目標會有什麼障礙（Scrum Master 需記下障礙）
4. Sprint Review：用於審查這次 Sprint 的完成的成果，展示給其他相關的人員看。此會議主要審視的是產品的功能上，在其中的修改或有新的想法或做法。都應該記錄起來由 Product Owner 新增為新的 User Story 加入到 Product Backlog 中。這邊只展示已經完成的項目，未完成的項目，應放回 Product Backlog，等待下次 Sprint Planning 時再拿出來討論、是否應該修正估算值、或是優先順序等。
5. Sprint Retrospective：用於審視這次 Sprint **「流程」**的問題並反省，主要有三個主要項目要討論
    1. 這次 Sprint 做得好的，應該持續下去的
    2. 這次 Sprint 不夠好需要改正或停止的
    3. 選取一個重要且需要改進的部分並由專人負責處理
6. Backlog refinement：需要進行對於 Backlog 的重新審視，建議保持約 10% 的團隊能力來處理。在軟體工程上，通常用於處理技術債的問題。
7. Canceling a sprint： Product Owner 擁有取消 Sprint 的權力，當有必須的時候。

## 五個價值

1. Courage：需要有接受變化的勇氣
2. Commitment：團隊成員為合理的目標作出承諾並確保成功
3. Focus：清楚定義目標和角色使你關注你所關注的事物，一次只做一件事
4. Respect：在 Scrum 團隊中每個成員需要互相尊重
5. Openness：項目中所有事物對於所有人都是開放的，所有人朝著同一個目標前進

## 個人經驗和見解

個人在工作經驗上，滿常會遇到的問題是，這個流程沒有特別提到 Scrum master 應該要輪替的方式。還有常常會忽略掉工作流程最後的 Backlog refinement。然後最後一個是最常遇到的也最常被忽略的 - 溝通。在跑 Scrum 時我很常聽到的都是，因為會議太多很常要被打斷。但怎麼講少這個成本就是一個至關重要的問題。如果 Scrum 的第一個價值，是要有接受改變，變動跟穩定交付之間的平衡。

## Reference

* <https://www.wikiwand.com/en/Scrum_(software_development)#/Sprint_backlog>
* <https://weilihmen.medium.com/scrum-%E4%BD%9C%E6%A5%AD%E6%B5%81%E7%A8%8B%E8%88%87%E5%90%8D%E8%A9%9E%E5%AE%9A%E7%BE%A9-d8b8bd9261a0>

