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