如何高效地進(jìn)行敏捷開(kāi)發(fā)管理
發(fā)布時(shí)間:2020/9/25 9:53:00
敏捷開(kāi)發(fā)其實(shí)也是企業(yè)的一種管理文化。
目前軟件行業(yè)敏捷開(kāi)發(fā)管理最大的問(wèn)題在于太看重具體的形式,而忽略了敏捷的初衷。
很多公司請(qǐng)幾個(gè)敏捷教練建立流程,把會(huì)議室的椅子都搬走宣布從今以后大家站著開(kāi)會(huì)了,使用敏捷管理工具建立迭代、建需求、分任務(wù),可是這真的就意味著敏捷了嗎?
因?yàn)槊艚,老板要求這個(gè)功能明天上線(xiàn),怎么實(shí)現(xiàn)我不管,畢竟響應(yīng)變化高于遵循計(jì)劃。
因?yàn)槊艚,我們希望每天至少發(fā)布一個(gè)版本,沒(méi)辦法,敏捷要求我們快速地交付可工作的軟件。
因?yàn)槊艚,雖然需求我們還沒(méi)想好,但是這個(gè)版本要保證本周內(nèi)上線(xiàn),敏捷宣言說(shuō)得好,要欣然面對(duì)需求變化。
因?yàn)槊艚,我們?xiàng)目一篇文檔也沒(méi)有,畢竟工作的軟件高于詳盡的文檔。
我們不禁要問(wèn),這真的是敏捷嗎?敏捷的初衷是團(tuán)隊(duì)成員能夠更加緊密地配合完成工作,敏捷開(kāi)發(fā)強(qiáng)調(diào)擁抱變化,但并不意味著可以隨心所欲地變更需求。敏捷開(kāi)發(fā)的實(shí)質(zhì)是通過(guò)迭代式增量軟件開(kāi)發(fā)的方式,防止出現(xiàn)長(zhǎng)期閉門(mén)造車(chē)嚴(yán)重偏離客戶(hù)需求,達(dá)到快速響應(yīng)市場(chǎng)變化的目的。
下面我想分享下我們公司在近百人的開(kāi)發(fā)團(tuán)隊(duì),同時(shí)進(jìn)行十幾個(gè)項(xiàng)目開(kāi)發(fā)的過(guò)程中,是如何使用CORNERSTONE管理平臺(tái)進(jìn)行敏捷項(xiàng)目管理的。
一、角色劃分
杰夫·薩瑟蘭將SCRUM團(tuán)隊(duì)中的角色分為三種:
開(kāi)發(fā)團(tuán)隊(duì)成員,負(fù)責(zé)開(kāi)展具體的開(kāi)發(fā)工作;
Scrum主管,協(xié)助開(kāi)發(fā)團(tuán)隊(duì)把事情做得更好;
產(chǎn)品負(fù)責(zé)人,決定應(yīng)該做什么工作,擬定待辦事項(xiàng)清單的內(nèi)容。
我們根據(jù)我們開(kāi)發(fā)中的實(shí)際情況將系統(tǒng)中的角色分為以下四種:
項(xiàng)目經(jīng)理:相當(dāng)于Scrum主管,負(fù)責(zé)協(xié)調(diào)團(tuán)隊(duì)內(nèi)部合作,召集站立會(huì)議,把控項(xiàng)目整體進(jìn)度。需要明確的是,項(xiàng)目經(jīng)理并不是一個(gè)傳統(tǒng)意義上的團(tuán)隊(duì)領(lǐng)導(dǎo)。用更流行的話(huà)說(shuō),項(xiàng)目經(jīng)理更像是一個(gè)仆人式領(lǐng)導(dǎo)。項(xiàng)目經(jīng)理不應(yīng)該對(duì)團(tuán)隊(duì)成員大吼小叫,也不會(huì)告訴研發(fā)人員該做什么以及如何開(kāi)發(fā)一款產(chǎn)品,而是應(yīng)該集中精力幫助研發(fā)人員清除前進(jìn)道路上的障礙。
產(chǎn)品經(jīng)理:相當(dāng)于產(chǎn)品負(fù)責(zé)人,負(fù)責(zé)決定應(yīng)該做什么工作,擬定待辦事項(xiàng)清單的內(nèi)容,確定各個(gè)事項(xiàng)的優(yōu)先順序。事實(shí)上,和很多人理解的不同是,確定各個(gè)事項(xiàng)的優(yōu)先級(jí)幾乎是敏捷中最重要的工作。為什么?在軟件開(kāi)發(fā)領(lǐng)域有一條根據(jù)數(shù)十年研究工作總結(jié)出來(lái)的原則,即在任何一款軟件中,80%的價(jià)值來(lái)自20%的功能。人們總喜歡說(shuō)每個(gè)需求都是重要的,但產(chǎn)品經(jīng)理需要問(wèn)一下自己,究竟哪些需求能夠給整個(gè)項(xiàng)目帶來(lái)最大的價(jià)值?而這些能夠帶來(lái)最大價(jià)值的需求就必須優(yōu)先完成。
開(kāi)發(fā)人員:開(kāi)發(fā)人員是項(xiàng)目開(kāi)發(fā)任務(wù)具體的實(shí)施者。他們負(fù)責(zé)完成開(kāi)發(fā)任務(wù),及時(shí)反饋開(kāi)發(fā)進(jìn)度。
測(cè)試人員:測(cè)試人員是項(xiàng)目測(cè)試任務(wù)具體的實(shí)施者。他們負(fù)責(zé)制定測(cè)試計(jì)劃,編寫(xiě)測(cè)試用例,創(chuàng)建以及回歸缺陷。
在CORNERSTONE中,我們可根據(jù)項(xiàng)目成員的具體職能設(shè)定不同的角色和權(quán)限。
二、收集需求(用戶(hù)故事)
在項(xiàng)目開(kāi)始前,產(chǎn)品經(jīng)理應(yīng)該基于用戶(hù)或市場(chǎng)的需求,來(lái)編寫(xiě)用戶(hù)故事,即CORNERSTONE中的需求。一個(gè)好的需求(用戶(hù)故事)一般應(yīng)該滿(mǎn)足INVEST標(biāo)準(zhǔn):
(一) 獨(dú)立性(Independent)——盡可能地使一個(gè)需求獨(dú)立于其他的需求。需求之間的依賴(lài)使得制訂計(jì)劃、確定優(yōu)先級(jí)和工作量評(píng)估都變得很困難,通常我們可以通過(guò)組合需求和分解需求來(lái)減少依賴(lài)性。
(二)可協(xié)商性(Negotiable)——需求的內(nèi)容要是可以協(xié)商的,需求不是合同。
(三)有價(jià)值(Valuable)——每個(gè)需求必須對(duì)客戶(hù)具有價(jià)值。
(四)可評(píng)估(Estimable)——開(kāi)發(fā)團(tuán)隊(duì)需要衡量需求,以便確定優(yōu)先級(jí)和工作量,并便于安排工作計(jì)劃。
(五)規(guī)模小(Small)——一個(gè)好的需求要盡量維持小規(guī)模,至少要確保在一個(gè)迭代周期中能夠完成。需求越大,在安排計(jì)劃、工作量評(píng)估等方面的風(fēng)險(xiǎn)就會(huì)越大。
(六)可測(cè)試(Testable)——一個(gè)需求要可以測(cè)試,以便確定它是可以完成的。如果一個(gè)需求不能夠測(cè)試,那么你就無(wú)法知道它什么時(shí)候可以完成。
基于以上原則,CORNERSTONE支持在創(chuàng)建需求時(shí),關(guān)聯(lián)其他需求(這樣我們便可以做到組合需求來(lái)控制單個(gè)需求的粒度!),關(guān)聯(lián)測(cè)試用例(確認(rèn)需求是可以被測(cè)試的!),關(guān)聯(lián)迭代(確保需求可以在一個(gè)迭代中完成!),設(shè)定優(yōu)先級(jí)以及開(kāi)始截止時(shí)間。
三、沖刺規(guī)劃會(huì)議(Sprint Planning Meeting)
在每個(gè)迭代開(kāi)發(fā)正式開(kāi)始前,我們都會(huì)舉行一次規(guī)劃會(huì)議,由產(chǎn)品負(fù)責(zé)人講解需求,由所有團(tuán)隊(duì)成員一起負(fù)責(zé)將需求拆解細(xì)化成具體的開(kāi)發(fā)任務(wù)。開(kāi)發(fā)任務(wù)的顆粒度最好足夠細(xì),以確保一名開(kāi)發(fā)人員在一個(gè)迭代周期內(nèi)可以開(kāi)發(fā)完成。
一次沖刺規(guī)劃會(huì)議中的產(chǎn)物一般為:
(一)具體分配到每個(gè)開(kāi)發(fā)人員的任務(wù)列表;
(二)會(huì)議紀(jì)要,CORNERSTONE提供了WIKI功能,可以在系統(tǒng)中保存每次會(huì)議的會(huì)議紀(jì)要;
四、每日站會(huì)
在迭代開(kāi)始后,我們團(tuán)隊(duì)一般每天上午固定15分鐘左右進(jìn)行內(nèi)部溝通。我們一般會(huì)打開(kāi)CORNERSTONE任務(wù)的看板視圖:
每個(gè)團(tuán)隊(duì)成員只需要用三到五句話(huà)說(shuō)明以下三個(gè)問(wèn)題:
我昨天做了什么來(lái)完成我的任務(wù);
我今天打算做什么來(lái)完成我的任務(wù);
有沒(méi)有什么可能的阻礙因素會(huì)導(dǎo)致我不能按時(shí)完成任務(wù)。
一般來(lái)說(shuō),項(xiàng)目負(fù)責(zé)人需要聚焦于幫助團(tuán)隊(duì)成員解決阻礙因素,以幫助所有任務(wù)按時(shí)完成。
五、隨時(shí)關(guān)注團(tuán)隊(duì)進(jìn)度
在迭代的開(kāi)發(fā)過(guò)程中,項(xiàng)目經(jīng)理需要隨時(shí)關(guān)注項(xiàng)目的開(kāi)發(fā)進(jìn)度。我們的項(xiàng)目經(jīng)理一般通過(guò)CORNERSTONE提供的項(xiàng)目?jī)x表板來(lái)查看項(xiàng)目的整體完成情況;通過(guò)燃盡圖了解任務(wù)的完成情況;通過(guò)缺陷分布、缺陷累計(jì)來(lái)了解迭代完成的質(zhì)量。
系統(tǒng)自帶的甘特圖能隨時(shí)查看迭代的具體進(jìn)程以及每個(gè)項(xiàng)目成員的任務(wù)分工情況,做到分配合理。
除了以上統(tǒng)計(jì)外,還有一個(gè)“報(bào)表”功能屬于管理員專(zhuān)用,報(bào)表功能包含迭代燃盡圖、代碼提交統(tǒng)計(jì)、狀態(tài)分布統(tǒng)計(jì)、每日新增曲線(xiàn),每日完成曲線(xiàn)、累計(jì)數(shù)量曲線(xiàn)以及成員工時(shí)列表等統(tǒng)計(jì)信息。
六、評(píng)估總結(jié)
在每一次迭代束之前,我們的研發(fā)團(tuán)隊(duì)成員還要聚在一起開(kāi)個(gè)評(píng)估會(huì),向產(chǎn)品負(fù)責(zé)人演示在這個(gè)階段之內(nèi)取得的成果,接受評(píng)估意見(jiàn)。研發(fā)團(tuán)隊(duì)成員會(huì)評(píng)估一下列表上的工作任務(wù)已經(jīng)完成了多少,自己是在這個(gè)階段的沖刺中認(rèn)領(lǐng)了太多任務(wù)以至于沒(méi)有做完,還是工作任務(wù)認(rèn)領(lǐng)得太少了。CORNERSTONE同樣提供了匯總視圖,用以在這類(lèi)會(huì)議上展示說(shuō)明。
最后總結(jié)一下,敏捷其實(shí)是一種管理方式,敏捷不會(huì)告訴我們具體每個(gè)項(xiàng)目應(yīng)該怎么做,杰夫·薩瑟蘭有句話(huà)說(shuō)得好,不要猜測(cè),要規(guī)劃、執(zhí)行、檢查、行動(dòng)。我認(rèn)為這句話(huà)道出了敏捷的本質(zhì)。