通過上圖我們可以看到Scrum作為各種敏捷實踐方法中最為常用的一種,今天我們也來聊一聊Scrum。
Scrum的歷史可以追溯到1986年《哈佛商業(yè)評論》中的一篇文章《新型的新產(chǎn)品開發(fā)策略》(The New New Product Development Game,竹內(nèi)弘高、野中郁次郎,1986)。這篇文章描述了像本田、佳能、富士施樂這樣的公司是如何通過可伸縮、基于團隊的并行產(chǎn)品開發(fā)方式開發(fā)出了世界一流的產(chǎn)品。文章同時強調(diào)了授權(quán)、自組織團隊的重要性,并概要描述了管理在開發(fā)過程中發(fā)揮的作用。
當(dāng)然,SCRUM這個詞沒有什么標(biāo)準(zhǔn)的中文解釋,它是來源于橄欖球中的一個爭球的動作,如下圖。
竹內(nèi)弘高和野中郁次郎在New New Product Development?Game文章首次提到將Scrum應(yīng)用與產(chǎn)品開發(fā),他們指出:傳統(tǒng)的“接力式”的開發(fā)模式已經(jīng)不能滿足快速靈活的市場需求,而整體或“橄欖球式”的方法——團隊作為一個整體前進,在團隊的內(nèi)部傳球并保持前進,這也許可以更好的滿足當(dāng)前激烈的市場競爭。
上圖是SCRUM的一個典型架構(gòu)圖,我們可以看到里面有很多要素,下面我們一一介紹這些要素。
Scrum的3355
3個角色
Product Owner:產(chǎn)品負(fù)責(zé)人,清楚的知道產(chǎn)品的愿景,需要對產(chǎn)品待辦列表的梳理,優(yōu)化,優(yōu)先級排序等負(fù)責(zé)。決定團隊每個沖刺要完成哪些任務(wù)。對于團隊非常重要,決定Why和What。一般可以對應(yīng)為現(xiàn)有的產(chǎn)品經(jīng)理和BA的角色。
Scrum Master:Scrum Master是Scrum教練和團隊帶頭人,確保團隊合理的運作Scrum,并幫助團隊掃除實施中的障礙。
Team:可以認(rèn)為是開發(fā)團隊,但是一個跨職能的團隊,能夠交付一個端到端的真正對客戶有價值的產(chǎn)品。
3個工件
Product Backlog:是指產(chǎn)品待辦事項的集合,其中事務(wù)有優(yōu)先級判斷,先處理優(yōu)先級高的事項。產(chǎn)品待辦列表源自于Scrum方法。在Scrum中,產(chǎn)品主管(Product Owner)收集來自于各方的需要、期望、訴求等等到產(chǎn)品待辦列表中,給定優(yōu)先級;當(dāng)沖刺計劃會議上,團隊從產(chǎn)品待辦列表中挑選其中事項組成沖刺待辦列表。常見的待辦事項表達形式是用戶故事。
Sprint Backlog:每個迭代的功能開發(fā)列表,PO會根據(jù)團隊的能力并按照產(chǎn)品待辦列表中的優(yōu)先級來選取每個沖刺要做的事情。團隊可以專注在每個迭沖刺要走的事情上而不被打斷。
Burndown chart:燃盡圖,在每個迭代顯示剩余工作時間和任務(wù)完成情況。
5個價值觀
專注:每個迭代只專注于迭代要完成的事情,團隊和個人的能力和精力是有限的,在有限的時間內(nèi)專注于最有價值的事情,以取得好的結(jié)果。
勇氣:要有勇氣去面對各種挑戰(zhàn)。
公開:團隊所有的進展,問題,阻礙都是對所有人可視化,透明的。這樣的團隊才是彼此尊重。同時也能暴露問題。
承諾:作為一個自組織團隊,在迭代開始的時候做出承諾,并在迭代中全力完成。
尊重:團隊是長期坐到一起,并且穩(wěn)定的,有助于加深彼此的了解和溝通。
5種工件
Sprint:沖刺,一個固定的時間周期(通常為2w-4w),團隊要盡可能在這個周期內(nèi)交付可以工作的軟件給客戶
sprint planning meeting:沖刺開始的時候,PO會和團隊一起從PB中選擇本次要做的任務(wù)/故事,并且會對團隊提出的疑問進行解釋和澄清。同時團隊會估算故事并分解成任務(wù),最后會形成本次的Sprint Backlog.
daily standupo meeting:每日站會,scrum為了加強團隊溝通,每天團隊都要選擇一個時間站在一起,互相交流彼此的進展和問題,以便及時解決出現(xiàn)的問題,同時也能讓團隊隨時了解我們離沖刺目標(biāo)還有多遠(yuǎn)。
sprint review:在sprint周期最后,需要進行一次評審會議,讓團隊向產(chǎn)品負(fù)責(zé)人和利益相關(guān)者展示已完成的功能。sprint審核的大部分實踐用于團隊成員展示功能、回答利益相關(guān)者對展示的疑問并記錄所期望的更改。評審會議可以吸引相關(guān)利益者的關(guān)注,讓其他人了解團隊在做些什么,并得到重要反饋。做演示也會迫使開發(fā)團隊真正完成一些工作。
retrospective meeting:回顧會議,通常在reivew會議之后開始,有團隊成員在沖刺結(jié)束之后對上個迭代進行總結(jié),同時提出一些改進方案,這是一個持續(xù)改進的過程。
SCRUM的其他一些要素:
user story:用戶故事,因為敏捷要求每個特性都是對客戶有價值的,所以以用戶故事的方式來設(shè)計特性,通常是作為客戶,我要實現(xiàn)A功能,以至于我可以達到什么目的的結(jié)構(gòu)。
task:每個迭代中為了開發(fā)一個user story,將其分解為一些task,比如說我要開發(fā)一個協(xié)議,其中需要幾個task,包括搭建服務(wù)器,找一些開源代碼,搭建自動化測試框架,編碼,測試任務(wù),便于更小粒度的track每個迭代的進展。
release planning:在某些大型組織,可能更關(guān)注release級別的產(chǎn)品交付,所以每個release之前要進行整個release的plan,決定這個release的PB。
points:故事點數(shù),代表用戶故事的大小,要記住,這里的大小不代表開發(fā)時間,只是一個相對的用戶故事的復(fù)雜度,工作量大小。因為很難理解,所以scrum team要建立一個基準(zhǔn)的user story,作為一個points,然后其他的user story和它進行相對比較。這個points大部分時間用來作為評估team的交付能力。
SCRUM開發(fā)流程:
Scrum 是一個用于開發(fā)和維持復(fù)雜產(chǎn)品的框架 ,是一個增量的、迭代的開發(fā)過程。在這個框架中,整個開發(fā)過程由若干個短的迭代周期組成,一個短的迭代周期稱為一個Sprint,每個Sprint的建議長度是2到4周(互聯(lián)網(wǎng)產(chǎn)?品研發(fā)可以使用1周的Sprint)。在Scrum中,使用產(chǎn)品Backlog來管理產(chǎn)品的需求,產(chǎn)品backlog是一個按照商業(yè)價值排序的需求列表,列表條目的體現(xiàn)形式通常為用戶故事。Scrum團隊總是先開發(fā)對客戶具有較高價值的需求?。在Sprint中,Scrum團隊從產(chǎn)品Backlog中挑選最高優(yōu)先級的需求進行開發(fā)。挑選的需求在Sprint計劃會議上經(jīng)過討論、分析和估算得到相應(yīng)的任務(wù)列表,我們稱它為Sprint backlog。在每個迭代結(jié)束時,Scrum團隊將遞交?潛在可交付的產(chǎn)品增量。
SCRUM各個角色之間的關(guān)系和作用:
PO和team的關(guān)系:一個人拿到了客戶的一個項目,開發(fā)一個產(chǎn)品,他就是PO,他想找一個團隊開做這個產(chǎn)品,但是現(xiàn)在有A團隊和B團隊,A團隊跟PO說,ok,交給我吧,3個月后你過來,我們把產(chǎn)品給你.而B團隊說,我們每個月都可以讓你看一下我們的產(chǎn)品,但是可能一開始功能不完善,但是可以工作的,然后你可以把我們的產(chǎn)品給客戶看,如果運氣好的話客戶可能先給你點錢呢。
如果你作為PO,你會選擇哪個團隊呢?對了,A就是傳統(tǒng)的開發(fā)團隊,而B則是我們的scrum team.
scrum master和team還有PO的關(guān)系:
個人給SM有以下幾個定義:
Team Coach: 不僅在在流程上輔導(dǎo)團隊,還要幫助大家接受敏捷開發(fā)理念,推動團隊按照敏捷價值觀和原則所倡導(dǎo)的方法來做出決策。
Servant Leader:Scrum Master服務(wù)于團隊,幫助團隊解決工作中的困難,引導(dǎo)團隊自組織的高效完成每日工作,但是并不是團隊的管理者。
Team Protector: 作為團隊保護者,SM7要敢于說不,盡量保證團隊在每個沖刺中不被打擾,如果發(fā)現(xiàn)有影響團隊工作的臨時任務(wù),一定要站出來保護團隊。
SCRUM大事表:
Jeff Sutherland在 1993年首次在Easel公司定義了用于了軟件開發(fā)行業(yè)的Scrum流程,并開始實施
1995年Jeff Sutherland和Ken Schwaber規(guī)范化了Scrum框架,并在OOPSLA 95上公開發(fā)布。
2001年 敏捷宣言及原則發(fā)布、敏捷聯(lián)盟成立,Scrum是其中一種敏捷方法。
2001年,Ken Schwaber和Mike Beedle推出第一本Scrum書籍《Scrum敏捷軟件開發(fā)》。
2002年Ken Schwaber 和Mike Cohn共同創(chuàng)辦了Scrum聯(lián)盟。