碎碎念軟體研發02:敏捷之Scrum

九卷發表於2022-05-28

一、什麼是 Scrum

1.1 Scrum 定義

Scrum 是敏捷開發方法之一,它使用比較廣泛。

敏捷的其它開發方法還有 XP(極限程式設計)、FDD(特性驅動開發)、Crystal(水晶方法)、TDD(測試驅動開發)、DSDM(動態系統開發)等等敏捷方法。

Scrum-Guide 中定義的 Scrum:

Scrum 是一個開發和維護產品的框架,它通過提供針對複雜問題的自適應解決方案來幫助人們、團隊和組織創造價值。

Scrum 需要 Scrum Mater 營造一個環境:

  1. 一名 Product Owner 將解決複雜問題所需要的工作整理成一份 Product Backlog。

  2. Scrum Team 在一個 Sprint 週期裡將選擇的工作轉化為有價值的 Increment。

  3. Scrum Team 和利益相關者檢視結果併為下一個 Sprint 進行調整

  4. 重複

Scrum-Guide 裡還說:

Scrum 框架故意不完整,僅僅定義了實施 Scrum 理論所需的部分。在 Scrum 中,可以使用各種不同的過程、技術和方法。

二、Scrum 迭代開發過程

2.1 迭代開發過程

Scrum 採納了一種迭代和增量的開發方法。前文中有介紹這 2 種開發模型。用這種方式來應對未來需求變化。

在 Scrum 框架中,整個開發過程由若干個短的迭代週期組成,一個短的迭代週期稱為一個 Sprint,每個 Sprint 的長度建議是 2 到 4 周。這個時間週期可以根據具體情況調整。

瀑布開發模型中可以瞭解到,產品開發前還有產品需求,在 Scrum 中,產品需求在哪裡?

在 Scrum 中,用 Product Backlog 來管理需求,它是產品的需求池。

需求多了,怎麼知道先開發哪個後開發哪個需求?

需要開會對 Product Backlog 裡的需求進行討論,然後排定優先順序。

優先開發對客戶價值較高的需求。

後面的迭代週期 Sprint 又怎麼劃分,多大的 Sprint?

會在 Sprint 計劃會議上討論、分析和估算挑選的需求,然後得到一個任務列表。這個任務列表稱為 Sprint Backlog。下面就針對這個 Sprint Backlog 來開發。

Sprint 週期一般 2 到 4 周,這期間的進度怎麼同步和管控?

這裡有一個 Daily Scrum Meeting,每日站會。一般有 3 個部分:

  1. 昨天完成了什麼
  2. 今天計劃做什麼
  3. 遇到了什麼困難

最後就是回顧整個 sprint backlog 開發過程的會議,覆盤這期間的得與失,在下一次 Sprint 週期中進行改進。

2.2 迭代開發過程圖解

image-20220526205356045

(https://www.wrike.com/scrum-guide/scrum-sprints/)

2.3 總結

細化分解:

Scrum 開發過程就是一個逐步分解細化的過程,把大的產品需求分解為更小的開發需求,再把開發需求按優先順序組合,然後劃分為一個一個開發週期,在 Scrum 中叫 Spring 迭代週期。在 Sprint 迭代週期中,再劃分為一個一個的任務。這樣就可以細化到每天需要完成的任務。

PDCA 迴圈:

Scrum 裡有 PDCA 迴圈思想。Sprint 是一個迭代週期。裡面的任務(task)也可以看作是一個更小的開發週期。

三、Scrum 框架3-3-5-5

Scrum 是一個自組織、跨職能的完整團隊。自組織團隊自己決定如何完成他們的工作,而不是由團隊外的人來決定。

3.1 3個角色

  1. 產品負責人 Product Owner
  2. Scrum Master
  3. Scrum Team 開發團隊

1.產品負責人 Product Owner:

產品負責人是對產品價值最大化的責任人。他負責最大化產品價值和開發團隊工作的價值。他負責產品待辦事項列表 product backlog,並對待辦事項優先順序進行排序。他要負責 Scrum 團隊的下一步工作。

2.Scrum Master:

Scrum Master 負責 Scrum 被理解並實施。他負責團隊成員遵循 Scrum 理論、實踐和規則。

他幫助團隊成員理解 Scrum 並和團隊一起實施 Scrum 中的各種活動。他教導開發團隊建立清晰的待辦事項列表。

3.Scrum Team 開發團隊:

為 Sprint 建立計劃,即 Sprint Backlog。負責每個 Sprint 週期裡的任務開發完成並交付產品。開發團隊是跨職能的,擁有創造產品增量所需的全部技能,並會隨著工作領域變化而變化。開發人員作為專業人士對彼此負責。

3.2 3個工件

  1. Product Backlog
  2. Sprint Backlog
  3. Increment

1.Product Backlog:

產品需求清單,而且是一份有序的需求清單。它是開發團隊工作的來源。Product Backlog 裡有一個一個的條目(item),這就是開發每天需要完成的工作。

2.Sprint Backlog:

Sprint Backlog 由 Sprint Goal(為什麼做)、從 Product Backlog 選擇的需求(做什麼)組成 Sprint Backlog,以及交付 Increment(開發結果)的可執行計劃。

Sprint Goal 是 Sprint 的單個目標。Sprint Goal 是在 Sprint 計劃會議中決定的。

Sprint 的進度:可以用 Sprint Brun-down Chart 來統計剩餘的工作量。

3.Increment:

一個 Increment 就是一個可交付的開發結果。在一個 Sprint 中可以建立多個 Increment。增量是邁向目標的一步。

3.3 5個事件

1.Sprint

2.Sprint 計劃會議

3.每日 Scrum 站會

4.Sprint 評審會議

5.Sprint 回顧會議

1.Sprint

Sprint 是 Scrum 的核心,在這裡將創意(idea)轉化為價值。它的一個迭代週期可以是 2 到 4 周,視具體情況而定。在這段時間內,要構建一個完整的、可釋出的產品增量(Increment)。前一個Sprint 結束後,新的下一個 Sprint 緊接著開始。

Sprint 由 Sprint 計劃會議(Sprint Planning)、每日 Scrum 站會(Daily Scrum)、開發工作(Develop)、Sprint 評審會議(Sprint Review) 和 Sprint 回顧會議(Sprint Retrospective)組成。

每一個 Sprint 相當於一個小的專案。

如果 Sprint 的目標已經過時,那麼可以取消該 Sprint。但是隻有產品負責人(Product Owner)才有權利取消。

2.Sprint Planning

Sprint 計劃會議(Sprint Planning) ,通過安排在 Sprint 中要做的條目(item),來啟動一個 Sprint。需要 Scrum Team 協助建立。

Product Owner 確保討論最重要的 Product Backlog 條目。

3.Daily Scrum

每日會議檢查開發的進展,並根據需要實時調整 Sprint Backlog。每日會議一般為 15 分鐘,不要太長。

4.Sprint Review,Sprint評審會議

Sprint評審會議是檢視 Sprint 的成果。Scrum Team 向利益相關者來展現他們的工作成果,在這次 Spirnt 中完成了什麼,以及環境發生了什麼變化。以及接下來要做什麼。

5.Sprint Retrospective,Sprint 回顧會議

Sprint 回顧會議的目的是規劃提高質量和效能的方法。它發生在 Sprint Review 會議之後,下一個 Sprint 開始之前。

Sprint 回顧會議的目的:

  • 檢視前一個 Sprint 中關係、過程和工具的情況如何
  • 做得好的地方繼續發揚,不好的地方提出改進方法
  • 指定改進 Scrum Team 團隊工作方式

3.4 5個價值觀

1.承諾:願意對目標做出承諾

2.專注:把心思和能力用到你承諾的工作上去

3.開放:Scrum 把專案中的一切開放給每個人看

4.尊重:每個人都有他獨特的背景和經驗

5.勇氣:有勇氣做出承諾,履行承諾,接受別人的尊重

3.5 圖解 Scrum 整個過程

image-20220528015822331

https://www.neonrain.com/agile-scrum-web-development/)

四、實施 Scrum 會遇到的一些問題

  1. Product Backlog 裡的需求怎麼來?價值大小按照什麼排序?
  2. 每一個 Sprint 裡的 Sprint Goal 怎麼確定?Sprint 實施時間怎麼確定?
  3. Sprint Backlog 裡的每個條目,怎麼估算時間?每個開發人員能力不同,開發時間怎麼估算?
  4. 每日站會怎麼開?會不會大家對 Scrum 認識不足而流於形式的開會?
  5. Sprint 評審會怎麼開?會不會變成吐槽會,甩鍋大會?

等等各種問題。

但是 Scrum 強調自管理,遇到了問題不要緊,去尋找解決方法,不段的改進。

在實施 Scrum 中,團隊的成員初期需要熟悉彼此,開始磨合時,矛盾可能增多。

但是隨著不斷進行 Sprint,彼此越來越熟悉,改進越來越多,摩擦慢慢會減少,Scrum Team 彼此之間協作也會慢慢進入到最佳狀態,

從而不斷增加有效產出。

五、參考

相關文章