反思傳統(tǒng)項(xiàng)目管理技術(shù)在軟件開發(fā)活動(dòng)中的應(yīng)用,我們發(fā)現(xiàn):這樣的做法過于強(qiáng)調(diào)計(jì)劃管理和控制的自動(dòng)調(diào)節(jié)模式,而對項(xiàng)目管理應(yīng)該做的重點(diǎn)—實(shí)施—不夠重視。
針對軟件開發(fā)活動(dòng),傳統(tǒng)計(jì)劃存在一定的問題:如計(jì)劃的動(dòng)機(jī)通常來自于項(xiàng)目之外,即制定計(jì)劃的目的可能是為了滿足管理的要求,而不是基于需要完成的工作;制定計(jì)劃的動(dòng)機(jī)往往與控制欲望有關(guān),而不是與實(shí)際工作的實(shí)施需要有關(guān);制定計(jì)劃的人不參與實(shí)際工作,項(xiàng)目經(jīng)理為了控制目的而制定的、以任務(wù)為基礎(chǔ)的計(jì)劃與開發(fā)人員的實(shí)際工作幾乎沒有任何聯(lián)系;站在項(xiàng)目管理的角度,計(jì)劃和控制成為了焦點(diǎn),而具體做事被看作是不重要的,項(xiàng)目任務(wù)的合法化優(yōu)先于產(chǎn)生的結(jié)果。
上述問題導(dǎo)致項(xiàng)目管理活動(dòng)與軟件開發(fā)的具體活動(dòng)存在脫節(jié)和兩層皮的問題,客觀上導(dǎo)致了管理費(fèi)的增加,而看不到項(xiàng)目管理對于項(xiàng)目的真實(shí)價(jià)值。
二、使用敏捷項(xiàng)目管理的初步實(shí)踐
在當(dāng)前的市場條件下,為商業(yè)競爭的需要,開發(fā)團(tuán)隊(duì)必須有以更快的速度開發(fā)和交付質(zhì)量更好、更具客戶價(jià)值和創(chuàng)新性的產(chǎn)品。軟件開發(fā)的方式須由預(yù)見性(以計(jì)劃為推動(dòng)力)向適應(yīng)性(對不確定性的探索)轉(zhuǎn)變,以滿足客戶對創(chuàng)新的不斷需求。與此相適應(yīng),項(xiàng)目管理也需要強(qiáng)調(diào)速度、機(jī)動(dòng)性和質(zhì)量,一種區(qū)別于傳統(tǒng)結(jié)構(gòu)化、改良或創(chuàng)新的項(xiàng)目方法,敏捷項(xiàng)目管理誕生了。
敏捷項(xiàng)目管理的核心是敏捷軟件開發(fā),與傳統(tǒng)軟件開發(fā)模式相比,敏捷軟件開發(fā)突出如下四點(diǎn):1)個(gè)體和交互勝過過程與工具;2)可以工作的軟件勝過面面俱到的文檔;3)客戶合作勝過合同談判;4)響應(yīng)變化勝過遵循計(jì)劃。
敏捷項(xiàng)目管理是側(cè)重于實(shí)施的模式,而不是側(cè)重于計(jì)劃和控制的模式。在敏捷項(xiàng)目管理中,項(xiàng)目經(jīng)理的首要任務(wù)是促進(jìn)產(chǎn)品構(gòu)想的構(gòu)思,并指導(dǎo)團(tuán)隊(duì)去實(shí)現(xiàn)該構(gòu)想,而不是制定計(jì)劃和進(jìn)度表、控制進(jìn)度,保證“計(jì)劃”得以實(shí)行。當(dāng)然敏捷項(xiàng)目管理不是反對計(jì)劃的模式。計(jì)劃(和控制)是敏捷項(xiàng)目管理的組成部分,只不過它不是重點(diǎn)。
在做好做實(shí)需求管理、變更管理、測試管理、配置管理、分析與設(shè)計(jì)管理等業(yè)務(wù)的基礎(chǔ)上,筆者在自己的團(tuán)隊(duì)中推行“以構(gòu)架為中心、用例驅(qū)動(dòng)、迭代開發(fā)”的敏捷項(xiàng)目管理方法。試圖在對傳統(tǒng)項(xiàng)目管理方法反思的基礎(chǔ)上,提高項(xiàng)目管理活動(dòng)對于項(xiàng)目成功的真正價(jià)值。
“以構(gòu)架為中心、用例驅(qū)動(dòng)、迭代開發(fā)”三句話來自IBM的RUP軟件開發(fā)過程,是一種重量級的軟件開發(fā)過程指南。需要有明確的責(zé)任分工和大量的過程文檔,顯然不適合中小型開發(fā)團(tuán)隊(duì)。但卻道出了成功進(jìn)行軟件系統(tǒng)開發(fā)的核心要素:缺乏良好的構(gòu)架,軟件可維護(hù)性差,質(zhì)量不行;必須是用例(需求)驅(qū)動(dòng);迭代開發(fā)又稱增量開發(fā),指構(gòu)建軟件的方式,整個(gè)生命周期依次由幾個(gè)迭代組成,每個(gè)迭代是自包含的迷你項(xiàng)目,他們由活動(dòng)組成,例如,需求分析、設(shè)計(jì)、編程和測試。每次迭代之后將產(chǎn)生一個(gè)迭代版本,這是一個(gè)部分完成的系統(tǒng),但它是穩(wěn)定的、完整的和被測試過的。
在流派上,敏捷包括Scrum、極限編程、統(tǒng)一過程(RUP)、Evo等方法。結(jié)合團(tuán)隊(duì)實(shí)際情況,綜合各種方法,進(jìn)行了如下一些嘗試性實(shí)踐:
1)轉(zhuǎn)變團(tuán)隊(duì)的溝通方式:過程文件盡可能減少,能不形成office文件的,盡量不需要。對于需要多人協(xié)作溝通的,盡量使用軟件系統(tǒng),如需求使用TRICHORD,數(shù)據(jù)庫設(shè)計(jì)使用PowerDesigner,Bug及變更使用Bugfree,配置管理使用SVN,測試使用TestDirector,項(xiàng)目管理系統(tǒng)使用PowerOn(主要管理實(shí)施文件、項(xiàng)目成本、人工時(shí))。給每個(gè)團(tuán)隊(duì)都配備白板等溝通工具。同時(shí)項(xiàng)目團(tuán)隊(duì)還有自己的門戶網(wǎng)站。項(xiàng)目成員對這些工具軟件的充分應(yīng)用,都是為了提高溝通的效率,減少溝通過程中的信息丟失,同時(shí)都是些必要的溝通,項(xiàng)目成員之間基于軟件系統(tǒng)的溝通過程,也是業(yè)務(wù)的處理過程。
2)采用迭代的開發(fā)方式:我們約定每次小版本的發(fā)布周期為1個(gè)月,每周進(jìn)行一次迭代,經(jīng)過4次迭代,小版本即可發(fā)布試用。每次小版本包括若干需要實(shí)現(xiàn)的Feature, 在每次迭代中,F(xiàn)eature細(xì)化為用戶Story,而對于每個(gè)Story的實(shí)現(xiàn),則再細(xì)化為具體的任務(wù)(Task)。這樣的劃分,與WBS的劃分 基本一致,不同的是,傳統(tǒng)項(xiàng)目管理的Task很重要的一個(gè)屬性是時(shí)間,以及作業(yè)之間的邏輯關(guān)系,而迭代開發(fā)中的這種劃分,卻是為了更好的完成任務(wù),Task使用Size度量工作量的大小,并且使用看板管理每次迭代的總體進(jìn)度。
3)變傳統(tǒng)的計(jì)劃編制與進(jìn)度控制模式為直觀的看板式管理辦法:
通過把Feature、Story、Task以看板的形式,直觀的體現(xiàn)在團(tuán)隊(duì)成員面前,團(tuán)隊(duì)成員可以更好的理解當(dāng)前任務(wù)及進(jìn)度,并且項(xiàng)目管理不自覺地已經(jīng)蘊(yùn)含在日;顒(dòng)中,項(xiàng)目管理這支手看不不見了,但仍舊在起作用,團(tuán)隊(duì)的知識(shí)工作者則獲得了更好地工作環(huán)境,公司獲得了更高質(zhì)量、更及時(shí)的的交付產(chǎn)品。
三、總結(jié)
通過敏捷項(xiàng)目管理的初步實(shí)踐,團(tuán)隊(duì)的產(chǎn)品交付有了固定的頻率,每次迭代出來的都是可以直接交付客戶使用的版本,也防止了需求蔓延導(dǎo)致項(xiàng)目進(jìn)度拖后挫傷成員積極性等事情的發(fā)生,極大的提高了團(tuán)隊(duì)成員的積極性和生產(chǎn)效率。PowerOn各個(gè)小版本的交付周期平均縮短1.5個(gè)月,保證了公司為應(yīng)對市場變化而提高產(chǎn)品研發(fā)效率的戰(zhàn)略要求。
敏捷項(xiàng)目管理在傳統(tǒng)項(xiàng)目管理的基礎(chǔ)上,把項(xiàng)目管理的職能化“有形”為“無形”,適合知識(shí)型員工的、帶有創(chuàng)新性質(zhì)的中小型項(xiàng)目,為我們縮短產(chǎn)品交付周期、提高員工積極性,營造良好的團(tuán)隊(duì)文化提供了一條新的途徑。