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