最近公司在研發(fā)過(guò)程導(dǎo)入敏捷模式鸠踪,周圍同事也開(kāi)始談“敏捷”,細(xì)聽(tīng)下來(lái)由于大家站的角度不一樣复斥,對(duì)敏捷的理解都不盡相同营密。正好前幾年也對(duì)敏捷做過(guò)一些了解,在實(shí)際項(xiàng)目中也對(duì)敏捷所倡導(dǎo)的理念做過(guò)一些實(shí)踐目锭,有波折也有些許收獲评汰,下面談?wù)勛约簩?duì)敏捷的一些理解纷捞。
為什么出現(xiàn)敏捷?
在說(shuō)敏捷之前有必要先說(shuō)下軟件開(kāi)發(fā)的發(fā)展過(guò)程被去。
上世紀(jì)七八十年代開(kāi)始主儡,隨著軟件應(yīng)用領(lǐng)域的逐步增加,軟件規(guī)模有逐漸擴(kuò)大惨缆,為更好的進(jìn)行軟件開(kāi)發(fā)管理糜值,軟件開(kāi)發(fā)進(jìn)入了軟件工程階段。
軟件工程中明確了經(jīng)典的瀑布開(kāi)發(fā)模型坯墨,把整個(gè)軟件交付過(guò)程人為分成了收集需求臀玄、定義產(chǎn)品、系統(tǒng)設(shè)計(jì)畅蹂、編碼健无、測(cè)試、發(fā)布等階段液斜,每個(gè)階段設(shè)定明確的目標(biāo)和標(biāo)準(zhǔn)累贤,達(dá)成后再進(jìn)入下一個(gè)階段,整個(gè)過(guò)程沿著可預(yù)測(cè)性逐步增加的方向前進(jìn)少漆,可以避免資源的無(wú)效投入臼膏,并有效地保證開(kāi)發(fā)質(zhì)量。
瀑布開(kāi)發(fā)模型有兩個(gè)前提條件:
【條件一】瀑布模型嚴(yán)格定義開(kāi)發(fā)階段示损,上一個(gè)階段的輸出作為下一個(gè)階段的輸入渗磅,各階段之間有強(qiáng)烈的依賴關(guān)系。其中一個(gè)階段的輸出質(zhì)量不高检访,會(huì)影響后續(xù)各階段的輸出質(zhì)量始鱼,并在各階段之間逐步放大質(zhì)量不高的負(fù)面效應(yīng)。
【條件二】瀑布模型作了一個(gè)假設(shè)脆贵,就是認(rèn)為在產(chǎn)品之初就可以獲得明確且被客戶認(rèn)可的需求医清。在傳統(tǒng)軟件行業(yè)中,該要求是理所當(dāng)然的卖氨;進(jìn)入互聯(lián)網(wǎng)和移動(dòng)互聯(lián)網(wǎng)時(shí)代后会烙,準(zhǔn)確收集獲得用戶認(rèn)可的需求基本上是不可能的。
有數(shù)據(jù)顯示有70%采用瀑布式開(kāi)發(fā)方法的軟件開(kāi)發(fā)項(xiàng)目均以失敗告終筒捺。原因在于柏腻,隨著互聯(lián)網(wǎng)特別是移動(dòng)互聯(lián)網(wǎng)的飛速發(fā)展,市場(chǎng)的需求瞬息萬(wàn)變系吭,很難實(shí)現(xiàn)產(chǎn)品需求的明確且完整地收集五嫂。
同時(shí),技術(shù)的發(fā)展也日新月異村斟,對(duì)于所定義功能的可實(shí)現(xiàn)性也面臨著多重不確定性的因素贫导。所以當(dāng)需求收集和產(chǎn)品定義等前置條件工作無(wú)法有效的完成時(shí)抛猫,瀑布式開(kāi)發(fā)也就無(wú)法擺脫高失敗率的命運(yùn)。
總結(jié)來(lái)看就是當(dāng)產(chǎn)品需求的不明確性和工程實(shí)現(xiàn)的不確定性超出一定范圍之后孩灯,瀑布開(kāi)發(fā)模型這種嚴(yán)格定義階段的開(kāi)發(fā)方法便不再適用闺金。
敏捷是針對(duì)傳統(tǒng)的瀑布模式的弊端而產(chǎn)生的一種新的研發(fā)理念,核心思維模式從計(jì)劃模式向價(jià)值驅(qū)動(dòng)進(jìn)行轉(zhuǎn)變峰档,瀑布模型是根據(jù)研發(fā)各階段計(jì)劃來(lái)進(jìn)行按部就班實(shí)施败匹,敏捷則更強(qiáng)調(diào)通過(guò)給客戶逐步交付價(jià)值的反饋來(lái)及時(shí)進(jìn)行調(diào)整優(yōu)化價(jià)值,目標(biāo)是提高開(kāi)發(fā)效益讥巡,而不僅是開(kāi)發(fā)效率掀亩。
這是敏捷嗎?
有相當(dāng)一部分同學(xué)說(shuō)欢顷,敏捷不就是開(kāi)項(xiàng)目迭代會(huì)槽棍、以用戶故事來(lái)拆分需求、進(jìn)行看板管理抬驴、每日?qǐng)F(tuán)隊(duì)站會(huì)炼七、按固定周期來(lái)發(fā)一個(gè)版本嗎。
團(tuán)隊(duì)學(xué)會(huì)了這些規(guī)則和儀式布持,團(tuán)隊(duì)就是按照敏捷的方式在運(yùn)作嗎豌拙?
不一定,因?yàn)檫@些只是敏捷的表象题暖,為了更好的進(jìn)行敏捷實(shí)踐按傅,我們非常有必要知道這些儀式是如何實(shí)踐敏捷的理念和原則的,如何給軟件交付帶來(lái)正向反饋的胧卤。
遵循敏捷的原則和價(jià)值觀才是敏捷的核心唯绍,簡(jiǎn)單的模仿其它團(tuán)隊(duì)的行為和做法不會(huì)讓你的團(tuán)隊(duì)變更更為“敏捷”。
只有這樣我們就能根據(jù)團(tuán)隊(duì)實(shí)際情況對(duì)敏捷實(shí)踐進(jìn)行改進(jìn)調(diào)整灌侣,以便可以更好的與團(tuán)隊(duì)實(shí)際情況進(jìn)行融合推捐,發(fā)揮出敏捷理念應(yīng)有的價(jià)值。
接下來(lái)我們必要探討下敏捷到底是什么侧啼?
“敏捷”是什么?
“敏捷”是什么堪簿,敏捷 = 4個(gè)理念 ≈ 12條原則痊乾。
什么是“敏捷”,2001年椭更,17位研發(fā)人員共同探討出了《敏捷宣言》這份文檔哪审,闡述了他們對(duì)于軟件研發(fā)的看法,主要是4個(gè)開(kāi)發(fā)理念:Individuals and Interactions虑瀑,Working software湿滓,Customer Collabration滴须,responding to charge。
敏捷理念過(guò)于抽象叽奥,為了讓敏捷變得簡(jiǎn)單易懂好執(zhí)行扔水,他們又提出了敏捷開(kāi)發(fā)的12項(xiàng)原則:
1、我們最重要的目標(biāo)朝氓,是通過(guò)持續(xù)不斷地及早交付有價(jià)值的軟件使客戶滿意魔市;
2、欣然面對(duì)需求變化赵哲,即使在開(kāi)發(fā)后期也一樣待德。為了客戶的競(jìng)爭(zhēng)優(yōu)勢(shì),敏捷過(guò)程掌控變化枫夺;
3将宪、經(jīng)常地交付可工作的軟件,相隔幾星期或一兩個(gè)月橡庞,傾向于采取較短的周期涧偷;
4、業(yè)務(wù)人員和開(kāi)發(fā)人員必須相互合作毙死,項(xiàng)目中的每一天都不例外燎潮;
5、激發(fā)個(gè)體的斗志扼倘,以他們?yōu)楹诵拇罱?xiàng)目确封。提供所需的環(huán)境和支援,輔以信任再菊,從而達(dá)成目標(biāo)爪喘;
6、不論團(tuán)隊(duì)內(nèi)外纠拔,傳遞信息效果最好效率也最高的方式是面對(duì)面的交談秉剑;
7、可工作的軟件是進(jìn)度的首要度量標(biāo)準(zhǔn)稠诲;
8侦鹏、敏捷過(guò)程倡導(dǎo)可持續(xù)開(kāi)發(fā),責(zé)任人臀叙、開(kāi)發(fā)人員和用戶要能夠共同維持其步調(diào)穩(wěn)定延續(xù)略水;
9、堅(jiān)持不懈地追求技術(shù)卓越和良好設(shè)計(jì)劝萤,敏捷能力由此增強(qiáng)渊涝;
10、以簡(jiǎn)潔為本,它是極力減少不必要工作量的藝術(shù)跨释;
11胸私、最好的架構(gòu)、需求和設(shè)計(jì)出自自組織團(tuán)隊(duì)鳖谈;
12岁疼、團(tuán)隊(duì)定期地反思如何能提高成效,并依此調(diào)整自身的舉止表現(xiàn)蚯姆。
大家可以看出五续,敏捷不是迭代會(huì)和看板管理,不是方法論和開(kāi)發(fā)規(guī)范龄恋、也不是框架或過(guò)程疙驾,敏捷只是提出了一些軟件開(kāi)發(fā)的理念和原則。
敏捷強(qiáng)調(diào)在軟件研發(fā)過(guò)程中向用戶持續(xù)交付價(jià)值和獲得反饋郭毕,不斷進(jìn)行迭代優(yōu)化讓產(chǎn)品逐漸完善它碎。不同的團(tuán)隊(duì)、不同的人显押、不同的經(jīng)歷對(duì)12項(xiàng)原則有不同的感受和理解扳肛,不同產(chǎn)品階段對(duì)各項(xiàng)原則的執(zhí)行也有輕重之別。
其中個(gè)人對(duì)如下幾點(diǎn)感觸較深:
1)盡早交付價(jià)值乘碑,并持續(xù)迭代優(yōu)化的模式來(lái)讓客戶滿意挖息,確保產(chǎn)品經(jīng)受市場(chǎng)檢驗(yàn)而獲得強(qiáng)大的生命力,而不是在團(tuán)隊(duì)內(nèi)部進(jìn)行精雕細(xì)磨兽肤,極易迷失方向套腹。
2)識(shí)別有效需求,業(yè)務(wù)和產(chǎn)品對(duì)用戶反饋的需求進(jìn)行甄別资铡,鉆石需求優(yōu)先響應(yīng)电禀、合理需求納入TODO清單,不合理需求與客戶溝通協(xié)商拒絕笤休,堅(jiān)決不能將就尖飞,對(duì)需求質(zhì)量把握的高低直接決定著研發(fā)生產(chǎn)效率的高低。
3)以簡(jiǎn)潔為本店雅,在軟件復(fù)雜度越來(lái)越高的今天政基,能把產(chǎn)品使用做簡(jiǎn)單不僅體現(xiàn)客戶優(yōu)先的服務(wù)態(tài)度,更是體現(xiàn)產(chǎn)品是否專業(yè)的直觀表現(xiàn)底洗,這需要對(duì)客戶使用場(chǎng)景的換位思考和抽象腋么。
應(yīng)用敏捷的三個(gè)階段
在應(yīng)對(duì)快速變化市場(chǎng)需求的背景下,倡導(dǎo)靈活性亥揖、持續(xù)改進(jìn)和盡早交付的敏捷受到了在國(guó)內(nèi)外研發(fā)團(tuán)隊(duì)極高的追捧。
下面介紹產(chǎn)品生命周期中三個(gè)典型階段的敏捷應(yīng)用,分別是探索產(chǎn)品方向階段费变、交付產(chǎn)品價(jià)值階段摧扇、完善功能任務(wù)階段。這三個(gè)階段對(duì)產(chǎn)品目標(biāo)挚歧、組織結(jié)構(gòu)扛稽、團(tuán)隊(duì)構(gòu)成等多方面有不同的要求,這也就需要在進(jìn)行敏捷導(dǎo)入時(shí)進(jìn)行考慮滑负,并根據(jù)情況進(jìn)行適當(dāng)調(diào)整在张。
探索產(chǎn)品方向
團(tuán)隊(duì)需要打造一款全新的產(chǎn)品,此時(shí)思考的是客戶和用戶是誰(shuí)矮慕、他們的痛點(diǎn)是什么帮匾、是否愿意付費(fèi)、我們?nèi)绾潍@得收入痴鳄、我們?nèi)绾斡|達(dá)客戶等問(wèn)題瘟斜。
這個(gè)階段敏捷理念的最佳實(shí)踐就是精益創(chuàng)業(yè),輸出最小價(jià)值產(chǎn)品(MVP)來(lái)進(jìn)行市場(chǎng)驗(yàn)證痪寻,盡早獲得客戶的反饋和了解團(tuán)隊(duì)的能力邊界螺句。
此時(shí)輸出的所謂產(chǎn)品,大部分和通常大家看到的產(chǎn)品有較大區(qū)別橡类,因?yàn)榇藭r(shí)輸出的所謂產(chǎn)品僅僅是為了得到市場(chǎng)和用戶的有效反饋蛇尚。
此時(shí)產(chǎn)品形態(tài)不是最重要的,一切均是為了獲得客戶真實(shí)有效的反饋顾画,產(chǎn)品可能是一個(gè)可交互的原型圖取劫、一段介紹產(chǎn)品模式的視頻、一個(gè)粗糙的移動(dòng)App亲雪、甚至可能只是一個(gè)想法勇凭。在產(chǎn)品初始階段,做正確的事比正確的做事顯得更為重要义辕。
有人可能會(huì)有疑問(wèn)為什么我們不把產(chǎn)品做好才交付到市場(chǎng)中去虾标,這樣客戶的反饋就更真實(shí)準(zhǔn)確嗎?原因就是其中我們的絕大想法和創(chuàng)意都注定了會(huì)以失敗而告終灌砖,MVP就是把超出團(tuán)隊(duì)認(rèn)知外的想法及早讓客戶來(lái)幫忙淘汰掉璧函,而不是投入成本研發(fā)幾個(gè)月再被市場(chǎng)否決掉,這會(huì)造成資源浪費(fèi)和錯(cuò)失其它機(jī)會(huì)基显。
記得有一個(gè)朋友說(shuō)蘸吓,精益創(chuàng)業(yè)就是“盡快失敗”,在探索產(chǎn)品的最初階段它確實(shí)如此撩幽;每次的失敗都不是終點(diǎn)库继,而是一個(gè)新的起點(diǎn)箩艺,只有找到產(chǎn)品方向和價(jià)值才算結(jié)束。
最近團(tuán)隊(duì)有做票據(jù)超市的新創(chuàng)意宪萄,內(nèi)部評(píng)估都認(rèn)為值得一試艺谆,此場(chǎng)景就可以應(yīng)用精益思想來(lái)進(jìn)行實(shí)踐。此時(shí)很多產(chǎn)品同學(xué)肯定會(huì)說(shuō)我們用MVP思想做一個(gè)最簡(jiǎn)單的產(chǎn)品出來(lái)讓客戶進(jìn)行體驗(yàn)就可以了拜英?
道理沒(méi)錯(cuò)静汤,但到底這個(gè)產(chǎn)品多小才是最小呢?正所謂沒(méi)有最小居凶、只有更小虫给。對(duì)票據(jù)超市產(chǎn)品核心價(jià)值的不同理解,就會(huì)有不同的最小產(chǎn)品方案侠碧,只要對(duì)產(chǎn)品核心價(jià)值不產(chǎn)生重大折扣的功能都沒(méi)必要進(jìn)行進(jìn)行前期開(kāi)發(fā)投入抹估。此時(shí)就要求大家對(duì)產(chǎn)品價(jià)值的理解和識(shí)別,敏捷的理念和原則可以快速掌握舆床,但對(duì)產(chǎn)品價(jià)值的識(shí)別則需要時(shí)間培養(yǎng)棋蚌。
交付產(chǎn)品價(jià)值
這個(gè)階段主要目標(biāo)是在現(xiàn)有產(chǎn)品基礎(chǔ)上追加新的價(jià)值,團(tuán)隊(duì)將以目標(biāo)為導(dǎo)向挨队,相互協(xié)作思考達(dá)成目標(biāo)的方案谷暮、衡量目標(biāo)達(dá)成的尺度、方案需要的支撐功能等等盛垦。
此時(shí)團(tuán)隊(duì)要被賦權(quán)且可以問(wèn)責(zé)湿弦,被賦權(quán)是指協(xié)助團(tuán)隊(duì)制定目標(biāo),然后交由團(tuán)隊(duì)來(lái)尋找達(dá)成目標(biāo)的最佳方法腾夯,而不是安排具體的工作任務(wù)颊埃。
比如,團(tuán)隊(duì)不是被告之需要為靈活用工行業(yè)開(kāi)發(fā)哪些功能蝶俱,而是“目前靈活用工行業(yè)客戶交易規(guī)模偏少班利,新客戶拓展不快且已上線客戶上量也較慢,希望解決該問(wèn)題成為靈活用工行業(yè)排名前三的資金處理服務(wù)商榨呆!”罗标。
此時(shí)整個(gè)團(tuán)隊(duì)需要協(xié)同尋找解決方案,并進(jìn)行嘗試积蜻,當(dāng)實(shí)踐A方案后未達(dá)成目標(biāo)闯割,則團(tuán)隊(duì)會(huì)總結(jié)再出發(fā)嘗試B方案,直至最終達(dá)解決問(wèn)題達(dá)成目標(biāo)竿拆。
在落實(shí)具體方案的過(guò)程中宙拉,敏捷團(tuán)隊(duì)會(huì)對(duì)實(shí)施方案行拆分或分解形成一系列的行動(dòng)計(jì)劃,然后按計(jì)劃逐步進(jìn)行價(jià)值交付丙笋,并及時(shí)獲得客戶的反饋對(duì)計(jì)劃進(jìn)行修正調(diào)整谢澈,確保產(chǎn)品經(jīng)受市場(chǎng)洗禮而獲得較強(qiáng)的生命力煌贴,而不是在團(tuán)隊(duì)內(nèi)部進(jìn)行精雕細(xì)磨。
大家是否也覺(jué)得這種授權(quán)模式和OKR似曾相識(shí)澳化,其實(shí)是否叫OKR并不重要崔步,這種賦予目標(biāo)的工作方式稳吮,可以極大的調(diào)動(dòng)團(tuán)隊(duì)的能動(dòng)性缎谷,以更為積極和主動(dòng)的心態(tài)開(kāi)展工作。
完善功能任務(wù)
這個(gè)階段主要目標(biāo)是進(jìn)行高效產(chǎn)出灶似,此時(shí)團(tuán)隊(duì)需要做的工作任務(wù)是明確的列林,有一個(gè)很長(zhǎng)的TODO清單,這些清單主要是對(duì)產(chǎn)品進(jìn)行常規(guī)優(yōu)化和升級(jí)酪惭,從而給客戶交付更穩(wěn)定希痴、可靠、易用的產(chǎn)品春感,目的對(duì)現(xiàn)有產(chǎn)品的價(jià)值進(jìn)行放大砌创。
由于功能任務(wù)是明確性,研發(fā)的關(guān)注點(diǎn)就是高效產(chǎn)出交付鲫懒,提高產(chǎn)出效率嫩实。Srcum、看板等敏捷模式將有助于協(xié)同團(tuán)隊(duì)的工作步調(diào)窥岩,以用戶故事粒度對(duì)需求進(jìn)行拆解甲献、對(duì)研發(fā)過(guò)程進(jìn)行可視化管理,進(jìn)而以類流水線方式高效穩(wěn)定的進(jìn)行功能發(fā)布颂翼。
再就說(shuō)下迭代節(jié)奏晃洒,大部分團(tuán)隊(duì)采用的是每2周交付一個(gè)版本,工作節(jié)奏和交付頻率較為適中朦乏,大部分團(tuán)隊(duì)均可以接受球及;有些初創(chuàng)團(tuán)隊(duì)采用每1周發(fā)布一個(gè)版本的節(jié)奏,團(tuán)隊(duì)工作壓力也非常大呻疹,對(duì)團(tuán)隊(duì)的技能和工具均有較高的要求吃引。
結(jié)束
在市場(chǎng)瞬息萬(wàn)變和技術(shù)日新月異的背景之下而產(chǎn)生敏捷,它和瀑布開(kāi)發(fā)一樣都有其適用范圍诲宇,它也不是救世主并不能解決所有開(kāi)發(fā)過(guò)程中的問(wèn)題际歼,但它一定會(huì)給你帶來(lái)新的思考牲芋。
《人月神話》的作者弗雷德·布魯克斯有一個(gè)觀點(diǎn)吓妆,那就是:沒(méi)有任何單一的技術(shù)或過(guò)程可以帶來(lái)軟件開(kāi)發(fā)效率的顯著提高。對(duì)“敏捷”來(lái)說(shuō)也同樣適用熔掺,并不是實(shí)踐了Scrum或者看板就一定可以解決你的問(wèn)題纺荧,先對(duì)目前面臨的問(wèn)題進(jìn)行識(shí)別是關(guān)鍵旭愧,然后去找到適合你的那些實(shí)踐颅筋,謹(jǐn)慎選擇和勇敢嘗試,希望大家都得償所愿输枯。