在實(shí)際的項目實(shí)施中,盡管旁邊常常站著(zhù)解決項目問(wèn)題的專(zhuān)家,但當項目經(jīng)理被不自覺(jué)地卷入到項目的各種問(wèn)題中時(shí),項目管理的各種方法也變得蒼白無(wú)力。此時(shí),敏捷開(kāi)發(fā)往往成為項目經(jīng)理的制勝法寶。
一張空白表格 挽救一個(gè)項目
不久前,筆者曾經(jīng)接手一個(gè)蹩腳的軟件開(kāi)發(fā)項目,這個(gè)項目曾一度處于失敗的邊緣,整個(gè)開(kāi)發(fā)團隊也是精神渙散。然而,他們的任務(wù)卻很復雜:項目團隊要開(kāi)發(fā)一套復雜的銀行管理系統并且項目交付時(shí)間迫在眉睫。
作為剛接手的項目經(jīng)理,在和團隊溝通之后,我把整個(gè)開(kāi)發(fā)團隊拉到一個(gè)離公司不遠,但很僻靜的小閣樓里,決定封閉開(kāi)發(fā),并讓團隊成員選擇自己最喜歡的工作方法,同時(shí)我自己也加入這個(gè)團隊,共同參與開(kāi)發(fā),由此開(kāi)始了我的項目流程改造之路。
首先,我和助手把事先準備好的正反印有不同顏色的空白表格發(fā)給了每一個(gè)項目組成員,要求大家在不同的顏色面上寫(xiě)出自己認為在過(guò)去的項目中,能提高項目開(kāi)發(fā)的事情,在另一面上寫(xiě)下延遲項目的行為。
然后,我們把所有表格進(jìn)行分類(lèi),并根據的大家所寫(xiě)的,保留那些有益的流程,改變那些會(huì )延遲項目的行為,制定了一個(gè)全新的開(kāi)發(fā)流程,剩下的事情就是,用實(shí)際的開(kāi)發(fā)效果來(lái)檢驗和完善這個(gè)新的項目流程。在反復修改了近3個(gè)星期之后,項目終于走上了正軌,經(jīng)過(guò)項目流程改造,不僅項目的開(kāi)發(fā)效率提高了很多,而且團隊之間的信任也加強了,最終挽救了整個(gè)項目,提前一個(gè)星期將項目交給了客戶(hù)。
敏捷開(kāi)發(fā) 把不同的事情交給不同的人
在上面項目中從上面的實(shí)例我們可以發(fā)掘出一點(diǎn),就是在項目的進(jìn)行中,我們采用了對不同的項目采用了不同用的流程和,采用不同用的工作秩序,甚至還可以是不同的人員,這恰恰遵循了。其實(shí),敏捷開(kāi)發(fā)就是意味著(zhù)將不同的事情交給不同的人的核心思想。,但是,所有的敏捷開(kāi)發(fā)方法都要有這些原則作保障:企業(yè)的股東要配合獨立自主的開(kāi)發(fā)團隊工作;團隊要有面對面地溝通甚至是爭論;這些溝通和爭論必須要圍繞軟件設計,測試以及重聚焦。筆者認為重聚焦是團隊工作的有效工具,最低也可以提高工作準確率,縮短工期
敏捷的提出以及其優(yōu)勢的體現,并不是偶然形成的,IT業(yè)的各種軟件項目的失敗、成本超支以及與其相伴的企業(yè)對傳統IT設計和開(kāi)發(fā)方法的低滿(mǎn)意度是的敏捷開(kāi)發(fā)倍受關(guān)注的重要原因。
在傳統的軟件開(kāi)發(fā)程序下,流程由所有的的開(kāi)發(fā)步驟和流程堆砌而成,需求分析、設計、實(shí)施、測試、整合、維護……而敏捷開(kāi)發(fā)對這種“堆砌”的思想做了改變,正如我們上面說(shuō)的敏捷屬性——把不同的事情交給了不同人,項目所有步驟都是要根據項目的特點(diǎn)而設立,而非一成不變。
非敏捷開(kāi)發(fā)項目的十個(gè)典型表現
眼下,有許多企業(yè)聲稱(chēng)自己正在采用敏捷開(kāi)發(fā)的方法。但是,筆者認為,叫得越兇越有可能沒(méi)有采用敏捷的方法。以下是沒(méi)有采用敏捷開(kāi)發(fā)的十個(gè)典型表現,如果你的項目和下面吻合,那么,毫無(wú)疑問(wèn)你的項目還沒(méi)有采用敏捷開(kāi)發(fā)。
1.在溝通時(shí),“發(fā)送”和“接收”是正確的,但是沒(méi)有被“存儲”,以致需要再次溝通;
2.項目團隊所使用的白色演示板始終是空白的;
3.作為項目經(jīng)理,雖然項目已經(jīng)花費近一半的時(shí)間,你還在懷疑,且還在測試你的團隊;
4.作為項目經(jīng)理,你始終搞不清企業(yè)股東對團隊的影響;
5.你了解關(guān)鍵路徑法(CMP),也知道它的用處以及如何使用,但基本上所有與項目有關(guān)的決策都以它為基礎;
6.作為項目經(jīng)理,你花費了很多的時(shí)間去管理項目的一些從屬事宜,而不是交給其他人;
7.團隊人員工作依然依賴(lài)于甘道圖(英文:Gant Chart,諧音:Can’t Chart);
8.團隊人員工作無(wú)聯(lián)系,開(kāi)發(fā)人員只是開(kāi)發(fā),測試人員只是測試,管理人員只是管理;
9.項目流程簡(jiǎn)化被認為是簡(jiǎn)單的工作;
10.常常參加一些不必要的會(huì )議,比如要更換一個(gè)項目控制演示版
敏捷 打一記混合開(kāi)發(fā)的組合拳
敏捷開(kāi)發(fā)明顯優(yōu)于傳統的軟件開(kāi)發(fā),但是,如果企業(yè)可以采用一種以上的方法,效果會(huì )更好。因此,敏捷開(kāi)發(fā)的方法并沒(méi)有統一的模式,企業(yè)要按照自己的方式去實(shí)施敏捷開(kāi)發(fā)。
目前世界上IT企業(yè)使用較普遍的方法有:Scrum, Crystal, Adaptive, Feature-Driven Development 以及Dynamic Systems Development Method (DSDM),這些方法的采用的前提就是企業(yè)有自己的開(kāi)發(fā)人員隊伍,他們都可以獨立的寫(xiě)代碼。
在介紹混合方法之前,我們要先提一下XP(Extreme Programming),敏捷開(kāi)發(fā)和XP是不同的,盡管也有相同之處,比如他們都屬于簡(jiǎn)便性方法論。任何單獨使用敏捷以及XP的實(shí)踐都沒(méi)有非常理想的成果,但是當組合使用XP和Scrum時(shí),卻可以發(fā)揮兩者的長(cháng)處。
有許多CIO、分析家以及敏捷專(zhuān)家都傾向于實(shí)施混合的、定制的敏捷組合。在筆者的調查中,一位CIO告訴筆者:“我不知道其他人是否單獨使用XP或是Scrum,對我而言,我認為那是非常困難的。”比如,在Scrum中,沒(méi)有項目經(jīng)理的概念(在Scrum中稱(chēng)為Scrum主管),但是,在我們的許多項目中多數是以項目經(jīng)理為管理中心來(lái)管理項目。此時(shí),我們就可以將敏捷開(kāi)發(fā)的思想和流程加入到現存的組織中。這樣的細節性的例子很多,筆者不再闡述。
總之,敏捷開(kāi)發(fā)的應用不應是單一的,要從方法、項目屬性、企業(yè)運營(yíng)方式等方面考慮組合實(shí)施。只有這樣才能更簡(jiǎn)便,更徹底的發(fā)揮出敏捷開(kāi)發(fā)的優(yōu)勢。