通過上圖我們可以看到Scrum作為各種敏捷實(shí)踐方法中最為常用的一種,今天我們也來聊一聊Scrum鹏溯。
Scrum的歷史可以追溯到1986年《哈佛商業(yè)評(píng)論》中的一篇文章《新型的新產(chǎn)品開發(fā)策略》(The New New Product Development Game,竹內(nèi)弘高、野中郁次郎唾戚,1986)。這篇文章描述了像本田待诅、佳能叹坦、富士施樂這樣的公司是如何通過可伸縮、基于團(tuán)隊(duì)的并行產(chǎn)品開發(fā)方式開發(fā)出了世界一流的產(chǎn)品卑雁。文章同時(shí)強(qiáng)調(diào)了授權(quán)募书、自組織團(tuán)隊(duì)的重要性,并概要描述了管理在開發(fā)過程中發(fā)揮的作用测蹲。
當(dāng)然莹捡,SCRUM這個(gè)詞沒有什么標(biāo)準(zhǔn)的中文解釋,它是來源于橄欖球中的一個(gè)爭球的動(dòng)作扣甲,如下圖篮赢。
竹內(nèi)弘高和野中郁次郎在New New Product Development?Game文章首次提到將Scrum應(yīng)用與產(chǎn)品開發(fā),他們指出:傳統(tǒng)的“接力式”的開發(fā)模式已經(jīng)不能滿足快速靈活的市場需求文捶,而整體或“橄欖球式”的方法——團(tuán)隊(duì)作為一個(gè)整體前進(jìn)荷逞,在團(tuán)隊(duì)的內(nèi)部傳球并保持前進(jìn),這也許可以更好的滿足當(dāng)前激烈的市場競爭粹排。
上圖是SCRUM的一個(gè)典型架構(gòu)圖,我們可以看到里面有很多要素涩澡,下面我們一一介紹這些要素顽耳。
Scrum的3355
3個(gè)角色
Product Owner:產(chǎn)品負(fù)責(zé)人,清楚的知道產(chǎn)品的愿景,需要對產(chǎn)品待辦列表的梳理射富,優(yōu)化膝迎,優(yōu)先級(jí)排序等負(fù)責(zé)。決定團(tuán)隊(duì)每個(gè)沖刺要完成哪些任務(wù)胰耗。對于團(tuán)隊(duì)非常重要限次,決定Why和What。一般可以對應(yīng)為現(xiàn)有的產(chǎn)品經(jīng)理和BA的角色柴灯。
Scrum Master:Scrum Master是Scrum教練和團(tuán)隊(duì)帶頭人卖漫,確保團(tuán)隊(duì)合理的運(yùn)作Scrum,并幫助團(tuán)隊(duì)掃除實(shí)施中的障礙赠群。
Team:可以認(rèn)為是開發(fā)團(tuán)隊(duì)羊始,但是一個(gè)跨職能的團(tuán)隊(duì),能夠交付一個(gè)端到端的真正對客戶有價(jià)值的產(chǎn)品查描。
3個(gè)工件
Product Backlog:是指產(chǎn)品待辦事項(xiàng)的集合突委,其中事務(wù)有優(yōu)先級(jí)判斷,先處理優(yōu)先級(jí)高的事項(xiàng)冬三。產(chǎn)品待辦列表源自于Scrum方法匀油。在Scrum中,產(chǎn)品主管(Product Owner)收集來自于各方的需要勾笆、期望敌蚜、訴求等等到產(chǎn)品待辦列表中,給定優(yōu)先級(jí)匠襟;當(dāng)沖刺計(jì)劃會(huì)議上钝侠,團(tuán)隊(duì)從產(chǎn)品待辦列表中挑選其中事項(xiàng)組成沖刺待辦列表。常見的待辦事項(xiàng)表達(dá)形式是用戶故事酸舍。
Sprint Backlog:每個(gè)迭代的功能開發(fā)列表帅韧,PO會(huì)根據(jù)團(tuán)隊(duì)的能力并按照產(chǎn)品待辦列表中的優(yōu)先級(jí)來選取每個(gè)沖刺要做的事情。團(tuán)隊(duì)可以專注在每個(gè)迭沖刺要走的事情上而不被打斷啃勉。
Burndown chart:燃盡圖忽舟,在每個(gè)迭代顯示剩余工作時(shí)間和任務(wù)完成情況。
5個(gè)價(jià)值觀
專注:每個(gè)迭代只專注于迭代要完成的事情淮阐,團(tuán)隊(duì)和個(gè)人的能力和精力是有限的叮阅,在有限的時(shí)間內(nèi)專注于最有價(jià)值的事情,以取得好的結(jié)果泣特。
勇氣:要有勇氣去面對各種挑戰(zhàn)浩姥。
公開:團(tuán)隊(duì)所有的進(jìn)展,問題状您,阻礙都是對所有人可視化勒叠,透明的兜挨。這樣的團(tuán)隊(duì)才是彼此尊重。同時(shí)也能暴露問題眯分。
承諾:作為一個(gè)自組織團(tuán)隊(duì)拌汇,在迭代開始的時(shí)候做出承諾,并在迭代中全力完成弊决。
尊重:團(tuán)隊(duì)是長期坐到一起噪舀,并且穩(wěn)定的,有助于加深彼此的了解和溝通飘诗。
5種工件
Sprint:沖刺,一個(gè)固定的時(shí)間周期(通常為2w-4w),團(tuán)隊(duì)要盡可能在這個(gè)周期內(nèi)交付可以工作的軟件給客戶
sprint planning meeting:沖刺開始的時(shí)候与倡,PO會(huì)和團(tuán)隊(duì)一起從PB中選擇本次要做的任務(wù)/故事,并且會(huì)對團(tuán)隊(duì)提出的疑問進(jìn)行解釋和澄清疚察。同時(shí)團(tuán)隊(duì)會(huì)估算故事并分解成任務(wù)蒸走,最后會(huì)形成本次的Sprint Backlog.
daily standupo meeting:每日站會(huì),scrum為了加強(qiáng)團(tuán)隊(duì)溝通貌嫡,每天團(tuán)隊(duì)都要選擇一個(gè)時(shí)間站在一起比驻,互相交流彼此的進(jìn)展和問題,以便及時(shí)解決出現(xiàn)的問題,同時(shí)也能讓團(tuán)隊(duì)隨時(shí)了解我們離沖刺目標(biāo)還有多遠(yuǎn)岛抄。
sprint review:在sprint周期最后别惦,需要進(jìn)行一次評(píng)審會(huì)議,讓團(tuán)隊(duì)向產(chǎn)品負(fù)責(zé)人和利益相關(guān)者展示已完成的功能夫椭。sprint審核的大部分實(shí)踐用于團(tuán)隊(duì)成員展示功能掸掸、回答利益相關(guān)者對展示的疑問并記錄所期望的更改。評(píng)審會(huì)議可以吸引相關(guān)利益者的關(guān)注蹭秋,讓其他人了解團(tuán)隊(duì)在做些什么扰付,并得到重要反饋。做演示也會(huì)迫使開發(fā)團(tuán)隊(duì)真正完成一些工作仁讨。
retrospective meeting:回顧會(huì)議羽莺,通常在reivew會(huì)議之后開始,有團(tuán)隊(duì)成員在沖刺結(jié)束之后對上個(gè)迭代進(jìn)行總結(jié)洞豁,同時(shí)提出一些改進(jìn)方案盐固,這是一個(gè)持續(xù)改進(jìn)的過程。
SCRUM的其他一些要素:
user story:用戶故事丈挟,因?yàn)槊艚菀竺總€(gè)特性都是對客戶有價(jià)值的刁卜,所以以用戶故事的方式來設(shè)計(jì)特性,通常是作為客戶曙咽,我要實(shí)現(xiàn)A功能蛔趴,以至于我可以達(dá)到什么目的的結(jié)構(gòu)。
task:每個(gè)迭代中為了開發(fā)一個(gè)user story,將其分解為一些task,比如說我要開發(fā)一個(gè)協(xié)議例朱,其中需要幾個(gè)task,包括搭建服務(wù)器夺脾,找一些開源代碼之拨,搭建自動(dòng)化測試框架茉继,編碼咧叭,測試任務(wù),便于更小粒度的track每個(gè)迭代的進(jìn)展烁竭。
release planning:在某些大型組織菲茬,可能更關(guān)注release級(jí)別的產(chǎn)品交付,所以每個(gè)release之前要進(jìn)行整個(gè)release的plan,決定這個(gè)release的PB派撕。
points:故事點(diǎn)數(shù)婉弹,代表用戶故事的大小,要記住终吼,這里的大小不代表開發(fā)時(shí)間镀赌,只是一個(gè)相對的用戶故事的復(fù)雜度,工作量大小际跪。因?yàn)楹茈y理解商佛,所以scrum team要建立一個(gè)基準(zhǔn)的user story,作為一個(gè)points姆打,然后其他的user story和它進(jìn)行相對比較良姆。這個(gè)points大部分時(shí)間用來作為評(píng)估team的交付能力。
SCRUM開發(fā)流程:
Scrum 是一個(gè)用于開發(fā)和維持復(fù)雜產(chǎn)品的框架 幔戏,是一個(gè)增量的玛追、迭代的開發(fā)過程。在這個(gè)框架中闲延,整個(gè)開發(fā)過程由若干個(gè)短的迭代周期組成痊剖,一個(gè)短的迭代周期稱為一個(gè)Sprint,每個(gè)Sprint的建議長度是2到4周(互聯(lián)網(wǎng)產(chǎn)?品研發(fā)可以使用1周的Sprint)垒玲。在Scrum中陆馁,使用產(chǎn)品Backlog來管理產(chǎn)品的需求,產(chǎn)品backlog是一個(gè)按照商業(yè)價(jià)值排序的需求列表侍匙,列表?xiàng)l目的體現(xiàn)形式通常為用戶故事氮惯。Scrum團(tuán)隊(duì)總是先開發(fā)對客戶具有較高價(jià)值的需求?。在Sprint中想暗,Scrum團(tuán)隊(duì)從產(chǎn)品Backlog中挑選最高優(yōu)先級(jí)的需求進(jìn)行開發(fā)妇汗。挑選的需求在Sprint計(jì)劃會(huì)議上經(jīng)過討論、分析和估算得到相應(yīng)的任務(wù)列表说莫,我們稱它為Sprint backlog杨箭。在每個(gè)迭代結(jié)束時(shí),Scrum團(tuán)隊(duì)將遞交?潛在可交付的產(chǎn)品增量储狭。
SCRUM各個(gè)角色之間的關(guān)系和作用:
PO和team的關(guān)系:一個(gè)人拿到了客戶的一個(gè)項(xiàng)目互婿,開發(fā)一個(gè)產(chǎn)品捣郊,他就是PO,他想找一個(gè)團(tuán)隊(duì)開做這個(gè)產(chǎn)品慈参,但是現(xiàn)在有A團(tuán)隊(duì)和B團(tuán)隊(duì)呛牲,A團(tuán)隊(duì)跟PO說,ok,交給我吧驮配,3個(gè)月后你過來娘扩,我們把產(chǎn)品給你.而B團(tuán)隊(duì)說,我們每個(gè)月都可以讓你看一下我們的產(chǎn)品壮锻,但是可能一開始功能不完善琐旁,但是可以工作的,然后你可以把我們的產(chǎn)品給客戶看猜绣,如果運(yùn)氣好的話客戶可能先給你點(diǎn)錢呢灰殴。
如果你作為PO,你會(huì)選擇哪個(gè)團(tuán)隊(duì)呢掰邢?對了牺陶,A就是傳統(tǒng)的開發(fā)團(tuán)隊(duì),而B則是我們的scrum team.
scrum master和team還有PO的關(guān)系:
個(gè)人給SM有以下幾個(gè)定義:
Team Coach: 不僅在在流程上輔導(dǎo)團(tuán)隊(duì)尸变,還要幫助大家接受敏捷開發(fā)理念义图,推動(dòng)團(tuán)隊(duì)按照敏捷價(jià)值觀和原則所倡導(dǎo)的方法來做出決策。
Servant Leader:Scrum Master服務(wù)于團(tuán)隊(duì)召烂,幫助團(tuán)隊(duì)解決工作中的困難碱工,引導(dǎo)團(tuán)隊(duì)自組織的高效完成每日工作,但是并不是團(tuán)隊(duì)的管理者奏夫。
Team Protector: 作為團(tuán)隊(duì)保護(hù)者怕篷,SM7要敢于說不,盡量保證團(tuán)隊(duì)在每個(gè)沖刺中不被打擾酗昼,如果發(fā)現(xiàn)有影響團(tuán)隊(duì)工作的臨時(shí)任務(wù)廊谓,一定要站出來保護(hù)團(tuán)隊(duì)。
SCRUM大事表:
Jeff Sutherland在 1993年首次在Easel公司定義了用于了軟件開發(fā)行業(yè)的Scrum流程麻削,并開始實(shí)施
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)盟。