Scrum實踐指南:一個可運行的 Scrum是怎樣的

2021-01-07 人人都是產品經理

在目前的網際網路公司,敏捷(Agile)的概念已經有相當的普及,人人都在談,似乎不談敏捷就不那麼網際網路了。幾乎所有的網際網路公司都不同程度的實施了敏捷。

採用敏捷開發的方法也有很多,主要包括極限編程(XP)、Scrum、水晶方法(Crystal Methods)、自適應軟體開發(ASD)、特性驅動開發(FDD)、動態系統開發(DSDM)、輕量級RUP、測試驅動開發(TDD)等等。而在眾多的敏捷開發方法中,尤以實施Scrum比較流行。

對於我本人來說,接觸Scrum有幾年的時間了。在軟體開發項目中做了一些Scrum的實踐,閒暇時間也經常與業界Scrum同仁們溝通交流一些心得;同時,也始終在關注業界對於Scrum的一些新的認識和實踐的書籍材料。在這一過程中,也促使我對Scrum有了更深刻的理解。

結合我的Scrum實踐,本文主要從Scrum的認識,Scrum的實施過程以及實施Scrum帶來的變化幾個方面進行分享,解讀一個可運行的 Scrum是怎樣的。希望能給大家帶來不一樣的認識,並對Scrum實踐有所幫助。

一、Scrum的認識

首先來了解一下Scrum的定義。

Scrum 是一個用於開發和維護複雜產品的框架,是一個增量的、迭代的開發過程。在這個框架中,整個開發過程由若干個短的迭代周期組成,一個短的迭代周期稱為一個Sprint,每個Sprint的長度是2到4周。

在Scrum中,使用產品Backlog來管理產品的需求。產品backlog按照實現的優先級進行排序,以商業價值作為排序的主要原則。在Sprint中,Scrum團隊從產品Backlog中挑選最高優先級的需求進行開發。挑選的需求在Sprint計劃會議上經過討論、分析和估算得到相應的任務列表,稱它為Sprint backlog。當Scrum團隊完成Sprint backlog列表中的所有任務時,本次Sprint結束,進入下一個Sprint迭代周期。

Scrum有很大的價值,然而在有些公司推行Scrum卻困難重重,有些人說Scrum沒有什麼實質性的作用,然並卵。為什麼會有這樣的認識呢?深入分析,原因主要有:

項目團隊缺乏對敏捷的正確認識,單純的認為敏捷就是快,就是追趕進度,就可以不受任何制度約束。大家可能聽說過這樣的對聯,「這個功能很簡單,怎麼實現我不管。」橫批:「明天上線」。也曾聽說有些公司要開發一個新功能,因為實施了scrum,於是要求項目團隊加班加點,將2周甚至3周以上的開發任務在一周內就發布上線。實施Scrum意味著項目團隊「漫無天日」的加班,這導致了項目團隊對敏捷有一種「恐懼」感;PO不能勝任工作,無法拆分有效的用戶故事,或者用戶故事拆分的不合理,無法實現迭代增量開發;Scrum對於自組織的團隊要求很高,但許多同學認為自己達不到自組織的標準;Scrum倡導工作透明化,項目實時完成情況和每個人的任務認領情況通過項目看板和項目燃盡圖一覽無餘,許多人對此不太適應;在迭代的過程中無法及時發現問題,或者發現問題,無法有效解決問題,使項目團隊有一種挫敗感。等等。

如果對Scrum的認識僅僅停留在「上午有個點子,下午就要實現,晚上就能上線,是不恰當的。在我看來,Scrum肯定是有價值的,Scrum的主要作用包括:

Scrum能夠保證優先開發對客戶具有較高價值的需求,更好的滿足用戶的需求;與瀑布流程下的開發方式相比較,通過實施Scrum,能夠提升團隊一倍的開發效率,最大限度的發揮團隊的作用;Scrum能夠縮短開發周期,提高項目的交付效率。

但是,實施Scrum並不意味著不受項目約束,任性而為。那麼實施Scrum的正確姿勢是什麼呢?

二、如何實施Scrum

1. 確定PO

PO即Product owner,是一個角色,PO是管理產品待辦列表的唯一責任人。當然,在有些公司PO也可能作為一個組織而存在——比如我們公司在實施Scrum中就將PO作為了一個組織。如果將PO作為一個組織運行,在這一個組織中必須選出一個Owner。

作為owner,必須具有大局觀;深刻了解行業信息與走向;能夠把握產品的方向,擔負起產品短期以及中長期的規劃與管理;能夠根據公司戰略要求,進行用戶研究和產品功能規劃,深度跟蹤、分析、挖掘不斷變化的需求,不斷進行產品創新。

另外,如果將PO作為一個組織,在軟體開發項目中,PO小組可能包括的成員有產品經理、業務方、視覺設計師、互動設計師以及架構師等。

在多數情況下,由產品經理或互動設計師擔任Owner。

2. 組建team

team是產品藍圖的真正實施者,負責在每個Sprint結束時交付潛在可發布並且「完成」的產品增量。

team主要包括開發及測試人員,team必須能夠落實PO對產品的設想。

team的規模宜小不宜大,一般5~9人較為合適。

在敏捷開發中倡導的是團隊人員的「全棧」能力,但目前在大多數網際網路公司可能難於落實,比如多數網際網路公司前後端開發是分離的,所以在組建team團隊時需要特別關注前後端開發人員投入的比例。

以我帶的2017年開發的小程序為例,前端和後端人員投入的比例為2:3時,能夠最大限度的提升項目的開發效率——當然,這個比例必須基於項目中前後端所承擔的具體開發任務情況而定,而不是隨性給出。

3. 選擇Scrum Master

Scrum Master為過程負責,服務於PO和開發團隊。Scrum Master要有儀式感,能夠有效地、高效的組織迭代計劃會、每日站立會、功能演示會、迭代回顧會等;Scrum Master必須具有高度的執行力,並保持公信力,能夠幫助團隊聚焦交付目標和質量目標,確保團隊高效交付高質量的產品;推動團隊建立高效的流程,指導團隊了解敏捷價值觀、原則和敏捷實踐;負責培訓團隊其他成員,確保Scrum得到正確運用;促進團隊有效的交流協作、問題管理、衝突解決,幫助團隊消除一切障礙。

4. 維護產品需求池

產品需求池是所有用戶故事的集合,由PO依據公司的戰略和產品願景進行的思考。PO按照產品實現的優先級順序對產品需求池的所有用戶故事進行排序,並形成產品待辦事項列表,產品待辦事項列表相當於產品研發的「路線圖」,要想了解產品的脈絡,產品待辦事項是最好的參考依據。

我們每一天都面對著新的競爭者和用戶新的訴求,這意味著PO必須不斷地優化自己的產品設計,並對產品待辦事項列表實現的優先順序進行調整。

在這一過程中,PO應該與所有利益相關者和團隊進行協商,以確保產品待辦事項能夠反映用戶的真實訴求。

5. 故事點評估

相對精確的評估工作一般都是在衝刺計劃會上進行,並由負責實際開發及測試工作的團隊對產品待辦事項做出評估。

在實踐過程中為了讓衝刺計劃會更高效,在衝刺計劃會之前PO與Scrum Master會作出一個粗略的評估。看看衝刺計劃是否切實可行?要完成這些事項,現有的信息是否足夠?用戶故事拆分是否合理?在開發團隊進行評估時,建議摒棄傳統的「人天」評估法,採用故事點的方式,用斐波那契數列的數字(1,2,3,5,8,13,21……)的形式去評估。

評估時team需要首先確定一個用戶故事為作為評估的參照。另外,特別注意的是當評估的單個故事點大於21的時候,用戶故事需要進行再次拆分,單個用戶故事點數不超過8是最理性的狀態。

6. 衝刺計劃會

這是第一場真正意義上的Scrum會議。Team、Scrum Master、PO坐到一起,規劃衝刺的內容。作為軟體開發項目,進入規劃衝刺的用戶故事,用戶故事應該已拆分完成,並且完成了視覺設計。

衝刺周期一般是固定的,大部分是2至4周。團隊要從產品待辦事項列表優先級最高的用戶故事著手,看看一個衝刺迭代中能完成多少。

如果團隊已經開展過多個衝刺迭代,通過參考前幾次迭代中完成的「故事點數」,團隊可能預估到本次迭代完成的大概故事點數。「故事點數」相當於團隊的速度。Scrum Master與Team應努力在每一個衝刺迭代中提高這個數字。

對於衝刺目標,即在一個衝刺迭代需要完成的事項,team所有成員都應該形成共識。在衝刺計劃會上,PO需要告訴team用戶故事實現的優先級順序。team承諾在下一次衝刺迭代中他們能夠完成多少用戶故事。在衝刺的過程中,任何人不能單方面擅自變更衝刺內容。

7. 每日站立會

這是Scrum的活力源泉。站立會參加人員一般包括PO、Scrum Master、team。團隊每天在固定地點、固定時間進行內部溝通,時間一般為早晨,時長不超過15分鐘,且站立進行,Scrum Master向team成員提出下列問題:

你昨天完成了哪些工作?你今天計劃做哪些工作?目前的困難及障礙?

這樣做的意義在於:讓整個團隊清楚地知道在這一個衝刺周期內各項任務的進展,所有任務是否能夠按時完成。

Team的任務都不是自上而下分派的,而是自主決定、自願申領的。如果前一個任務沒有完成時,不能申領下一個任務,不能同時申領2個在當天不能完成的任務。

Scrum Master負責消除團隊面臨的障礙。

8. 項目看板及燃盡圖

在Scrum中,必須做到工作透明化,最常見的做法是實施項目看板制度。

有的團隊善於藉助第三方工具使用電子看板,比如Redmine看板,Leangoo看板;有的團隊樂於使用線下物理看板。

無論使用電子看板,還是物理看板,看板的欄目大致包括待辦事項、進行中事項以及已完成事項三個部分。隨著迭代進度的推進,由Team每天及時將事項轉移到對應看板欄目下。

讓工作透明化的另一個工具是燃盡圖。在這張圖中,一個軸代表工作量,另一個軸代表時間。每天Scrum Master都會記錄待完成的剩餘點數,而後畫在燃盡圖上。理想情況下,該圖是一條向下的曲線,隨著剩餘工作的完成,「燃盡」至零。

9. 功能演示

在《Scrum指南》中將此環節稱為Sprint評審會議,書中認為Sprint評審會議應該包括開發團隊演示完成的工作並解答關於所交付增量的問題、評審市場或者潛在的產品使用方式所帶來的接下來要做的最有價值的東西的改變、為下個產品版本功能或能力的發布評審時間表、預算、潛在功能和市場等多個會議主題。

會議一般在在本次迭代衝刺發布前召開。不過,從實踐來看,我更傾向於此次會議最重要的工作是功能和成果演示,驗證用戶故事的實現場景,並接受評價。

這是一場公開的會議,任何人都可以是參與者,不僅僅包括PO、Scrum Master及team,還包括利益相關者、業務方與管理者,乃至客戶。

團隊應該只展示那些符合「完成定義」的事項,也就是全部完成,不需要再做工作就能交付的成果。這個成果或許不是完整的產品,但至少是一項完整的、可以使用的功能。

10. 衝刺回顧會

衝刺回顧會一般在本次迭代發布之後的第二天召開,會議時間最好不做具體的限制。

衝刺回顧會要認真分析以下幾個問題:

發生了哪些有待改進的事;為什麼會發生那件事;為什麼我們當時忽略了;怎樣才能加快工作進度。

作為一個團隊,要讓這個衝刺回顧過程有效,團隊需要相互信任。必須記住基於項目和技術問題的討論和爭論;對事不對人,不當和事佬,鼓勵技術碰撞;不能把技術和業務討論牽扯到人身攻擊上去;抵制帶著有色眼睛看人,引導大家理性討論;勇敢接受別人的挑戰,接受自己的不完美 大家要對自己的流程和結果負責,要集思廣益,共同尋求問題解決之道。這一點是至關重要的。

最後,團隊確定一個最值得改善的地方,將其設定為下一個衝刺迭代的首要任務,當然,改善的結果必須通過「驗收測試」。你如何證明自己成功地完成了改善?你需要用具體的、可操作的方式界定什麼是「成功」,這樣,在下一個衝刺回顧會議中才能很快判斷出是否已完成改善。

上一個衝刺迭代結束之後,開始進入新的衝刺迭代。

三、實施Scrum帶來的變化

通過在Scrum項目中的實踐,給我們的團隊和項目組帶來的變化主要有:

1. 組織

在瀑布流程下,通常會設置包括業務方、產品經理、項目經理、開發人員、測試人員、互動設計師、視覺設計師等多個角色,由於強化了不同角色的定位,而且不同角色又隸屬於不同的職能部門,無形中增加了項目協同的難度。

在Scrum項目實施中,僅設置了PO小組、master和team團隊這樣的角色和組織,而且大家在一起集中辦公,很大程度上淡化了角色隸屬關係,形成了團隊合力和向心力。

2. 內聚

團隊合作的要旨是提高團隊的內聚性,內聚也體現在個人工作焦點上,避免了一個人同一時段身兼多責。每個人都需要長時間的深度思考和環境浸染,如果天天在會上趕會,必定是失敗的。

3. 節奏

用用戶故事和站立會、衝刺會的形式,重構項目過程,細緻而又綿密,靈活而又緊湊,減少時間死角,讓需求等人而非人等需求。

4. 儘早與客戶互動

實施Scrum,極大的縮短了發布周期,讓我們的用戶及早的感知產品,這對保持正確的產品航道有極大的幫助,也能更好的幫助公司做好戰略上的決策。

5. 透明

作為敏捷實踐,項目看板制度是必不可少的,通過項目看板制度,項目成員每天完成的任務情況一目了然,團隊目標感明確,顯著增強了工作的主動性和能動性。

6. 心態

深刻剖析和本地化執行scrum敏捷方法論,持續自省,自我革命,破除僵化流程,解除自我保護,項目團隊能夠「就事論事」的討論問題,解決了管理「人」的難題。

2018年,我們將繼續在用戶故事點數預評估,項目燃盡圖使用,代碼質量,持續集成、自動化等方面進行深入的探索。

如同《敏捷革命》所說的那樣:Scrum需要實踐和專注,只有持續不斷地付出努力,才能達到新的狀態。我們在前進的路上,我相信,我們會越來越好!

作者:張洪強,五阿哥(五礦阿里合資公司)PMO

本文由 @張洪強 原創發布於人人都是產品經理。未經許可,禁止轉載

題圖來自網絡

相關焦點

  • Scrum團隊如何選擇Scrum看板工具?
    Scrum 是一個用於開發和維護複雜產品的框架 ,是一個增量的、迭代的開發過程。在這個框架中,整個開發過程由若干個短的迭代周期組成,一個短的迭代周期稱為一個Sprint,每個Sprint的建議長度是2到4周(網際網路產品研發可以使用1周的Sprint)。
  • Scrum master:項目成功的關鍵角色
    隨著敏捷迅速成為了大多數公司的標準實踐,對scrum master的需求量開始變得很大。以下是對scrum master的角色定位、相關證書、期望薪資和職業機會的介紹。 Scrum是一個在軟體開發和其他項目中實現敏捷過程的強大框架。
  • Scrum Alliance國際Scrum中文認證和敏捷教練職業發展體系
    (譯者:Jacky Shen(CST & CTC), Jim Wang(CST), Bob Jiang(CST),歡迎轉載,轉載請註明譯者和來源 http://www.uperform.cn/scrum-alliance-scrum-certifications-chinese/)
  • 「項目管理英文」敏捷項目管理法之一-Scrum
    採用的是有時間限制的周期-Sprint周期,是scrum的重要組成部分,其設立了所有其他活動的框架。開發團隊—開發團隊在每一個Sprint構建產品的增量,並自發組織、授權管理自己的工作。團隊成員,預計會是跨職能,並能儘可能做到彼此互換。
  • Scrum Guide官方權威Scrum認證指南2017中文版-遊戲規則
    轉載請註明來自:https://www.uperform.cn/scrum-guide-chinese/,此版本由Jacky Shen修訂)Scrum 指南的目的Scrum 是用於開發和持續支持複雜產品的一個框架。本指南包含了 Scrum 的定義,其中包 括 Scrum 的角色、事件、工件,以及把它們組織在一起的規則。
  • 4大Scrum會議如何才能有意義?
    以Scrum為例,理解Scrum是什麼,和瀑布開發有什麼區別,有一個很好的框架概括——角色Roles儀式/會議Ceremonies產物Artefacts(圖片來源:https://www.visual-paradigm.com/scrum/what-are-scrum-ceremonies
  • 【教學中…】大師分享 Scrum 原汁原味
    課程介紹本套課程分為上下兩節——Scrum指南和Scrum Development Process,具體內容如下:(上)Scrum 指南它位於 http://www.scrumguides.org 網址,全書只有15頁的文件,最新版本為 July, 2013版中文版,名稱為「Scrum 的終極指南: 遊戲規則」。它針對Scrum 創始的目的、定義及理論做了完整的描述,學員可以拿來跟桌上眾多的Scrum 教本做一比較,自然可以很清楚的看出原創者的意圖,然後以此為依據就更容易對眾多Scrum書籍,之所以對許多問題的解題原委了。
  • Agile還是Scrum,這可真是個難題!
    實際上,大多數開設敏捷培訓的諮詢公司都有一個既得利益:概念模糊永久化。如果能將他們的特定框架和教的敏捷的整體概念融合在一起,他們可以使團隊更加依賴他們費用高昂的培訓。有些人可能會說,這樣敏捷與其他概念混在一起以至於變得沒有意義,但我認為此說法有失公允。如果你能區分開它們(我希望能幫到你!),敏捷的核心理念仍是十分有價值的工具,可用於思考如何區分有效團隊。
  • Scrum指南2017與2016之間的改動
    Scrum已經用來開發軟體、硬體、嵌入式軟體、交互功能網絡、自動駕駛汽車、學校、政府、市場、管理組織的運行以及我們日常生活中,作為個人及社會使用的幾乎每件事情。隨著技術、市場與環境的複雜性及它們的相互作用快速增長,Scrum在處理複雜性方面的實用性日益得到證實。在迭代增量式的知識轉移中,Scrum被證實特別有效。現在,Scrum廣泛應用於產品、服務及大型組織管理。
  • 2019年Scrum Master趨勢報告摘要
    這項調查基於Scrum Master 2017年薪資報告,其中增加了關於應用趨勢、擴展框架和Scrum互補實踐等主題的問題。Wolpers:首先,人們開始更頻繁地閱讀手冊——Scrum指南。敏捷轉型的世界變得如此複雜,以至於回到Scrum價值觀和經驗主義等第一原則已被證明有助於理清思路並找出問題的解決方案。
  • UX設計師在Scrum敏捷團隊中工作面臨的六大挑戰
    目前敏捷UX設計是一個重要的話題,網際網路上已有許多優秀的文章和指南,給了人們不少啟發。有些人認為,把敏捷UX設計與敏捷發獨立開來或許會更好。並且敏捷UX設計應該在敏捷開發之前執行。但目前可供前端開發選擇的樣式框架也比較多,便也減輕了UX設計師這一部分的工作量,但設計師與程式設計師之間還是要提前做好溝通和確定工作。在團隊中,程式設計師可以輕鬆找到設計師,並向TA詢問任何缺少的設計部分。
  • 《Agile Scrum 基礎指南》【二】
    上期傳送門:《Agile Scrum 基礎指南》解析帶你全面構建敏捷知識體系《Agile Scrum 基礎指南》作為 EXIN Agile Scrum Foundation 認證考試的官方教材,兼顧了專業性與通俗性。讀者可以更好的接觸到敏捷的相關知識。
  • 一隻豬的 Scrum 開發經歷
    本文不是講 Scrum 理論,而是從應用的角度,講述我自身 Scrum 實踐的經驗體會。理論運用到實踐中時,一定會有所變化。本文中根據我切身經歷,對理論略作刪減。2010年,我已經做了好幾年程式設計師,不過所遵循的開發流程一直是傳統的瀑布模型。
  • 敏捷實踐:Scrum的核心概念和基本實踐(一)
    Scrum是一種產品開發過程的模式,包括了過程中的具體實踐和角色定義,它也是一種計劃管理方式。本文主要介紹Scrum的核心概念和基本實踐,讓大家可以快速在團隊中開始運用Scrum的管理方式,並能初步看到採用Scrum的好處。一、迭代式增量開發迭代式增量開發是相對於瀑布式開發而言的。
  • 看來你對Scrum一無所知
    開發速度變成了一個不可思議的、幾乎是神話般的數字,開發人員在每個Sprint中都必須追求這個數字。在速度被打破的公司裡充斥著這樣的評論:· 為什麼我們這個Sprint的速度低於上一個Sprint? 你能提供一個合理的解釋嗎?· 速度停止增加。也許該僱傭一個新的Scrum管理員了?
  • 關於遊戲設計專業院校,你所不知道的 #6:UCSC 完成一個商業獨立遊戲 indienova
    張可天:「我叫張可天,南京南外人,本課畢業於 UIUC 電子電腦工程系,研究生畢業於 UCSC 遊戲與可玩傳媒系,現在在灣區 Narvalous Inc 擔任遊戲程式設計師。網上用的 id 是空力使或者 Aerohand。」