瀑布模型、敏捷方法的對(duì)立統(tǒng)一從20世紀(jì)70年代怕是就出現(xiàn)了,本質(zhì)是在不同的角度不同的粒度去對(duì)項(xiàng)目管理提出的方法論,都是實(shí)現(xiàn)目的的手段。站在今天,我們是否可以用一個(gè)新的名稱和模型來(lái)統(tǒng)一取代呢?
一、瀑布模型vs敏捷方法簡(jiǎn)述
1. 瀑布模型
瀑布模型是將軟件生存周期的各項(xiàng)活動(dòng)規(guī)定為按固定順序而連接的若干階段工作,形如瀑布流水,最終得到軟件產(chǎn)品。1970年溫斯頓·羅伊斯(Winston Royce)提出了著名的“瀑布模型”,直到80年代早期,它一直是唯一被廣泛采用的軟件開發(fā)模型。
核心思想:
瀑布模型核心思想是按工序?qū)?wèn)題化簡(jiǎn),將功能的實(shí)現(xiàn)與設(shè)計(jì)分開,便于分工協(xié)作,即采用結(jié)構(gòu)化的分析與設(shè)計(jì)方法將邏輯實(shí)現(xiàn)與物理實(shí)現(xiàn)分開。將軟件生命周期劃分為制定計(jì)劃、需求分析、軟件設(shè)計(jì)、程序編寫、軟件測(cè)試和運(yùn)行維護(hù)等六個(gè)基本活動(dòng),并且規(guī)定了它們自上而下、相互銜接的固定次序,如同瀑布流水,逐級(jí)下落。
瀑布模型有以下優(yōu)點(diǎn)
1)為項(xiàng)目提供了按階段劃分的檢查點(diǎn),或者叫做里程碑。
2)每個(gè)階段嚴(yán)格區(qū)分,前一個(gè)不完成不進(jìn)行下一個(gè),當(dāng)前一完成后,您只需要去關(guān)注后續(xù)階段。
3)可在迭代模型中應(yīng)用瀑布模型。增量迭代應(yīng)用于瀑布模型。迭代1解決最大的問(wèn)題。每次迭代產(chǎn)生一個(gè)可運(yùn)行的版本,同時(shí)增加更多的功能。每次迭代必須經(jīng)過(guò)質(zhì)量和集成測(cè)試。
4)它提供了一個(gè)模板,這個(gè)模板使得分析、設(shè)計(jì)、編碼、測(cè)試和支持的方法可以在該模板下有一個(gè)共同的指導(dǎo)。
5)瀑布模型把開發(fā)人員定義為流水線上的工人。比較適合規(guī)模化、流程化的大項(xiàng)目,便于管理效率提升,充分降低人的因素,將人作為螺絲釘功能存在具備可替換性而不影響項(xiàng)目的推進(jìn)。
瀑布模型有以下缺點(diǎn)
1)各個(gè)階段的劃分完全固定,階段之間產(chǎn)生大量的文檔,極大地增加了工作量。
2)由于開發(fā)模型是線性的,用戶只有等到整個(gè)過(guò)程的末期才能見(jiàn)到開發(fā)成果,從而增加了開發(fā)風(fēng)險(xiǎn)。(變化的外部市場(chǎng)和用戶在C端市場(chǎng)非常普遍,B端則相對(duì)穩(wěn)定)
3)通過(guò)過(guò)多的強(qiáng)制完成日期和里程碑來(lái)跟蹤各個(gè)項(xiàng)目階段。
4)瀑布模型的突出缺點(diǎn)是不適應(yīng)用戶需求的變化。
瀑布模型有個(gè)重要前提是假設(shè)條件固定,按照既定的條件和目標(biāo)往前推進(jìn)直至標(biāo)的;好處當(dāng)然是程式化,管理效率高,減少了人的因素;缺點(diǎn)就是那個(gè)要命的前提假設(shè)。
2. 敏捷方法
首先回答#敏捷#方法是不是什么情況都適用?
答案當(dāng)然是否定的,適用背景大概如下:
①新興市場(chǎng)、產(chǎn)品、行業(yè),充滿X,很多都是未知的,你的產(chǎn)品不成熟、用戶不成熟、市場(chǎng)也不成熟,都在認(rèn)知成長(zhǎng)過(guò)程中
②產(chǎn)品生命周期短、需求變化快、不可控因素增多
所以,我們不得不保持以下原則:
- 你得用盡量小的腳步,這樣你才能靈活(想想凌波微步)即時(shí)調(diào)整方向;
- 你得以少為多,化繁為簡(jiǎn),也就是MVP最小可用單元,你想吃火鍋的時(shí)候或許1個(gè)饅頭也可以
- 你得明白唯一的不變就是變,擁抱變化(阿里巴巴價(jià)值觀中就有這么重要的一條)
- 你得做這一步的時(shí)候想著下一步,或者說(shuō)為了做下一步做了這一步(比如微信當(dāng)年推出的打飛機(jī)游戲,其實(shí)主要是為了讓你升級(jí)版本,用的連環(huán)套)
- 你得找杠桿大的feature,力求四兩撥千斤
- 你得時(shí)刻確保你的用戶(直接用戶、間接用戶、支持性用戶)想要,你是保持接觸的
3. 瀑布、敏捷圖形抽象
對(duì)于兩種模型:
①瀑布模型像是一條直線,給定了初始方向和力,然后沿著線條往前單向推進(jìn),直奔原定的目標(biāo),如下圖(雖然很可能達(dá)到目標(biāo)時(shí)候,目標(biāo)已經(jīng)沒(méi)有意義了,就好比你現(xiàn)在要潛心開發(fā)一個(gè)新汽車發(fā)動(dòng)機(jī)可以提高很多燃油效率,但是顯然新能源的趨勢(shì)不可阻擋,你的產(chǎn)品面世之時(shí),說(shuō)不定汽油發(fā)動(dòng)機(jī)都幾乎沒(méi)有市場(chǎng)了)
②敏捷方法像是一個(gè)螺旋線,每個(gè)小圈就是一次迭代過(guò)程,在朝著目標(biāo)推進(jìn)的過(guò)程中,采用了盡量小的渦旋前進(jìn)模式,像是對(duì)每一個(gè)小成果的一次驗(yàn)證,迭代-修正-迭代不斷往復(fù)推進(jìn),顯然對(duì)于多變的背景是更為適用的。如圖:
敏捷強(qiáng)調(diào)擁抱變化,瞬息萬(wàn)變的時(shí)代,哪有不變的前提。就像最近的買菜大戰(zhàn),誰(shuí)想到前兩年還是小玩家先烈般的探索,倒下一批又一批,今年后半段大戶就一并涌入了,大戶也沒(méi)想到剛涌入國(guó)家調(diào)控就出了。
敏捷vs瀑布,下面這張流傳的圖片很形象的展示給了我們答案,嚴(yán)格的階段劃分+一始而終的前進(jìn),如果缺乏必要的中間驗(yàn)證和接觸,后果是多么的離譜……
瀑布和敏捷2個(gè)陣營(yíng)還進(jìn)行過(guò)大辯論,網(wǎng)絡(luò)上相關(guān)內(nèi)容也是紛紛擾擾,到最后的結(jié)果也是你中有我我中有你,各有優(yōu)劣。
假如提出1個(gè)新的模型方法,是不是就可以完美解決了呢?
二、流體模型
一個(gè)兼具瀑布模型和敏捷方法于一體的模型設(shè)想,這個(gè)靈感來(lái)源于大學(xué)時(shí)候流體力學(xué)那門學(xué)科。
1. 物理學(xué)角度看流體模型
我們先從流體力學(xué)的角度展開,如上圖,湍流和層流都是流體的一種流動(dòng)狀態(tài):
- 【瀑布狀態(tài)】當(dāng)流速很小時(shí),流體分層流動(dòng),互不混合,稱為層流,也稱為穩(wěn)流或片流;
- 【混沌狀態(tài)】逐漸增加流速,流體的流線開始出現(xiàn)波浪狀的擺動(dòng),擺動(dòng)的頻率及振幅隨流速的增加而增加,此種流況稱為過(guò)渡流;
- 【敏捷狀態(tài)】當(dāng)流速增加到很大時(shí),流線不再清楚可辨,在流場(chǎng)中有許多小漩渦,層流被破壞,相鄰流層間不但有滑動(dòng),還有混合,從而形成湍流,又稱為亂流、紊流或擾流。
2. 流體模型的拆解
流體模型——正是基于瀑布和敏捷的兩種理念的交融:
①瀑布狀態(tài)(層流狀態(tài))
如同流體模型中的層流狀態(tài),這時(shí)候流速很小,也就是外界環(huán)境相對(duì)穩(wěn)定不存在多變的條件、復(fù)雜的背景。整個(gè)產(chǎn)品開發(fā)和項(xiàng)目管理流程按照有序的狀態(tài)和嚴(yán)格的先后次序進(jìn)行流水線開發(fā)及管理。
②轉(zhuǎn)換條件(過(guò)渡區(qū))
隨著外界復(fù)雜性,變化速度的加快,層流形式(即瀑布模型)不再能夠適應(yīng)環(huán)境。在產(chǎn)品和項(xiàng)目的場(chǎng)景中,外部條件包含:市場(chǎng)的變化、用戶需求的變化、政策及經(jīng)濟(jì)環(huán)境變化、競(jìng)品市場(chǎng)變化;內(nèi)部條件有:戰(zhàn)略方向調(diào)整、團(tuán)隊(duì)變動(dòng)等。致使若繼續(xù)一味按照層流即瀑布模型會(huì)背離環(huán)境變化,導(dǎo)致最終偏離目標(biāo)。
③敏捷狀態(tài)(湍流狀態(tài))
轉(zhuǎn)換條件發(fā)生,模型自動(dòng)轉(zhuǎn)換為湍流狀態(tài),也就是敏捷中的小步快跑、不斷迭代、擁抱變化。
1)湍流狀態(tài)特征
下面聊一下流體模型中轉(zhuǎn)換為湍流狀態(tài)后的特征表現(xiàn):
湍流基本特征是流體微團(tuán)運(yùn)動(dòng)的隨機(jī)性。湍流微團(tuán)不僅有橫向脈動(dòng),而且有相對(duì)于流體總運(yùn)動(dòng)的反向運(yùn)動(dòng),因而流體微團(tuán)的軌跡極其紊亂,隨時(shí)間變化很快。湍流中最重要的現(xiàn)象是由這種隨機(jī)運(yùn)動(dòng)引起的動(dòng)量、熱量和質(zhì)量的傳遞,其傳遞速率比層流高好幾個(gè)數(shù)量級(jí)。
——引自湍流的物理學(xué)釋義
2)湍流特征和敏捷不謀而合
- 湍流的軌跡紊亂,隨時(shí)間變化快——正是敏捷強(qiáng)調(diào)的擁抱變化,變化因素具有相通性質(zhì),看似有序的世界和環(huán)境,不過(guò)是無(wú)序的一種特征值體現(xiàn);
- 湍流有相對(duì)流體總運(yùn)動(dòng)的反向運(yùn)動(dòng)——敏捷中最小成本驗(yàn)證,可以視作如此的案例。每一次驗(yàn)證時(shí)一種嘗試,可能正確可能方向錯(cuò)誤導(dǎo)致失敗,正如流體模型中湍流狀態(tài)時(shí)無(wú)序甚至和總方向相反的亂流一般;
- 湍流引起的動(dòng)量熱量和質(zhì)量傳遞速率比層流高好幾個(gè)量級(jí)——敏捷在不斷的找支點(diǎn)、放杠桿,迭代之間可以獨(dú)立且存在依托,所產(chǎn)生的價(jià)值杠桿對(duì)于與層流(瀑布模型)的一始而終,是不可比擬的,對(duì)于標(biāo)的達(dá)成的撬動(dòng)能力更是不可言喻。
3.流體模型回顧
流體模型,正是描述同一種流體即同一個(gè)組織在產(chǎn)品和項(xiàng)目的實(shí)現(xiàn)過(guò)程中,當(dāng)面臨不同的外部和內(nèi)部條件變化,有層流狀態(tài)(瀑布狀態(tài))和湍流(敏捷狀態(tài))的銜接切換,中間過(guò)渡區(qū)的存在,有瀑布和敏捷的相互結(jié)合,從而達(dá)到目的。
實(shí)際工作中,有時(shí)即便是在適用瀑布模型的項(xiàng)目中,也難免的采用到敏捷的方法作為支撐,比如:關(guān)鍵時(shí)期高頻的信息觸碰、外部條件的監(jiān)控等;而敏捷項(xiàng)目中又何嘗不存在瀑布的影子,你的需求管理流程等都又是瀑布的做法;現(xiàn)實(shí)中已經(jīng)很難再將瀑布和敏捷完全區(qū)分,共生或許已經(jīng)是常態(tài),只是存在一個(gè)“過(guò)渡區(qū)”讓二者可以自由的銜切。
4. 流體模型中將弊端也一并展示
對(duì)于一種流體,在外部條件引起湍流后,一方面它強(qiáng)化了動(dòng)量、熱量、質(zhì)量傳遞和反應(yīng)過(guò)程;另一方面極大地增加摩擦阻力和能量損耗。
這在組織和項(xiàng)目中何嘗不是呢,當(dāng)我們進(jìn)入敏捷狀態(tài)之后,面臨的變化、不斷迭代、時(shí)刻專注、保持接觸等,一方面會(huì)極大的促進(jìn)組織活力、產(chǎn)品成長(zhǎng),激活產(chǎn)品生命周期曲線;另一方面,不得不承認(rèn)這種節(jié)奏對(duì)精力的消耗,是所有人有目共睹的,快速的人員迭代在組織中也是常態(tài);同時(shí),這種狀態(tài)下各個(gè)小組或產(chǎn)品項(xiàng)目未達(dá)成自己的目標(biāo),會(huì)產(chǎn)生并行情況,比如在職能線的模式中,不同的產(chǎn)品項(xiàng)目就會(huì)產(chǎn)生較大的阻力而不得不在產(chǎn)品評(píng)審中殺的你死我活。
三、結(jié)語(yǔ)
我們?cè)诓粩嗟奶剿髦袝?huì)走過(guò)的路有很多:一個(gè)需求的生老病死,一個(gè)項(xiàng)目的開始完成,一個(gè)產(chǎn)品的生老病死,一個(gè)組織的生老病死……
但方法終歸不是目的,它只是我們實(shí)現(xiàn)目的的手段,手段的目的又是為了給使用者提供更有力的抓手(溝通、協(xié)作、管理)。