再談“敏捷”與“瀑布”在產(chǎn)品開(kāi)發(fā)過(guò)程中的反思
在產(chǎn)品開(kāi)發(fā)過(guò)程中,敏捷開(kāi)發(fā)和瀑布模型都是常用的流程和開(kāi)發(fā)方法,這兩種方法是什么?細(xì)節(jié)是什么?這篇文章,為我們進(jìn)行了解答。
成本、時(shí)間和質(zhì)量是項(xiàng)目管理的鐵三角,項(xiàng)目管理的核心目標(biāo)是平衡好這三者之間的關(guān)系,盡量確保軟件項(xiàng)目能夠在可控的成本范圍之內(nèi),符合質(zhì)量要求地按期交付。
這里的質(zhì)量我覺(jué)得包含了兩方面:
- 功能的完成度與穩(wěn)定性;
- 用戶需求的滿足程度。
在一些大型項(xiàng)目的交付過(guò)程中,面對(duì)交付過(guò)程中頻繁變化的需求,按照既定合同內(nèi)的需求以瀑布模式開(kāi)發(fā),雖然能發(fā)揮瀑布開(kāi)發(fā)的優(yōu)勢(shì),但在用戶需求滿意度方面肯定會(huì)有所損失,更嚴(yán)重的會(huì)導(dǎo)致返工改造、驗(yàn)收不通過(guò)。
相對(duì)“瀑布”模式的重,“敏捷開(kāi)發(fā)”是一種應(yīng)對(duì)頻繁需求變化、快速響應(yīng)的輕量開(kāi)發(fā)模式,在以“瀑布模式”開(kāi)發(fā)的項(xiàng)目中,將“敏捷”的理念引入,發(fā)揮各自優(yōu)勢(shì),會(huì)對(duì)整個(gè)項(xiàng)目順利的交付起到積極的作用。
本篇先講下“敏捷開(kāi)發(fā)”與“瀑布開(kāi)發(fā)”的工作流程、適用場(chǎng)景、各自優(yōu)缺點(diǎn),然后將二者融合,談一下在實(shí)際項(xiàng)目交付過(guò)程中的應(yīng)用思考。
一、瀑布模式
瀑布模式是一種經(jīng)典的線性開(kāi)發(fā)模式,在傳統(tǒng)的軟件項(xiàng)目交付過(guò)程中被大量使用。
瀑布模式的整個(gè)項(xiàng)目周期是確定的,按照項(xiàng)目開(kāi)發(fā)的時(shí)間可以分為規(guī)劃階段、需求分析階段、軟件設(shè)計(jì)階段、編碼階段、測(cè)試驗(yàn)收階段、上線階段運(yùn)維階段等若干里程碑。
下面這張圖生動(dòng)地描述了瀑布開(kāi)發(fā)的模式:
客戶需要一輛代步工具,需要按照事先規(guī)劃的方案,經(jīng)過(guò)漫長(zhǎng)的研發(fā),最終給客戶交付一輛汽車。
前期的方案是足夠好,但在此過(guò)程中客戶無(wú)法盡早體驗(yàn)產(chǎn)品,最終交付后產(chǎn)品可能不是客戶實(shí)際想要的,從這個(gè)角度看風(fēng)險(xiǎn)很高。
一個(gè)典型的瀑布模式的產(chǎn)品研發(fā)流程
適用場(chǎng)景:
瀑布模式比較適合需求比較清晰的項(xiàng)目開(kāi)發(fā),比如簽訂合同的項(xiàng)目制交付,一般情況下合同內(nèi)的需求都是確定的,乙方按照合同內(nèi)的需求,按時(shí)交付即可。
理論上需求和設(shè)計(jì)方案確定后,在開(kāi)發(fā)過(guò)程中需要嚴(yán)格執(zhí)行,需求變動(dòng)需要執(zhí)行變更流程,或者另簽一個(gè)補(bǔ)充協(xié)議。
優(yōu)點(diǎn)
- 由于需求相對(duì)比較明確,在前期可以對(duì)系統(tǒng)整體架構(gòu)、擴(kuò)展性進(jìn)行整體、全面的設(shè)計(jì);
- 團(tuán)隊(duì)的目標(biāo)相對(duì)明確,按照里程碑節(jié)點(diǎn)順序推進(jìn),向目標(biāo)前進(jìn)的效率會(huì)比較高,易于管理和監(jiān)督;
- 每個(gè)階段投入的人力不同,不同崗位的人員可以分批投入項(xiàng)目。
缺點(diǎn)
- 對(duì)業(yè)務(wù)需求的快速變化,靈活性不足,尤其是對(duì)于處于摸索階段的新業(yè)務(wù),這種變化是不可避免。
- 比如系統(tǒng)試運(yùn)行、業(yè)務(wù)推進(jìn)過(guò)程中會(huì)產(chǎn)生很多新的需求,我們之前按照合同內(nèi)需求規(guī)劃的設(shè)計(jì)可能要推翻或者有較大的修改,尤其在項(xiàng)目中后期,很可能將會(huì)導(dǎo)致項(xiàng)目延期,超出合同成本預(yù)算。
- 由于產(chǎn)品從研發(fā)到上線是一個(gè)線性的推進(jìn)過(guò)程,在此期間客戶沒(méi)有真正看到過(guò)、體驗(yàn)過(guò)產(chǎn)品,最后上線,客戶很可能對(duì)最終的產(chǎn)品不滿意,重新改造的成本較高。
二、敏捷模式
敏捷模式是針對(duì)瀑布模式太重提出的一種小步迭代、快速反饋的開(kāi)發(fā)模式,能有效的提高軟件的開(kāi)發(fā)效率,應(yīng)對(duì)市場(chǎng)的快速變化。
下面這張圖生動(dòng)地描述了瀑布開(kāi)發(fā)的模式。
客戶想要一輛代步工具,為了快速滿足可以出行的需求,按照敏捷的理念會(huì)先提供滑板、然后通過(guò)快速迭代逐步提供自行車、摩托車、小汽車。
在此過(guò)程中將產(chǎn)品快速投入市場(chǎng),根據(jù)市場(chǎng)反饋,調(diào)整方向,雖然一開(kāi)始提供的不是最優(yōu)解決方案,但是一直在正確的方向上前進(jìn),不至于跑偏。
敏捷的核心關(guān)鍵詞包括快速響應(yīng)、迭代、增量交付、漸進(jìn)式、面對(duì)面溝通、快速反饋與調(diào)整等。
敏捷項(xiàng)目管理通常采用Scrum敏捷框架進(jìn)行實(shí)施,以固定時(shí)間盒的方式快速迭代,在實(shí)踐中比較常用的是雙周迭代的模式,在一個(gè)沖刺內(nèi)完成增量開(kāi)發(fā)的交付。
“增量開(kāi)發(fā)主要是一塊接著一塊地構(gòu)建一個(gè)系統(tǒng)。一部分功能先被開(kāi)發(fā)出來(lái),然后另一部分功能被加入前一部分功能,以此類推?!?/p>
《敏捷宣言》中的價(jià)值觀:
個(gè)體和互動(dòng)高于流程和工具;
工作的軟件高于詳盡的文檔;
客戶合作高于合同談判;
響應(yīng)變化高于遵循計(jì)劃。
Scrum作為一個(gè)輕量級(jí)的團(tuán)隊(duì)協(xié)同工作方式,一個(gè)沖刺從開(kāi)始準(zhǔn)備到完成主要由以下幾個(gè)關(guān)鍵活動(dòng)組成:
1. 需求梳理,挑選需求并編寫(xiě)需求說(shuō)明
一般由產(chǎn)品經(jīng)理在沖刺開(kāi)始之前從Product Backlog(類似需求池,Scrum中叫Product Backlog)中按照優(yōu)先級(jí)挑選在本次沖刺(Sprint)內(nèi)需求(這些需求可能為特性、用戶故事、缺陷等,在Scrum中被稱為PBI)。
產(chǎn)品負(fù)責(zé)人和開(kāi)發(fā)團(tuán)隊(duì)要對(duì)當(dāng)前沖刺準(zhǔn)備實(shí)現(xiàn)的需求及沖刺目標(biāo)達(dá)成一致意見(jiàn),在此期間產(chǎn)品負(fù)責(zé)人需要完成產(chǎn)品方案、編寫(xiě)需求說(shuō)明,并與需求方確認(rèn)。
2. 需求澄清會(huì)(沖刺計(jì)劃)
產(chǎn)品經(jīng)理將當(dāng)前Sprint中的需求向研發(fā)團(tuán)隊(duì)澄清,在澄清的過(guò)程中可以根據(jù)實(shí)際情況對(duì)需求的范圍、方案進(jìn)行調(diào)整。
每個(gè)需求澄清完畢,具體模塊的研發(fā)人員可對(duì)需求的進(jìn)行工作量的估算(故事點(diǎn)、規(guī)劃撲克牌具體的估算方法這里不再具體說(shuō)明)。
如估算的工作量過(guò)高,研發(fā)人員需要說(shuō)明原因,最終會(huì)議結(jié)束確定本沖刺內(nèi)交付范圍,正式開(kāi)啟沖刺。
3. 任務(wù)分解
一般需求澄清回后,開(kāi)發(fā)人員會(huì)將每個(gè)需要完成的需求(特性)分解成一組任務(wù),這組任務(wù)及相關(guān)的PBI組成了“沖刺列表”,開(kāi)發(fā)團(tuán)隊(duì)給出完成每項(xiàng)任務(wù)所需工作量的估算值(通常以小時(shí)計(jì))。
4. 沖刺執(zhí)行(開(kāi)發(fā)實(shí)施與測(cè)試)
在團(tuán)隊(duì)沖刺的內(nèi)容達(dá)成一致意見(jiàn)后,研發(fā)團(tuán)隊(duì)需要根據(jù)產(chǎn)品方案進(jìn)行技術(shù)方案的設(shè)計(jì),執(zhí)行為了完成特性而所需的所有任務(wù)開(kāi)發(fā)的工作。
5. 每日例會(huì)
在沖刺開(kāi)始的每一天,研發(fā)團(tuán)隊(duì)會(huì)每天早上進(jìn)行站會(huì)(通常不會(huì)超過(guò)15分鐘)。
團(tuán)隊(duì)成員每天輪流回答下面三個(gè)問(wèn)題,昨天我完成了什么?今天計(jì)劃做什么工作?有什么障礙讓我無(wú)法取得進(jìn)展?
通過(guò)每日站會(huì),每個(gè)人都能了解全局,知道發(fā)生了什么,沖刺目標(biāo)的進(jìn)展如何,是否需要幫助團(tuán)隊(duì)解決一些問(wèn)題,實(shí)現(xiàn)一個(gè)沖刺內(nèi)快速、流動(dòng)的工作流。
6. 沖刺評(píng)審
沖刺周期的后期,團(tuán)隊(duì)給產(chǎn)品負(fù)責(zé)人和其他業(yè)務(wù)需求干系人、客戶演示完成的成果,讓各方了解已經(jīng)交付的增量,檢視和調(diào)整產(chǎn)品,同時(shí)業(yè)務(wù)互相交流,收集反饋并及時(shí)調(diào)整。
7. 沖刺回顧會(huì)
沖刺回顧會(huì)是檢視并調(diào)整過(guò)程的時(shí)機(jī),開(kāi)發(fā)團(tuán)隊(duì)、產(chǎn)品負(fù)責(zé)人、ScrumMaste一起討論,在上個(gè)沖刺中哪些過(guò)程是需要改進(jìn)的。
需要注意的是沖刺回顧會(huì)不是吐槽、追責(zé)的會(huì)議,目的是幫助Scrum團(tuán)隊(duì)成長(zhǎng)、下一個(gè)沖刺能夠持續(xù)的改進(jìn)。
適用場(chǎng)景
敏捷項(xiàng)目管理適用于業(yè)務(wù)需求變化頻繁、比較適合創(chuàng)新型項(xiàng)目、市場(chǎng)需求變化快速的項(xiàng)目,主打一個(gè)“快速迭代”,在一些互聯(lián)網(wǎng)公司、自研產(chǎn)品的公司比較常用。
優(yōu)點(diǎn)
能夠快速響應(yīng)變化、提高客戶滿意度、減少項(xiàng)目風(fēng)險(xiǎn),同時(shí)還能提高團(tuán)隊(duì)協(xié)作能力、加快產(chǎn)品上市時(shí)間。
缺點(diǎn)
對(duì)于一些成熟業(yè)務(wù),由于追求快速響應(yīng),前期在系統(tǒng)架構(gòu)設(shè)計(jì)上并不一定那么完美,另外對(duì)團(tuán)隊(duì)協(xié)作能力、敏捷理念的認(rèn)可度要求比較高。
三、在項(xiàng)目交付過(guò)程中的思考
在實(shí)際的項(xiàng)目交付過(guò)程中甲乙雙方立場(chǎng)的不一樣,甲方期望乙方能在合同周期內(nèi)盡可能多的滿足需求,解決更多問(wèn)題,而乙方期望能控制成本,如期交付,迫于甲方交付驗(yàn)收的壓力,又不得不接受頻繁的需求變更。
從實(shí)際經(jīng)驗(yàn)來(lái)看,有如下原因?qū)?dǎo)致成本、質(zhì)量、時(shí)間陷入三難的境地。
外部原因:
- 甲方業(yè)務(wù)比較新,存在邊用邊發(fā)現(xiàn)新問(wèn)題的情況,合同外的、變更需求時(shí)有發(fā)生;
- 甲方不配合,如不配合調(diào)研、系統(tǒng)使用不積極、不提供數(shù)據(jù)等等;
- 實(shí)施過(guò)程中非研發(fā)類工作耗費(fèi)太多時(shí)間,如數(shù)據(jù)處理、甲方匯報(bào)文件、配合業(yè)務(wù)開(kāi)展等臨時(shí)性工作安排、業(yè)務(wù)代運(yùn)營(yíng)等。
內(nèi)部原因:
- 合同簽訂前銷售的對(duì)需求的過(guò)渡承諾,初設(shè)方案的不完善;
- 系統(tǒng)規(guī)劃設(shè)計(jì)階段對(duì)整體應(yīng)用架構(gòu)、技術(shù)架構(gòu)設(shè)計(jì)的不合理;
- 需求分析不合格,設(shè)計(jì)出來(lái)的系統(tǒng)未能徹底解決甲方的問(wèn)題,導(dǎo)致重復(fù)返工、打補(bǔ)??;
- 缺乏有效的項(xiàng)目管理流程,多人協(xié)作變得混亂失控,缺少風(fēng)險(xiǎn)跟蹤,研發(fā)過(guò)程變得脆弱,導(dǎo)致研發(fā)效率和質(zhì)量不高。
原因很多,本篇僅從項(xiàng)目管理的角度探討,如何平衡成本、質(zhì)量、時(shí)間的矛盾,達(dá)到甲乙雙方共贏的目的。
有一種方式我叫做“大瀑布下的小敏捷”,將“敏捷開(kāi)發(fā)”與“瀑布開(kāi)發(fā)”相結(jié)合,發(fā)揮各自的優(yōu)勢(shì),是一個(gè)實(shí)際可用的手段。
“大瀑布下的小敏捷”既能夠按照“瀑布模式”的里程碑節(jié)點(diǎn),交付目標(biāo)相對(duì)明確,又能發(fā)揮“敏捷開(kāi)發(fā)”快速響應(yīng)需求的變化、持續(xù)交付的優(yōu)勢(shì),提升客戶滿意度。
在大的項(xiàng)目周期內(nèi)有明確的啟動(dòng)、需求調(diào)研、系統(tǒng)設(shè)計(jì)、編碼開(kāi)發(fā)、上線交付的里程碑節(jié)點(diǎn),整體上看是瀑布模式的開(kāi)發(fā)。
對(duì)于實(shí)際交付過(guò)程中頻繁變更的新需求和合同內(nèi)的老需求統(tǒng)一放進(jìn)“產(chǎn)品代辦清單”(Product Backlog),按照敏捷開(kāi)發(fā)的模式拆分成一個(gè)個(gè)固定時(shí)間盒的沖刺,當(dāng)下的沖刺內(nèi)為優(yōu)先級(jí)最高的需求,通過(guò)一個(gè)個(gè)沖刺完成增量產(chǎn)品的交付,直至項(xiàng)目交付。
敏捷開(kāi)發(fā)是為了讓團(tuán)隊(duì)達(dá)成一種在固定時(shí)間內(nèi)持續(xù)交付的共識(shí),一般一個(gè)沖刺開(kāi)始時(shí),該沖刺內(nèi)的需求一般不允許變更。
但有些特殊情況,為了配合甲方匯報(bào)(一些G端項(xiàng)目常見(jiàn)),這些臨時(shí)需求優(yōu)先級(jí)會(huì)變得非常高。
此時(shí)研發(fā)團(tuán)隊(duì)可能正處在當(dāng)前沖刺的開(kāi)發(fā)中,不得不將主要精力投入配合匯報(bào)。
無(wú)論“敏捷開(kāi)發(fā)”還是“瀑布開(kāi)發(fā)”,流程是死的,人是活的,不同的公司、不同的業(yè)務(wù)可以根據(jù)實(shí)際情況靈活調(diào)整,切不可生搬硬套。
參考資料:《Scrum精髓》
作者:賣油翁,來(lái)源公眾號(hào):數(shù)字化洞見(jiàn)
本文由@數(shù)字化洞見(jiàn) 授權(quán)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來(lái)源于Unsplash,基于CC0協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)。
- 目前還沒(méi)評(píng)論,等你發(fā)揮!