Scrum敏捷開發(fā)原則,包括12項(xiàng):
1.盡早、持續(xù)地交付有價(jià)值的軟件或產(chǎn)品來使用戶滿意
前使用產(chǎn)品需求說明書或者測試用例來編寫詳細(xì)的需求,敏捷開發(fā)使用用戶故事來羅列需求,規(guī)劃迭代用戶故事時(shí)必須按照優(yōu)先級(jí)安排。
通過頻繁迭代與用戶形成良好的合作關(guān)系,及時(shí)反饋,不斷完善和提高產(chǎn)品質(zhì)量。敏捷開發(fā)小組關(guān)注的是完成和交付具有用戶價(jià)值的功能,對(duì)于不能給用戶帶來價(jià)值的功能,堅(jiān)決不做。
2.? 即使到了開發(fā)后期,也歡迎改變需求
傳統(tǒng)的瀑布式開發(fā)最大的缺點(diǎn)之一是對(duì)變化及變更的響應(yīng)比較慢,難度大且成本高。
敏捷開發(fā)過程利用變化來為用戶創(chuàng)造競爭優(yōu)勢,參與者不怕變化,他們認(rèn)為改變需求是好事情,因?yàn)檫@些改變意味著他們更了解市場需求,更加以用戶和市場需求為導(dǎo)向,與市場需求保持同步。
3.經(jīng)常交付可以工作的軟件,交付時(shí)間間隔越短越好
傳統(tǒng)的瀑布式開發(fā)最大的缺點(diǎn)之一就是產(chǎn)品投放市場的時(shí)間太慢,一款產(chǎn)品的研發(fā)周期太長,很有可能會(huì)錯(cuò)失市場良機(jī),而敏捷開發(fā)過程強(qiáng)調(diào)小步快跑,不斷試錯(cuò)。
4.在整個(gè)項(xiàng)目開發(fā)期間,業(yè)務(wù)人員和開發(fā)人員必須天天在一起工作
有過異地溝通經(jīng)驗(yàn)的人都知道,異地溝通成本很高,而且溝通的效率有時(shí)也很低,如果業(yè)務(wù)人員和開發(fā)人員天天在一起工作,有什么問題好面對(duì)面地溝通解決,這樣效率高,成本低,也有利于團(tuán)隊(duì)內(nèi)部信息的同步,減少不必要的麻煩。
5.圍繞被激勵(lì)起來的個(gè)人構(gòu)建項(xiàng)目
業(yè)務(wù)和技術(shù)是引起不確定的兩個(gè)主要方面,人是第三個(gè)方面,而業(yè)務(wù)和技術(shù)又必須由人來執(zhí)行,所以能夠激勵(lì)人解決這些問題是解決不確定性的關(guān)鍵。要使個(gè)人的目標(biāo)和團(tuán)隊(duì)的目標(biāo)一致,就需要調(diào)動(dòng)每個(gè)人的積極性,以個(gè)人為中心構(gòu)建項(xiàng)目,提供所需的環(huán)境、支持與信任。
6.在團(tuán)隊(duì)內(nèi)部,最具有效果且富有效率的傳遞信息的方法是面對(duì)面的交談
在十幾或者二十幾個(gè)人組成的團(tuán)隊(duì)中,書面文檔是一種比較合適的傳遞信息和溝通交流的途徑,而敏捷團(tuán)隊(duì)一般不會(huì)有很多人,因?yàn)榇髨F(tuán)隊(duì)實(shí)施敏捷方法時(shí)也會(huì)分成多個(gè)小的敏捷團(tuán)隊(duì),所以大量的文檔交流和溝通其實(shí)并不合適,面對(duì)面的交談反而更快速、有效,溝通成本低,效率高。
7.工作的軟件或產(chǎn)品是首要的進(jìn)度度量標(biāo)準(zhǔn)
敏捷過程最終關(guān)注的交付物必須是用戶可用的。一般的工作都比較容易衡量任務(wù)進(jìn)展,比如,完成多少百分比了,還剩下多少百分比,在產(chǎn)品功能沒有編碼和測試完成之前,都不能以編寫了多少行代碼,運(yùn)行了多少個(gè)測試用例來度量這個(gè)產(chǎn)品功能是否完成了。衡量這個(gè)功能是否完成的首要標(biāo)準(zhǔn)就是這個(gè)功能可以工作了,對(duì)用戶來說已經(jīng)可以使用了。
8.敏捷過程提倡平穩(wěn)的開發(fā)節(jié)奏,發(fā)起人、開發(fā)者和用戶應(yīng)能保持一個(gè)長期、恒定的開發(fā)速度
在國內(nèi)有很多互聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)公司,在沒有實(shí)施Scrum敏捷開發(fā)之前,開發(fā)人員加班加點(diǎn)、熬通宵是司空見慣的,在實(shí)施了Scrum敏捷開發(fā)之后,開發(fā)人員一到下班時(shí)間就消失得無影無蹤了。敏捷開發(fā)過程希望能夠可持續(xù)地進(jìn)行開發(fā),開發(fā)速度不會(huì)隨著迭代的任務(wù)不同而不同,這與人在跑步的時(shí)候一樣,突然加速快跑沖刺肯定消耗大量體力,也就是說,不平穩(wěn)的開發(fā)節(jié)奏消耗的能力會(huì)比較多。
9.不斷地關(guān)注優(yōu)秀的技能和好的設(shè)計(jì)會(huì)增強(qiáng)敏捷能力
對(duì)于在敏捷過程經(jīng)過驗(yàn)證的工具、技術(shù)解決方案、開發(fā)模式等都可以加以總結(jié),在后續(xù)的迭代過程中都可以靈活應(yīng)用,提高開發(fā)的效率,增強(qiáng)敏捷開發(fā)的能力。
10.簡單化是根本(不做過度設(shè)計(jì)和預(yù)測)
需求千變?nèi)f化,我們不可能預(yù)期后面的需求會(huì)如何變化,所以不可能一開始就構(gòu)建一個(gè)完美的架構(gòu)來適應(yīng)以后的所有變化,想做到一勞永逸,也是非常不現(xiàn)實(shí)的。敏捷開發(fā)團(tuán)隊(duì)不會(huì)去構(gòu)建明天的軟件或產(chǎn)品,而是把注意力集中在通過最簡單的方法完成現(xiàn)在需要解決的問題。
11.最好的構(gòu)架、需求和設(shè)計(jì)出自于自組織的團(tuán)隊(duì)
在自組織團(tuán)隊(duì)中,管理者不再發(fā)號(hào)施令,而是讓團(tuán)隊(duì)自身尋找最佳的工作方式來完成工作。
在經(jīng)歷了初期的磨合后,成員才會(huì)開始對(duì)團(tuán)隊(duì)共同的工作理念與文化形成一個(gè)基本的認(rèn)識(shí)和理解,團(tuán)隊(duì)內(nèi)會(huì)逐漸形成規(guī)矩,而且這些規(guī)矩是不言而喻的。
自組織團(tuán)隊(duì)是一個(gè)自動(dòng)自發(fā)、有著共同目標(biāo)和工作文化的團(tuán)隊(duì),這樣的團(tuán)隊(duì)總是在向它的組織做出承諾。
12.團(tuán)隊(duì)會(huì)定期對(duì)前一個(gè)迭代進(jìn)行反省總結(jié),以便調(diào)整自己的行為,提高開發(fā)效率
由于很多不確定性因素會(huì)導(dǎo)致計(jì)劃失敗,比如,項(xiàng)目成員增減、用戶需求的改變、競爭者對(duì)我們的影響等都會(huì)讓我們做出不同的反應(yīng)。敏捷開發(fā)不是基于預(yù)定義的工作方式,而是基于經(jīng)驗(yàn)性的方式,對(duì)以上這些變化,小組通過不斷總結(jié)、反省和調(diào)整,來保持團(tuán)隊(duì)的敏捷性。