一、簡(jiǎn)介
敏捷開發(fā)(Agile Development)是一種以人為核心,通過(guò)迭代完善蚣驼、循序漸進(jìn)快速交付的開發(fā)方法。敏捷開發(fā)從1990年代開始逐漸引起廣泛關(guān)注相艇,相對(duì)于“非敏捷”颖杏,更強(qiáng)調(diào)開發(fā)團(tuán)隊(duì)與業(yè)務(wù)專家之間的緊密協(xié)作、面對(duì)面的溝通(認(rèn)為比書面的文檔更有效)坛芽、頻繁交付新的軟件版本留储、緊湊而自我組織型的團(tuán)隊(duì)、能夠很好地適應(yīng)需求變化的代碼編寫和團(tuán)隊(duì)組織方法咙轩,也更注重人在軟件開發(fā)中的作用获讳。
敏捷開發(fā)以用戶的需求進(jìn)化為核心,采用迭代活喊、循序漸進(jìn)的方法進(jìn)行軟件開發(fā)丐膝。
敏捷開發(fā)借助互聯(lián)網(wǎng)浪潮開始流行起來(lái),相比瀑布模式钾菊,敏捷無(wú)疑更加貼近互聯(lián)網(wǎng)時(shí)代背景下快速發(fā)展變化的市場(chǎng)環(huán)境以及業(yè)務(wù)需求帅矗。
1.1 敏捷的定義
《敏捷宣言》創(chuàng)始人之一的Jim Highsmith曾經(jīng)這樣描述“敏捷”:
敏捷是制造并響應(yīng)變化,從而在動(dòng)蕩的商業(yè)環(huán)境中創(chuàng)造利潤(rùn)的能力煞烫。
敏捷是平衡靈活性和穩(wěn)定性的能力浑此。
從Jim Highsmith對(duì)敏捷的描述中可以看出,變化孕育著創(chuàng)新红竭,而創(chuàng)新則需要一定的靈活性來(lái)保證尤勋。但敏捷絕不意味著要犧牲質(zhì)量和秩序來(lái)?yè)Q取速度,敏捷≠倉(cāng)促茵宪,它是追求既快又好的一種思維和方法最冰。
1.2 敏捷開發(fā)模型
敏捷開發(fā)模型是基于敏捷宣言定義的價(jià)值觀和原則的一系列方法和實(shí)踐的總稱。自組織稀火、跨職能團(tuán)隊(duì)運(yùn)用適合他們自身環(huán)境的實(shí)踐進(jìn)行演進(jìn)得出解決方案暖哨。
1.3 敏捷宣言四大價(jià)值觀
2001年2月,Martin Fowler凰狞,Jim Highsmith等17位著名的軟件開發(fā)專家齊聚在美國(guó)猶他州雪鳥滑雪勝地篇裁,舉行了一次敏捷方法發(fā)起者和實(shí)踐者的聚會(huì)。在這次會(huì)議上赡若,他們正式提出了敏捷(Agile)這個(gè)概念达布,并共同簽署了敏捷宣言,包含四大價(jià)值觀
逾冬。
敏捷宣言價(jià)值觀
- 個(gè)體和互動(dòng)勝過(guò)流程和工具
- 工作的軟件勝過(guò)詳盡的文檔
- 客戶合作勝過(guò)合同談判
- 響應(yīng)變化勝過(guò)遵循計(jì)劃
也就是說(shuō)黍聂,盡管右項(xiàng)有一定的價(jià)值躺苦,我們更重視左項(xiàng)的價(jià)值。 右項(xiàng)的狀態(tài)和瀑布模型的理念相一致产还,而敏捷就是為了改變這些理念而提出了全新的敏捷思想匹厘。
1.4 敏捷的十二條原則
十二條基本原則
按照三個(gè)思想層次
記憶:
價(jià)值驅(qū)動(dòng)
- 客戶滿意,及早的交付價(jià)值脐区。
- 進(jìn)度標(biāo)準(zhǔn)愈诚,可用的工作軟件。
- 快速交付牛隅,較短的研發(fā)周期炕柔。
以人為本
- 共同工作,跨職能協(xié)同辦公媒佣。
- 激發(fā)個(gè)體汗唱,提供支持和信任。
- 高效溝通丈攒,面對(duì)面最有效率哩罪。
- 持續(xù)開發(fā),與用戶共同決策巡验。
協(xié)作迭代
- 擁抱變化际插,為提升競(jìng)爭(zhēng)優(yōu)勢(shì)。
- 卓越技術(shù)显设,持續(xù)的技術(shù)進(jìn)步框弛。
- 簡(jiǎn)潔藝術(shù),減少不必要工作捕捂。
- 定期復(fù)盤瑟枫,自我學(xué)習(xí)和提效。
- 自組織化指攒,產(chǎn)出最佳的成果慷妙。
1.5 敏捷實(shí)踐方法
在《敏捷宣言》和原則的思維模式和價(jià)值觀下,隨著各行各業(yè)的快速發(fā)展允悦,敏捷開發(fā)方法也隨之發(fā)生了演變膝擂,直到現(xiàn)在,我們所熟知的敏捷開發(fā)方法可以粗略的統(tǒng)計(jì)出九個(gè)流派隙弛,每個(gè)流派都在不同的行業(yè)領(lǐng)域發(fā)揮著不可替代的作用架馋,它們是:Srcum、XP全闷、水晶叉寂、DSDM、FDD总珠、AUP屏鳍、精益伊约、看板以及OpenUP。下圖是項(xiàng)目管理協(xié)會(huì)(PMI)《敏捷實(shí)踐指南》中羅列的部分常見方法孕蝉,我們平時(shí)最常用的是 Scrum
管理方法:
二、敏捷的特點(diǎn)和邏輯
2.1 敏捷的特點(diǎn)
- 特點(diǎn):
敏捷方法的整體性
敏捷方法從誕生之日起腌逢,就已經(jīng)通過(guò)《敏捷宣言》和原則等高度精煉的文字闡釋了其精髓降淮,在這里,我們嘗試用過(guò)程模型將提煉后的12項(xiàng)原則組合為一個(gè)整體:
可以看出敏捷方法充分考慮了開發(fā)過(guò)程中的各種要素搏讶,但聚焦于通過(guò)迭代交付的方式解決需求變化的業(yè)務(wù)場(chǎng)景佳鳖,并強(qiáng)調(diào)了客戶參與這一要點(diǎn)。
自組織團(tuán)隊(duì)和以人為本
自組織團(tuán)隊(duì)和以人為本是敏捷方法的另一大特點(diǎn)媒惕,也是敏捷項(xiàng)目管理的核心系吩。敏捷原則5和原則11描述的就是這兩方面。
自組織的團(tuán)隊(duì)不是沒有領(lǐng)導(dǎo)的團(tuán)隊(duì)妒蔚,而是一種團(tuán)隊(duì)的領(lǐng)導(dǎo)方式穿挨。
自組織團(tuán)隊(duì)具有自主權(quán),要自我選擇如何最好地完成工作肴盏。自組織團(tuán)隊(duì)結(jié)合了自由與責(zé)任科盛,面對(duì)不確定與各種矛盾,要始終堅(jiān)持實(shí)現(xiàn)交付目標(biāo)菜皂。
在自組織團(tuán)隊(duì)中贞绵,團(tuán)隊(duì)成員需要具有自律性,個(gè)人負(fù)責(zé)管理自己的工作量恍飘,對(duì)于如何“交付結(jié)果”榨崩,團(tuán)隊(duì)成員保有較大的靈活性,但他們要對(duì)結(jié)果負(fù)責(zé)章母,并在制定的靈活框架內(nèi)工作母蛛。
根本上講,敏捷方法關(guān)注人以及人和人之間的相互交流乳怎,通過(guò)營(yíng)造一種環(huán)境溯祸,讓個(gè)人能力充分釋放,從而創(chuàng)造出優(yōu)秀的產(chǎn)品舞肆。要注意到焦辅,最終創(chuàng)造優(yōu)秀產(chǎn)品的是人,而不是流程或方法椿胯。
- 優(yōu)點(diǎn):
- 更快交付價(jià)值
- 更低的風(fēng)險(xiǎn)
- 擁抱變化
- 更好的質(zhì)量
- 持續(xù)改進(jìn)
- 更高的客戶滿意度
- 更高的團(tuán)隊(duì)滿意度
- 缺點(diǎn):
- 很難進(jìn)行準(zhǔn)確的資源規(guī)劃
- 很難準(zhǔn)確的定義“輕量的“或必要的文檔
- 很難把握整體產(chǎn)品的一致性
- 很難預(yù)測(cè)有限的終點(diǎn)
- 很難有效地進(jìn)行度量
- 適用場(chǎng)景:
對(duì)于時(shí)間期限緊張筷登,高難度、高度新穎性(獨(dú)特性)的項(xiàng)目哩盲,建議可以采用敏捷管理的方式前方。
新的產(chǎn)品狈醉、問(wèn)題和之前未做過(guò)的工作都具有探索性,它要求不同領(lǐng)域的專家協(xié)作來(lái)解決問(wèn)題惠险。這類不確定的問(wèn)題變化速度快苗傅,復(fù)雜性和風(fēng)險(xiǎn)也高,并不適合用傳統(tǒng)的計(jì)劃型方法來(lái)應(yīng)對(duì)班巩。在這種場(chǎng)景下渣慕,可以考慮應(yīng)用敏捷的方法。
敏捷方法始于軟件行業(yè)抱慌,但敏捷思想的應(yīng)用并不需要局限于此逊桦。凡是需求不明確或頻繁變化、需要客戶更多參與的場(chǎng)景抑进,都是敏捷方法的用武之地强经。
《敏捷實(shí)踐指南》中提供了一種敏捷適用性篩選工具,可以幫助大家來(lái)評(píng)估自己的業(yè)務(wù)是否適合采用敏捷方法寺渗。
2.2 敏捷背后的邏輯
在敏捷方法的認(rèn)識(shí)過(guò)程中匿情,我們可以體會(huì)到兩種思維方式:
不同的思維方式會(huì)產(chǎn)生不同的行為,小到一個(gè)產(chǎn)品信殊,大到世界觀码秉,思維方式對(duì)人類的影響是非常深刻的。
但我們?cè)诖酥皇窃谔接懏a(chǎn)品開發(fā)的方法鸡号,搞清楚什么場(chǎng)景下采用哪種思維方式转砖,進(jìn)而創(chuàng)造或選用適合的方法,開發(fā)出客戶所期待的產(chǎn)品鲸伴,才是我們所追求的目標(biāo)府蔗。羅伯特·G.庫(kù)珀在2016年提出了敏捷門徑混合(Agile-Stage-Gate Hybrid)模型,這種將兩種產(chǎn)品開發(fā)思維方式結(jié)合的嘗試汞窗,給我們很好的啟示姓赤。
三、Scrum方法(迭代式增量軟件開發(fā)過(guò)程)
3.1 Scrum的由來(lái)
Scrum一詞來(lái)自于橄欖球運(yùn)動(dòng)中的“帶球過(guò)人”仲吏。在橄欖球比賽中不铆,攻守雙方每次在各自的沖刺前,都會(huì)制定一個(gè)明確的攻守計(jì)劃裹唆,這個(gè)計(jì)劃僅適用于每一次的沖刺誓斥,而每次的沖刺都非常簡(jiǎn)短,可能是一次傳球许帐、可能是一沖撞劳坑,還有可能是一次沖刺或得分,因此在制定計(jì)劃時(shí)成畦,團(tuán)隊(duì)只明確本次沖刺的目標(biāo)是什么距芬,具體的技戰(zhàn)術(shù)細(xì)節(jié)則有每位運(yùn)動(dòng)員自行決定涝开,這也依賴于運(yùn)動(dòng)員本身的經(jīng)驗(yàn)和基本素質(zhì)。
3.2 Scrum的生命周期
Scrum相比瀑布模型框仔,與之不同的是舀武,Scrum并不是將開發(fā)過(guò)程劃分為需求、設(shè)計(jì)离斩、編碼银舱、測(cè)試、運(yùn)維等線性階段捐腿,而是采用了一種迭代式的、增量的開發(fā)過(guò)程柿顶。Scrum開發(fā)過(guò)程包含很多關(guān)鍵元素茄袖,每次迭代都包含跨不同階段的跨職能團(tuán)隊(duì):
- 需求收集和分析,來(lái)自于組織外部嘁锯、或組織內(nèi)部宪祥。
- 產(chǎn)品負(fù)責(zé)人負(fù)責(zé)記錄這些需求到產(chǎn)品待辦事項(xiàng)列表中。
- 產(chǎn)品負(fù)責(zé)人按照價(jià)值優(yōu)先級(jí)排列這些待辦事項(xiàng)家乘。
- 開發(fā)團(tuán)隊(duì)按照價(jià)值優(yōu)先級(jí)側(cè)重選擇要開發(fā)的任務(wù)蝗羊。
- 選好的任務(wù)在沖刺前的沖刺規(guī)劃會(huì)上進(jìn)行討論、分析和估算仁锯。
- 開發(fā)團(tuán)隊(duì)將確定好的任務(wù)放到?jīng)_刺代辦事項(xiàng)列表中耀找。
- 進(jìn)入沖刺(開發(fā))。
- 快速交付有價(jià)值的產(chǎn)品业崖。
- 總結(jié)經(jīng)驗(yàn)/教訓(xùn)野芒。
3.2.1 迭代式開發(fā)生命周期
聽說(shuō)過(guò)敏捷的同學(xué)一定都聽說(shuō)過(guò)迭代這個(gè)東西。有的人說(shuō)我們要迭代一個(gè)版本双炕,有的人說(shuō)我們要在這個(gè)迭代周期內(nèi)完成什么狞悲,不管它指的是具體的軟件版本,還是一段時(shí)間妇斤,這兩字的含義其實(shí)都是一樣的摇锋,那就是在整個(gè)項(xiàng)目開發(fā)過(guò)程中,切分出來(lái)的一個(gè)一個(gè)的小時(shí)間段站超。這一個(gè)時(shí)間段就是一次迭代荸恕。通過(guò)一次次的迭代,讓整個(gè)項(xiàng)目更加清晰死相。最出名的針對(duì)迭代的概念的圖示就是這個(gè)圖戚炫。
迭代就是不斷豐富細(xì)節(jié)的過(guò)程。每一次的迭代媳纬,我們都應(yīng)該讓這個(gè)項(xiàng)目更加的清晰明了双肤,細(xì)節(jié)也一步步地完善施掏。
3.2.2 增量式開發(fā)生命周期
迭代和增量是所有敏捷教程都會(huì)說(shuō)的東西,因?yàn)檫@兩個(gè)東西很多人容易搞混茅糜。增量實(shí)際上是不斷的添加待開始項(xiàng)目的產(chǎn)品的模塊功能七芭。就像搭積木一樣地將不同的模板拼成一個(gè)完整的產(chǎn)品。同樣地蔑赘,也有一張圖是專門針對(duì)增量這個(gè)概念的狸驳。
迭代的時(shí)候,有輪廓缩赛,不斷完善細(xì)節(jié)耙箍。而增量,沒有整體輪廓酥馍,上來(lái)就是細(xì)節(jié)完整的一個(gè)部分辩昆,不斷地一部分一部分地完成,最終形成一個(gè)完整的產(chǎn)品旨袒。
3.2.3 混合式開發(fā)生命周期
將上面的迭代和增量合起來(lái)汁针,也就是在一次迭代中同時(shí)包含著增量,這樣的形式就是混合式的生命周期 砚尽。這種情況下可以很好地運(yùn)用這兩種開發(fā)形式的優(yōu)點(diǎn)施无。其實(shí),我們目前大部分公司中的迭代沖刺都是這種混合式的生命周期的開發(fā)形式必孤。在每次迭代中猾骡,我們添加的新功能模塊其實(shí)就是在整個(gè)項(xiàng)目的輪廓中不斷添加完善細(xì)節(jié)。
此外敷搪,在混合的時(shí)候卓练,每次迭代也可以看做是一次傳統(tǒng)的開發(fā)過(guò)程,總之购啄,混合就是各種混合襟企,吸收各家優(yōu)勢(shì)。
3.3 Scrum的核心要素
3.3.1 三個(gè)工件及作用
- 產(chǎn)品待辦事項(xiàng)列表
- 沖刺待辦事項(xiàng)列表
- 燃盡圖
3.3.2 五個(gè)相關(guān)事件及具體內(nèi)容
- 沖刺規(guī)劃會(huì)
- 沖刺
- 每日站會(huì)
- 沖刺評(píng)審會(huì)
- 沖刺回顧會(huì)
3.3.3 三個(gè)相關(guān)角色及角色職責(zé)
產(chǎn)品負(fù)責(zé)人
主要負(fù)責(zé)和客戶溝通確定產(chǎn)品的功能和達(dá)到要求的標(biāo)準(zhǔn)狮含,并指定軟件的發(fā)布日期和交付的內(nèi)容顽悼,同時(shí)有權(quán)力接受或拒絕開發(fā)團(tuán)隊(duì)的工作成果,一般是由產(chǎn)品經(jīng)理?yè)?dān)任几迄。流程管理員
問(wèn)題清道夫蔚龙!主要負(fù)責(zé)整個(gè)Scrum流程在項(xiàng)目中的順利實(shí)施和進(jìn)行,以及清除擋在客戶和開發(fā)工作之間的溝通障礙映胁,使得客戶可以直接驅(qū)動(dòng)開發(fā)木羹。開發(fā)團(tuán)隊(duì)
開發(fā)主力!主要負(fù)責(zé)軟件產(chǎn)品在Scrum規(guī)定流程下進(jìn)行開發(fā)工作。人數(shù)控制在5~10人左右坑填,每個(gè)成員可能負(fù)責(zé)不同的技術(shù)方面抛人,但要求每成員必須要有很強(qiáng)的自我管理能力,同時(shí)具有一定的表達(dá)能力脐瑰;不論過(guò)程只問(wèn)結(jié)果妖枚!只要能達(dá)到目標(biāo),不論任何工作時(shí)間苍在、方式绝页。
? 由 Leung 寫于 2023 年 4 月 17 日
? 參考:NPDP學(xué)習(xí)心得系列三十四:新產(chǎn)品開發(fā)流程——敏捷中的Scrum方法(二)
常見開發(fā)模型-敏捷開發(fā)與瀑布開發(fā)模型詳解
產(chǎn)品攻略系列:敏捷開發(fā)方法解讀
《敏捷項(xiàng)目管理-創(chuàng)造創(chuàng)新產(chǎn)品》