敏捷開發(fā)主流方式:精益開發(fā)
本文列舉了精益開發(fā)的七條原則,以及對(duì)這些原則做了進(jìn)一步的分析解釋。
精益開發(fā)
我先把精益開發(fā)的概念和七條基本原則列一下,然后再逐條原則表述一下我的理解。
概述
精益(Lean)管理的思想起源于豐田公司,旨在創(chuàng)造價(jià)值的目標(biāo)下,通過改良流程不斷地消除浪費(fèi)。這種方法現(xiàn)已被廣泛用于生產(chǎn)制造管理,對(duì)于IT系統(tǒng)建設(shè),精益開發(fā)的常用工具模型是價(jià)值流模型。
精益開發(fā)的基本原則
- 杜絕浪費(fèi):將所有的時(shí)間花在能夠增加客戶價(jià)值的事情上。
- 推遲決策:根據(jù)實(shí)際情況保持可選方案的開放性,但時(shí)間不能過長。
- 加強(qiáng)學(xué)習(xí):使用科學(xué)的學(xué)習(xí)方法。
- 快速交付:當(dāng)客戶索取價(jià)值時(shí)應(yīng)立即交付價(jià)值。
- 打造精品:使用恰當(dāng)?shù)姆椒ù_保質(zhì)量。
- 授權(quán)團(tuán)隊(duì):讓創(chuàng)造增值的員工充分發(fā)揮自己的潛力。
- 優(yōu)化整體:防止以損害整體為代價(jià)而優(yōu)化部分的傾向。
對(duì)原則的理解
1. 杜絕浪費(fèi)
浪費(fèi)是可恥的,這個(gè)很好理解,但是在這條的描述中,精益提出“把所有的時(shí)間都放在能夠增加用戶價(jià)值的事情上”,這樣太容易被曲解了,最值得考究的就是什么才算**能夠增加用戶價(jià)值**的事?
及時(shí)交付對(duì)用戶有價(jià)值的產(chǎn)品算是增加用戶價(jià)值,那么我們要做的事就僅此一件了嗎?
顯然太片面,我們需要做的遠(yuǎn)不止這一件事。
**健康的團(tuán)隊(duì)才能產(chǎn)出優(yōu)秀的產(chǎn)品**,“畢其功于一役”的大決戰(zhàn)當(dāng)然是一場拼盡全力的沖鋒,但是“路漫漫其修遠(yuǎn)兮”,“上下求索”顯然又是個(gè)長跑的過程,不健康的團(tuán)隊(duì)談不到長遠(yuǎn)的發(fā)展,所以“所有時(shí)間”中必然要包括培養(yǎng)出一只有戰(zhàn)斗力的團(tuán)隊(duì)。
再有,概述中就提到的,我們需要通過什么手段消除浪費(fèi)呢?
**通過不斷地改良流程**,敏捷宣言中說“個(gè)體的主觀能動(dòng)性以及個(gè)體之間的互動(dòng)優(yōu)于既定流程和工具”,這只是強(qiáng)調(diào)個(gè)體的主觀能動(dòng)性和互動(dòng)更加重要,但是并沒有抹消掉流程的重要性,而且敏捷非但沒有忽視流程的重要,恰恰相反,在敏捷開發(fā)的原則中說“簡潔是減少重復(fù)勞動(dòng)的藝術(shù)”,而流程就是保持簡潔有力手段,這一點(diǎn)在精益中被尤為強(qiáng)調(diào),所以在制定更加簡潔高效的流程上花時(shí)間絕不是浪費(fèi)。
2. 推遲決策
提出盡可能多的可行方案,有利于針對(duì)實(shí)際情況做出選擇。
我們應(yīng)該把重點(diǎn)放在后半句的“時(shí)間不能過長”上。
假設(shè)我們把相當(dāng)寬裕的時(shí)間留給了提出盡可能多的方案上,我們得到了相當(dāng)多的可行方案,但是方案再多總要根據(jù)實(shí)際情況選擇最行之有效的那一個(gè),那么怎么評(píng)判是不是最行之有效的方案呢?
簡單點(diǎn)講就是找到這些方案中最能滿足“時(shí)間”、“范圍”、“資源”三者之間平衡的方案,耗時(shí)太長顯然就壓縮了項(xiàng)目的可用時(shí)間,對(duì)“范圍”和“資源”也必將產(chǎn)生影響。推遲決策是為了找到平衡“時(shí)間”、“范圍”、“資源”的最佳方案,那么掌握不好“推遲”的時(shí)間就是在舍本逐末。
3. 加強(qiáng)學(xué)習(xí)
這和上面講到的培養(yǎng)有戰(zhàn)斗力的團(tuán)隊(duì)相呼應(yīng),學(xué)習(xí)是強(qiáng)化團(tuán)隊(duì)、保持團(tuán)隊(duì)活力的最佳方式,至于什么是“科學(xué)的方法”,我覺得應(yīng)該是最適合自己團(tuán)隊(duì)的方法,是組建讀書會(huì)、學(xué)習(xí)小組這類組織,還是搞黑客馬拉松、分享講座這種活動(dòng)看你對(duì)團(tuán)隊(duì)的了解,哪種方法最有效,最能持續(xù)發(fā)展就選那種。
4. 快速交付
精益開發(fā)是敏捷開發(fā)的一種形式,既然是敏捷開發(fā)那就不能不提快速交付,在我們軟件開發(fā)中的實(shí)踐就是盡可能縮短迭代周期,并且在每次迭代中給用戶提供穩(wěn)定可運(yùn)行的并且有價(jià)值的軟件,這是敏捷開發(fā)的核心手段,精益中如此,其他的敏捷方式比如“極限編程(XP)”、“水晶方法”、“動(dòng)態(tài)系統(tǒng)開發(fā)法(DSDM)”、“SCRUM”也是如此,只是各種方法都有自己具體實(shí)踐,幾種的方式對(duì)迭代的實(shí)踐我會(huì)放到后續(xù)的文章中討論。
5. 打造精品
“XX出品必屬精品”,當(dāng)一個(gè)公司被冠以這樣的評(píng)價(jià),如果這個(gè)評(píng)價(jià)是正面的而非帶有諷刺意味,那么說明這家公司得到了用戶極高的認(rèn)可,“贏在用戶”一語雙關(guān),既是說精品的受益者是用戶,也是說只有精品才能在競爭中贏得用戶。
6. 授權(quán)團(tuán)隊(duì)
團(tuán)隊(duì),還是團(tuán)隊(duì),好產(chǎn)品離不開好團(tuán)隊(duì),好團(tuán)隊(duì)要培養(yǎng)也要被信任,授權(quán)團(tuán)隊(duì)可以最大化地激發(fā)團(tuán)隊(duì)中成員對(duì)產(chǎn)品的主人翁意識(shí)。
用人不疑,疑人不用,需要的是睿智和胸襟,不能放任不管任由其自生自滅,也不能大權(quán)獨(dú)攬,手里攥著大印把角都磨圓了,還怎么激發(fā)團(tuán)隊(duì)的主觀能動(dòng)性。
7. 整體優(yōu)化
整體優(yōu)化不應(yīng)該被簡單理解為全面優(yōu)化,我認(rèn)為對(duì)整體有利的優(yōu)化就可以稱之為整體優(yōu)化,當(dāng)局部優(yōu)化的程度達(dá)到足以提升整體的成效時(shí)就是一次整體的優(yōu)化,這條原則強(qiáng)調(diào)的是局部優(yōu)化的投入不應(yīng)該大到拖延整體的進(jìn)度。
當(dāng)你跟上級(jí)說我要優(yōu)化一下項(xiàng)目架構(gòu)(不要以為架構(gòu)層面的就是整體,說到底研發(fā)團(tuán)隊(duì)也只是整個(gè)項(xiàng)目的一部分),大概要花兩三個(gè)月的時(shí)間時(shí),可以讓軟件的執(zhí)行效率提升20 ~ 30%,否則將來軟件的執(zhí)行效率會(huì)很差,一般情況下你會(huì)得到什么答復(fù)?
糟糕一點(diǎn)兒當(dāng)然是被一口回絕,好一點(diǎn)兒的可能會(huì)被問問“現(xiàn)在的架構(gòu)有什么局限?”、“新架構(gòu)能帶來什么好處?”,多數(shù)人在多數(shù)情況下是爭取不到這么長的時(shí)間去做這種拖慢產(chǎn)品進(jìn)度的優(yōu)化的,無關(guān)于這次優(yōu)化是關(guān)乎局部還是整體。
或許經(jīng)過幾個(gè)版本的迭代后你所擔(dān)心的問題終于發(fā)生了,軟件運(yùn)行的效率大大降低,這個(gè)時(shí)候我們應(yīng)該暗暗冷笑上級(jí)只顧眼前利益嗎?
我覺得我們應(yīng)該考慮一下自己給出的方案是不是真的考慮了整體,方案夠不夠敏捷。
其實(shí)張口就要幾個(gè)月的時(shí)間本身就是沒有考慮到整體,技術(shù)停下來優(yōu)化各兩三個(gè)月,那讓產(chǎn)品、設(shè)計(jì)、運(yùn)營放三個(gè)月長假嗎?;蛘吣悛?dú)立出來搞幾個(gè)月,你確定幾個(gè)月后你還追的上產(chǎn)品這幾個(gè)月來的迭代?
一個(gè)優(yōu)化需要兩三個(gè)月的時(shí)間這顯然是不夠敏捷的,甚至無法保證最終優(yōu)化的框架是不是真能達(dá)到預(yù)期的效果,“不能達(dá)到預(yù)期效果”正是困擾瀑布流模式的問題,也是敏捷開發(fā)提出短周期提交可用軟件所要解決的問題,當(dāng)你坐在上級(jí)的位置上肯定也要考慮局部優(yōu)化對(duì)整體利益的影響,既然我們是在敏捷開發(fā)這個(gè)大的項(xiàng)目開發(fā)流程下,那么局部的優(yōu)化也應(yīng)該遵循敏捷的原則,化整為零,逐步迭代。
我想針對(duì)上面說的花兩三個(gè)月的時(shí)間優(yōu)化框架這個(gè)請(qǐng)求,如果我們提出的方案是三到五個(gè)迭代每個(gè)迭代兩到三周,每個(gè)版本都可以讓項(xiàng)目開發(fā)的效率提升5~10%,再跟上級(jí)講講不優(yōu)化可能帶來的軟件運(yùn)行效率問題,我想上級(jí)點(diǎn)頭的可能性會(huì)大大增加吧。
本文由@汪仔8925 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。
題圖來自Unsplash, 基于CC0協(xié)議。
大哥,敏捷的幾種迭代方法你說會(huì)放到后續(xù)文章細(xì)說,還寫嗎??
??????
小哥,可以加v多交流哈哈哈
?? 尷尬了,后續(xù)的文章發(fā)不了了,“不符合平臺(tái)內(nèi)容”。產(chǎn)品、項(xiàng)目不分家吧?畢竟名字都一樣pm
大哥,后續(xù)文章放到了哪里,我想去學(xué)習(xí)學(xué)習(xí)
我在其他論壇上也投放了這篇文章,我之后在這個(gè)論壇的活躍度會(huì)更高些。
我是個(gè)軟件工程師,從事移動(dòng)端開發(fā)五年了,當(dāng)我想整理過去五年來積累的技術(shù)經(jīng)驗(yàn)時(shí)發(fā)現(xiàn)我的技術(shù)樹構(gòu)建的真是粗陋不堪,積累下來的不過是些應(yīng)付日常產(chǎn)品開發(fā)和維護(hù)的經(jīng)驗(yàn),很難談到什么精妙的地方,反倒是在和朋友聊天時(shí)發(fā)現(xiàn)這五年來在參加了數(shù)不清的大大小小的項(xiàng)目過程中對(duì)項(xiàng)目管理倒是積累一些可以聊聊的東西。我會(huì)把自己以往總結(jié)的經(jīng)驗(yàn)和知識(shí)不定期地投放到博客中?;蛟S真的有些不知深淺,請(qǐng)?jiān)徱粋€(gè)初學(xué)者的無知,我希望能有幸和你交流,大家共同成長。