錯!你認識的敏捷開發根本不敏捷!
本篇的內容標題雖然很聳動,根據一個假期的學習後,我只能說完全顛覆我過往對敏捷開發的一些想像。
大多數的人把敏捷開發當作成一種規範,按照著前人的敏捷開發方式一定就能夠成功對吧?我想新手 PM 在一開始就踏入了條不歸路。大多數的開發團隊甚至都還不清楚敏捷開發的原則跟意義就套用了,你說要怎麼成功以及進行?
本篇文章將是我個人的一個學習紀錄,會盡可能將內容整理的有條理。
現在想要 Hire 一隻敏捷蟲來當我們的 Scrum Master lol
在進入正題之前,我想推薦幾個不錯的內容頻道的 Ref:
- 產品三眼怪實驗室 — 聚集了超多 PM 的經驗以及分享
- 10 分鐘學敏捷 — 言簡意賅的教學影片讓任何不懂專案管理的人都能理解敏捷
- 不是工程師也能懂的 Scrum 入門介紹 — 透過簡單的內容分享 Scrum 工作術
敏捷(Agile)開發
敏捷開發是一種應對快速變化需求的一種軟體開發模式,並且敏捷開發的宗旨主要是「擁抱變化」。
敏捷開發由敏捷宣言以及 12 項原則所組成,旨在遵守其宣言及原則。
敏捷宣言
人員與互動高於流程與工具可運作的程式高於繁複的文件客戶合作高於合約談判回應變更高於遵循計畫
「宣言」 不是建議用左邊的物品替換右邊的物品,而是強調優先考慮左邊的物品。
敏捷 12 項原則
- 我們最優先的任務,是透過早期並持續地交付有價值的軟體來滿足客戶需求。
- 歡迎不斷變化的要求,甚至是開發後期。敏捷流程利用變化來實現客戶的競爭優勢。
- 經常交付可用的軟體,頻率可以從數週到數個月,以較短時間間隔為佳。
- 業務人員和開發人員必須在整個專案中每天一起工作。
- 圍繞有動力的個人建立專案。為他們提供所需的環境和支持,並相信他們能夠完成工作。
- 開發團隊內部和內部傳達訊息的最有效的方法是面對面交談。
- 可以透過軟體來衡量是否進步。
- 敏捷過程促進可持續發展。贊助商、開發者和用戶應該能夠無限期地保持穩定的步伐。
- 持續關注技術卓越和良好的設計可提高靈活性。
- 精簡──或最大化未完成工作量之技藝──是不可或缺的。
- 最佳的架構、需求與設計皆來自於能自我組織的團隊
- 團隊定期反思如何變得更有效,然後相應地調整和調整其行為。
總結一下,我自己看上去認為比較重要的幾條:
- 可以不斷地變化要求,以實現客戶的需求
- 精簡工作量
- 最佳的架構、需求與設計皆來自於能自我組織的團隊
- 團隊定期反思如何變得更有效,然後相應地調整和調整其行為
Scrum 總架構
分為 3 Roles、3 Commitments、3 Artifacts、5 Values、4 Events
Roles
- Product Owner(PO):定義專案做什麼,負責最大化產品以及開發團隊工作的價值。
- Scrum Master(SM):從過程保證了如何實現專案,是團隊的導師和組織者,與 Product Owner 緊密合作,及時為團隊成員提供幫助。
- Developer(Dev):從技術保證如何實現專案。
Commitments
- Product Goal:產品目標,產品的最終目標
- Sprint Goal:短衝目標,在每個短衝期間所要完成的目標
- Definition of done(DOD):完成定義,每次的交付都需要認定什麼叫完成
Artifacts
- Product backlog:產品待辦清單
- Sprint backlog:短衝待辦清單
- Increments:功能成品
Values
- Commitment:願意對目標做出承諾
- Courage:有勇氣做出承諾並履行承諾
- Focus:將心思用在承諾的工作上
- Openness:把專案中的一切開放給每個人看
- Respect:每個人都有它獨特的背景和經驗,並尊重每個人
Events
- Sprint Planning:短衝規劃會議
- Daily Scrum:每日站立會議
- Sprint Review:短衝檢視會議,需要符合 DOD
- Retrospective:內部自省會議,以確保下次的短衝可以保持更好
一、短衝規劃會議可分為 Part 1、Part 2
Part 1:討論需求內容(what to do)
- 由 PO 解釋此 Sprint 所預計要完成的 User Story 有哪些
- 目的是為了與成員們溝通,拉近彼此對於需求的共識
Part 2:討論實作方法(how to do)
- 將 User Story 分成若干個 Task(eg 設計 UI、設計資料庫表格 ..)
- 估算每個 Task 所需要的工時
二、站立會議
會議目的
利用每日站立會議,快速溝通專案進度,目標 15 分鐘結束
分別是檢視專案進度,並根據需求調整 Sprint Backlog 的清單
會議內容
- 昨日做了什麼
- 今日要做什麼
- 需要什麼幫助
三、Sprint Review 短衝檢視會議(與客戶召開)
會議內容
- 向利害關係人展示功能以及產品特性,讓客戶驗收並收集用戶回饋
- 檢視 Sprint 成果和決定未來的調整方向
注意事項
- 交付給客戶的功能,須先經過內部驗收標準
四、Retrospective 短衝回顧會議(內部召開)
會議目的
- 將經驗總結累積,並於下個 Sprint 進行改善
- 探索如何才能提高效率和品質
會議內容
- 回顧本 Sprint 有關人員、互動、流程、工具以及交付的功能情況
- 總結哪些做得好、哪些不好、遇到哪些問題,以及如何解決這些問題
用戶故事
用戶故事是敏捷中用戶功能的最小單位,可以在一個敏捷衝刺中交付。
通常我們會透過一個公式來列用戶故事,分別是 Who + What + Why
範例:作為一個部落客,我想要撰寫文章,以便讓所有人可以知道我。
也需要符合以下特性
- 獨立性:實現當前功能的時候不會依賴於其他功能
- 可協商性:不應該包含過多的細節
- 有價值性:如果沒有價值根本不需要被產生
- 可以估算的:對故事進行評估
- 小的:盡量將用戶故事切得越小越好
- 可以進行測試的:確認是否能完成的,符合 DOD
常見問題
一、Product Backlog vs Epic vs User Story
在敏捷開發中,Product Backlog(產品待辦清單)、Epic(史詩)和 User Story(用戶故事)是三個不同層次的需求描述。
在實踐中,Epic 是 Product Backlog 中的一個項目,代表一個較大的需求單位,而 User Story 則是 Epic 的一部分,更具體地描述了用戶的需求。Epic 可以進一步拆解為多個 User Story,以便更容易地規劃和執行。Product Backlog 則包含了所有的 Epics 和 User Stories,提供了全面的需求視圖。
二、我的團隊適合 Scrum 嗎
最重要的三點:
- 永遠彈性調整,並優先做最重要的事情
- 團隊的所有人都要能「隨時掌握情況,幫助彼此解決問題」
- 要專注在「如何於固定時間內,產生更多價值」
筆者認為問團隊是否適合前,可以好好先跟團隊溝通並且傳達正確的 Scrum 原則,以讓大家都能符合原則跟規範在進行!若不行採用別種管理方式也可以的!
三、如何評估工作量?
談到評估工作量時,在敏捷中有兩種評點方式,第一種是用戶故事點數、第二種是工作時數預估
基本上需要先評估用戶故事點數,可以透過費氏數列:
1..2..3..5..8..13..21
Story Point 評分的簡易流程
- 先理解 User Story
- 設立度量衡
- 各自填寫自己認為的點數
若有認知差異需要點名以繼續
- 倘若點數會穿越多個數字,需要特別出來討論是否認知不一
- 若 User Story 出現 21,需要確定是否切得不乾淨