最近想在團隊中試著導入 scrum,因此先來瞭解一下 scrum 的概念
Waterfall vs Agile
Iron Triangle
- Scope is the work to be done – such as features and functionalities – to deliver a working product.
- Resources include budget and team members working to deliver and execute.
- Time is when teams will deliver to the market such as releases and milestones.
Scrum
Manifesto for Agile Software Development 敏捷宣言
個人與互動
重於流程與工具
可用的軟體
重於詳盡的文件
與客戶合作
重於合約協商
回應變化
重於遵循計畫
Scrum Role
- Product Owner(PO,產品負責人)
- 為產品的成敗負責
- 負責管理產品需求並決定需求的施工順序
- 負責回答問題與釐清需求
- Scrum Master(SM,無中文名稱)
- 監督流程
- 協助團隊持續改善開發流程
- 排除任何阻礙開發活動的事件
- Development Team(Dev Team,開發團隊)
- 負責開發軟體
- 決定細節,執行任務
- stakeholder (利益相關者)
- 和軟體開發專案有關,但是卻沒有實際參與專案開發活動的人
Scrum Object
- Item(物件) or Story(故事):
- 由 PO 來定義產出,Story 的 Scope 必須是可以讓團隊在一般的速率下完成 3 - 5 個為佳,太多會太雜,太少會讓團隊感覺到這次的 Sprint 產出沒感覺,對團隊信心是個打擊
- Task(工作):
- 由 Dev Team 列出 Story 所需完成的工作項目,並由 Dev Team 自行分配
- Product Backlog(產品待辦清單):
- 由 PO 負責整理的產品願景圖,以 Story 為單位,開始順序由上而下
- As a user, I can do something so that I can achieve xxx
- ProductBacklog.xls
- Sprint Backlog(衝刺待辦清單):
- Dev Team 向 PO 承諾這個 Sprint 會盡力完成的 Story List,以 Task 為單位
- Potentially Shippable Product Increment(潛在可交付產品增量):
- Dev Team 的產出,就是這個 Spring 所完成的項目,並且客戶需要就可以立即上線的
- Burndown Chart(燃盡圖):
- 剩餘的 Sprint Backlog,看看還剩多少才能清空,以 Task 大小為單位
- 把所有 stories 的 tasks 施工的小時數加總起來,每次 daily Scrum 報告已經完成哪些 tasks,並將總時數減掉完成時數,畫成一個表,團隊就可以知道進度是否正常
- Burndown Chart
Scrum Meeting
Scrum 活動每一個都是有它的目的和時間限制(Time Boxed) Spring n 個禮拜,所有活動抓 n 小時
- Sprint(衝刺):
- 團隊決定哪些 Item 後,就開始去衝刺
- 長度定義上是 1 - 4 個禮拜,但實務上不要多過2個禮拜
- 長度應該要保持穩定,盡可能不變,這樣才容易讓團隊掌握節奏,也容易預估和比較 Sprint 內的工作量
- 大原則是 Sprint 內的 Sprint Backlog 不改變(有原則就有例外)
- Daily Scrum(每日站立會議):
- 每天 10 - 15 分鐘不能超時
- 目的是讓團隊資訊同步
- 一定要站著為了讓大家長話短說
- 主要報告三件事
- 昨天做什麼以協助團隊達成sprint目標
- 今天準備做什麼以協助團隊達成sprint目標
- 有沒有遇到任何阻礙團隊達成sprint目標的事情
- Sprint Planning Meeting(衝刺規劃會議):
- 討論這次 sprint 所要開發的需求(stories)
- 將 story 細分為若干個 task,並估算每個 task 所需的時間(以小時計算
- Story 優先順序 PO 決定
- 選多少 Item 由 Dev Team 決定
- 會議後會產生 Spring Backlog,上面完整寫出這次 Spring 所需要的所有資訊
- Product Backlog Refinement / PBR(產品待辦清單精煉會議):
- PO 跟 Dev Team 一起討論近期內會開始的 Story
- 從商業和使用者角度切入,儘可能不觸及技術細節
- Sprint Review(衝刺檢視會議):
- Sprint 結束時針對這次 Sprint 產出的會議
- PO 邀請利害關係人對產出給予意見,必須是可用的功能才算產出
- 不需準備 Powerpoint 或其他簡報,單純就軟體操作取得回饋
- Sprint Retrospective / Sprint Retro (衝刺回顧會議,也有人稱『自省』會議):
- Scrum Team 成員(Dev Team 或包含 PO)
- Sprint Review 後,針對這個 Sprint 團隊的工作模式討論改善,並定出下個 Sprint 改善事項
- 原則上只有團隊成員才能參加,避免主管級參與,而變成檢討會議
後面為非正規 Scrum - Scrum 是什麼(3):三種補充文件
- Sprint Info Page (One Page, Kick off)
- sprint planning meeting 開完之後,SM 會寫一份 sprint info page 文件,這份文件包含了 sprint goal(一句簡短的句子,用以表明該 sprint 所要完成的主要功能),stories,sprint,startTime,endTime,以及團隊成員。
- SM 將這份文件寄給 Scrum Team 與其他有興趣的輔助角色人員,讓他們知道一個新的 sprint 已經開始了。
- Sprint Demo Agenda
- Sprint 結束前一天,SM 要寫出 sprint demo 的議程表,並將此文件寄給 Scrum Team 與其他有興趣的輔助角色人員。
- 議程表包含所有要 demo 的項目,以及每一個 demo 項目要花多少時間,由誰負責 demo。
- 當 Developer 收到該議程表時,就可以準備明天要 demo 的資料。
- Sprint Summary Report (會議記錄)
- 當開完 sprint retrospective meeting 之後,SM 會準備此文件
- 內容包含
- sprint 所完成功能的簡述
- 完成多少個 story points
- 好的以及有待改善的項目(最多只各列三點)
- 改善行動計畫
- 將此文件寄給Scrum Team 以及其他有興趣的輔助角色人員,讓他們知道這個 sprint 已經正式結束了。
Technical
- 單元測試(Unit Test)
- 系統測試(System Test)
- CI 持續整合(Continuous Integration)
- CD 持續交付(Continuous Delivery)
Benefit
- 快速驗證使用者反應
- 學習目標導向解決問題
- 學習團隊協作
- 快速失敗,快速學習
- 快速且頻繁的同步資訊
- 自組織團隊(Self Organizing Team)
- 自省會議(Retrospective)
- 引導(Facilitation)
參考文件