這幾年敏捷開發(fā)很火唁毒,好像誰不敏捷就是跟不上時(shí)代落后了,很多公司的項(xiàng)目管理者不管三七二十一照本宣科的按照敏捷開發(fā)流程和方法去實(shí)施胡本,最后效果不盡然合搅,這是犯了教條主義的錯(cuò)誤多搀,在我看來敏捷開發(fā)就是一種軟件工程思想而已,一種思想方法理論灾部,任何思想方法理論都要結(jié)合具體的實(shí)際去實(shí)踐才是有效的康铭,否則適得其反。那么接下來談?wù)勎覍?duì)敏捷開發(fā)的看法和理解梳猪,希望能幫到你在敏捷的路上少走彎路麻削。
首先我們來看看敏捷的核心思想,主要包含如下要點(diǎn)。
敏捷即是靈活快速的意思春弥,敏捷開發(fā)宣言——
個(gè)體和交互 勝過 過程和工具
可以工作的軟件 勝過 面面俱到的文檔
客戶合作 勝過 合同談判
響應(yīng)變化 勝過 遵循計(jì)劃
這即是以價(jià)值為驅(qū)動(dòng),以人為本叠荠,持續(xù)快速迭代交付可運(yùn)行工作的軟件匿沛,靈活適應(yīng)需求的變化,最終提前給客戶帶來市場(chǎng)價(jià)值榛鼎。而傳統(tǒng)的瀑布式的開發(fā)模式是以需求文檔驅(qū)動(dòng)逃呼,項(xiàng)目周期長(zhǎng),交付后的基本很難適應(yīng)需求變化或適用的成本非常高者娱,所以項(xiàng)目的失敗率也高抡笼,這是兩者的主要區(qū)別,見下圖一目了然:
瀑布式開發(fā)模式流程圖
敏捷開發(fā)模式流程圖
敏捷開發(fā)需要把握如下10個(gè)原則:
1)目標(biāo)是通過持續(xù)及盡早交付有價(jià)值的軟件使客戶滿意黄鳍。
2)擁抱和適應(yīng)需求變化推姻。
3)持續(xù)小版本迭代交付可工作的軟件,項(xiàng)目周期傾向于采取較短的周期框沟。
4)項(xiàng)目開發(fā)過程業(yè)務(wù)或產(chǎn)品人員和開發(fā)人員必須合體合作藏古,每一天都不例外增炭。
5)信任和激發(fā)個(gè)體的戰(zhàn)斗力和創(chuàng)造性,從而達(dá)成目標(biāo)拧晕。
6)高效溝通隙姿,常用面對(duì)面交談。
7)可工作的軟件是進(jìn)度的首要度量標(biāo)準(zhǔn)厂捞。
8)以簡(jiǎn)單為本输玷,堅(jiān)持不懈地追求技術(shù)卓越和良好設(shè)計(jì)和演變。
9)建立自組織團(tuán)隊(duì)靡馁。
10)團(tuán)隊(duì)定期反思后調(diào)整提高成效饲嗽。
目前業(yè)界比較常用的敏捷開發(fā)的方法體系有七種:SCRUM、XP(極限編程)奈嘿、Crystal Methods(水晶方法族)貌虾、FDD (Feature-Driven Development,特性驅(qū)動(dòng)開發(fā))裙犹、?ASD(Adaptive Software Development尽狠,自適應(yīng)軟件開發(fā))、DSDM(動(dòng)態(tài)系統(tǒng)開發(fā)方法)和輕量型RUP叶圃,其中scrum最為流行袄膏。好,接下來就重點(diǎn)聊聊我是如何結(jié)合實(shí)際去實(shí)踐scrum掺冠,容我娓娓道來沉馆。
SCRUM實(shí)施前團(tuán)隊(duì)必須做到:
1.科普敏捷開發(fā)思想,團(tuán)隊(duì)能理解并接受敏捷開發(fā)德崭,特別是產(chǎn)品人員斥黑。
2.個(gè)人要掌握自我管理和自組織的能力。
上圖是SCRUM開發(fā)流程的各個(gè)環(huán)節(jié)眉厨,有三個(gè)角色锌奴、四個(gè)會(huì)和三個(gè)物件,這些環(huán)節(jié)我們都有實(shí)踐憾股,只是我們會(huì)結(jié)合實(shí)際條件去做調(diào)整鹿蜀。
計(jì)劃會(huì),即是需求討論會(huì)服球,可以多次茴恰,技術(shù)人員跟產(chǎn)品人員討論最終確定需求迭代開發(fā)的版本數(shù)及各版本的需求范圍;
每日站會(huì)斩熊,即項(xiàng)目例會(huì)往枣,按項(xiàng)目線劃分,各pm或pl按項(xiàng)目實(shí)際情況1-2天舉行;
評(píng)審會(huì)婉商,即是成產(chǎn)品上線后產(chǎn)品人員和用戶使用體驗(yàn)似忧,分析效果數(shù)據(jù)然后提出優(yōu)化需求然后按優(yōu)先級(jí)小版本迭代快速開發(fā);
反思會(huì)丈秩,即項(xiàng)目總結(jié)會(huì)盯捌,所有項(xiàng)目干系人參與總結(jié)項(xiàng)目開發(fā)過程的優(yōu)缺點(diǎn),避免重復(fù)踩坑蘑秽。
三個(gè)物件
產(chǎn)品backlog(即需求清單)饺著,即需求整體功能清單文檔及原型,產(chǎn)品人員動(dòng)態(tài)維護(hù)跟進(jìn)肠牲,隨時(shí)跟技術(shù)人員溝通幼衰;
Sprint backlog(即每個(gè)迭代版本的功能列表),需求迭代版本的功能清單文檔及原型缀雳,產(chǎn)品人員動(dòng)態(tài)維護(hù)跟進(jìn)渡嚣,隨時(shí)跟技術(shù)人員溝通;
燃盡圖(即每個(gè)迭代版本的進(jìn)度情況)肥印,即是項(xiàng)目進(jìn)度跟蹤识椰,各個(gè)項(xiàng)目組靈活把握,可以用excel表格也可以用trallo協(xié)同工具來跟進(jìn)深碱。
敏捷估算和開發(fā)任務(wù)認(rèn)領(lǐng)這兩點(diǎn)我們沒有實(shí)踐腹鹉,因?yàn)槲覀冋J(rèn)為團(tuán)隊(duì)的開發(fā)人員能力參差不齊,有實(shí)習(xí)生敷硅、應(yīng)屆生功咒、普通開發(fā)、高級(jí)開發(fā)和資深開發(fā)組成绞蹦,當(dāng)然還有整個(gè)公司的架構(gòu)師提供架構(gòu)方案支持和技術(shù)方案評(píng)審力奋,團(tuán)隊(duì)人員的能力差異決定了我們還是按照傳統(tǒng)的方式分派任務(wù)和開發(fā)時(shí)間的評(píng)估,一般由pl或pm做好項(xiàng)目開發(fā)計(jì)劃坦辟、任務(wù)分派和開發(fā)時(shí)間評(píng)估刊侯,當(dāng)然如果是高級(jí)開發(fā)以上可以自行評(píng)估開發(fā)時(shí)間(pl和pm審核確認(rèn)),如果任務(wù)自行認(rèn)領(lǐng)和敏捷估算開發(fā)時(shí)間锉走,可想而知普通開發(fā)以下人員開發(fā)經(jīng)驗(yàn)不足,很難一下子挑戰(zhàn)難度大的開發(fā)任務(wù)和評(píng)估把握好自己的任務(wù)時(shí)間藕届,因此項(xiàng)目的質(zhì)量和時(shí)間幾乎是沒法保證的挪蹭,那么就達(dá)不到高質(zhì)效按時(shí)完成項(xiàng)目的管理目標(biāo)。如果團(tuán)隊(duì)人員都是資深開發(fā)或高級(jí)開發(fā)以上組成休偶,我認(rèn)為是可以大膽去實(shí)踐敏捷估算和開發(fā)任務(wù)自行認(rèn)領(lǐng)梁厉,盡可能發(fā)揮個(gè)人的創(chuàng)造性和激情。
總而言之,敏捷開發(fā)只是一種軟件工程的方法論词顾,一定要結(jié)合公司具體的實(shí)際情況來調(diào)整變通實(shí)踐八秃,一切教條主義必將會(huì)失敗。
文/阿青肉盹,寫代碼寫詩寫職場(chǎng)的程序猿大叔昔驱,傾力原創(chuàng)簡(jiǎn)單實(shí)用的硬干貨,轉(zhuǎn)載此文請(qǐng)聯(lián)系阿青上忍。