在最好的情況下,管理軟件項目也是很困難的。不幸的是,許多新項目經(jīng)理實質(zhì)上沒有受到任何就職培訓(xùn)。這里有20個成功的管理經(jīng)驗供項目經(jīng)理參考。
1. 定義項目成功的標準
在項目的開始,要保證風(fēng)險承擔者對于他們?nèi)绾闻袛囗椖渴欠癯晒τ薪y(tǒng)一的認識。經(jīng)常,滿足一個預(yù)定義的進度安排是唯一明顯的成功因素,但是肯定還有其他的因素存在,比如:增加市場占有率,獲得指定的銷售量或銷售額,取得特定用戶滿意程度,淘汰一個高維護需求的遺留系統(tǒng),取得一個特定的事務(wù)處理量并保證正確性。
2. 識別項目的驅(qū)動、約束和自由程度
每個項目都需要平衡它的功能性,人員,預(yù)算,進度和質(zhì)量目標。我們把以上五個項目方面中的每一個方面,要么定義成一個約束,你必須在這個約束中進行操作,要么定義成與項目成功對應(yīng)的驅(qū)動,或者定義成通向成功的自由程度,你可以在一個規(guī)定的范圍內(nèi)調(diào)整。
3. 定義產(chǎn)品發(fā)布標準
在項目早期,要決定用什么標準來確定產(chǎn)品是否準備好發(fā)布了。你可以把發(fā)布標準基于:還存在有多少個高優(yōu)先級的缺陷,性能度量,特定功能完全可操作,或其他方面表明項目已經(jīng)達到了它的目的。不管你選擇了什么標準,都應(yīng)該是可實現(xiàn)的、可測量的、文檔化的,并且與你的客戶指的“質(zhì)量”一致。
4. 溝通承諾
盡管有承諾不可能事件的壓力,從不作一個你知道你不能保證的承諾。和客戶和管理人員溝通哪些可以實際取得時,要有好的信譽。你的任何以前項目的數(shù)據(jù)會幫助你作說服的論據(jù),雖然這對于不講道理的人來說沒有任何真正的防御作用。
5. 寫一個計劃
有些人認為,花時間寫計劃還不如花時間寫代碼,但是我不這么認為。困難的部分不是寫計劃。困難的部分是作這個計劃--思考,溝通,權(quán)衡,交流,提問并且傾聽。你用來分析解決問題需要花費的時間,會減少項目以后會帶給你的意外。
6. 把任務(wù)分解成英寸大小的小圓石
英寸大小的小圓石是縮小了的里程碑。把大任務(wù)分解成多個小任務(wù),幫助你更加精確的估計它們,暴露出在其他情況下你可能沒有想到的工作活動,并且保證更加精確、細密的狀態(tài)跟蹤。
7. 為通用的大任務(wù)開發(fā)計劃工作表
如果你的組經(jīng)常承擔某種特定的通用任務(wù),如實現(xiàn)一個新的對象類,你需要為這些任務(wù)開發(fā)一個活動檢查列表和計劃工作表。每個檢查列表應(yīng)該包括這個大任務(wù)可能需要的所有步驟。這些檢查列表和工作表將幫助小組成員確定和評估與他/她必須處理的大任務(wù)的每個實例相關(guān)的工作量。
8. 計劃中,在質(zhì)量控制活動后應(yīng)該有修改工作
幾乎所有的質(zhì)量控制活動,如測試和技術(shù)評審,都會發(fā)現(xiàn)缺陷或其他提高的可能。你的項目進度或工作細分結(jié)構(gòu),應(yīng)該把每次質(zhì)量控制活動后的修改,作為一個單獨的任務(wù)包括進去。如果你事實上不用作任何的修改,很好,你已經(jīng)走在了本任務(wù)的計劃前面。但是不要去指望它。
9. 為過程改進安排時間
你的小組成員已經(jīng)淹沒在他們當前的項目中,但是如果你想把你的組提升到一個更高的軟件工程能力水平,你就必須投資一些時間在過程改進上。從你的項目進度中留出一些時間,因為軟件項目活動應(yīng)該包括做能夠幫助你下一個項目更加成功的過程改進。不要把你項目成員可以利用的時間100%的投入到項目任務(wù)中,然后驚訝于為什么他們在主動提高方面沒有任何進展。
10. 管理項目的風(fēng)險
如果你不去識別和控制風(fēng)險,那么它們會控制你。在項目計劃時花一些時間集體討論可能的風(fēng)險因素,評估它們的潛在危害,并且決定你如何減輕或預(yù)防它們。要一個軟件風(fēng)險管理的簡要的指南。
11. 根據(jù)工作計劃而不是日歷來作估計
人們通常以日歷時間作估計,但是我傾向于估計與任務(wù)相關(guān)聯(lián)的工作計劃(以人時為單位)的數(shù)量,然后把工作計劃轉(zhuǎn)換為日歷時間的估計。這個轉(zhuǎn)換基于每天我有多少有效的小時花費在項目任務(wù)上,我可能碰到的任何打斷或突發(fā)調(diào)整請求,會議,和所有其他會讓時間消失的地方。
12. 不要為人員安排超過他們80%的時間
跟蹤你的組員每周實際花費在項目指定工作的平均小時數(shù),實在會讓人吃驚。與我們被要求做的許多活動相關(guān)的任務(wù)切換的開銷,顯著地降低了我們的工作效率。不要只是因為有人在一項特定工作上每周花費10小時,就去假設(shè)他或她可以馬上做4個這種任務(wù),如果他或她能夠處理完3個任務(wù),你就很幸運了。
13. 將培訓(xùn)時間放到計劃中
確定你的組員每年在培訓(xùn)上花費多少時間,并把它從組員工作在指定項目任務(wù)上的可用時間中減去。你可能在平均值中早已經(jīng)減去了休假時間、生病時間和其他的時間,對于培訓(xùn)時間也要同樣的處理。
14. 記錄你的估算和你是如何達到估算的
當你準備估算你的工作時,把它們記錄下來,并且記錄你是如何完成每個任務(wù)的。理解創(chuàng)建估算所用的假設(shè)和方法,能夠使它們在必要的時候更容易防護和調(diào)整,而且它將幫助你改善你的估算過程。
15. 記錄估算并且使用估算工具
很多商業(yè)工具可以幫助你估算整個項目。根據(jù)它們真實項目經(jīng)驗的巨大數(shù)據(jù)庫,這些工具可以給你一個可能的進度和人員分配安排選擇。它們同樣能夠幫助你避免進入“不可能區(qū)域”,即產(chǎn)品大小,小組大小和進度安排組合起來沒有已知項目成功的情況。Software Productivity Centre(www.spc.ca)公司的Estimate Pro是可以一試的好工具。
16. 遵守學(xué)習(xí)曲線
如果你在項目中第一次嘗試新的過程,工具或技術(shù),你必須認可付出短期內(nèi)生產(chǎn)力降低的代價。不要期望在新軟件工程方法的第一次嘗試中就獲得驚人的效益,在進度安排中考慮不可避免的學(xué)習(xí)曲線。
17. 考慮意外緩沖
事情不會象你項目計劃的一樣準確的進行,所以你的預(yù)算和進度安排應(yīng)該在主要階段后面包括一些意外的緩沖,以適應(yīng)無法預(yù)料的事件。不幸的是,你的管理者或客戶可能把這些緩沖作為填料,而不是明智的承認事實確實如此。指明一些以前項目不愉快的意外,來說明你的深謀遠慮。
18. 記錄實際情況與估算情況
如果你不記錄花費在每項任務(wù)上的實際工作時間,并和你的估算作比較,你將永遠不能提高你的估算能力。你的估算將永遠是猜測。
19. 只有當任務(wù)100%完成時,才認為該任務(wù)完成
使用英寸大小的小圓石的一個好處是,你可以區(qū)分每個小任務(wù)要么完成了,要么沒有完成,這比估計一個大任務(wù)在某個時候完成了多少百分比要實在的多。不要讓人們只入不舍他們?nèi)蝿?wù)的完成狀態(tài);使用明確的標準來判斷一個步驟是否真正的完成了。
20. 公開、公正地跟蹤項目狀態(tài)
創(chuàng)建一個良好的風(fēng)氣,讓項目成員對準確地報告項目的狀態(tài)感到安全。努力讓項目在準確的、基于數(shù)據(jù)的事實基礎(chǔ)上運行,而不是從因為害怕報告壞消息而產(chǎn)生的令人誤解的樂觀主義。使用項目狀態(tài)信息在必要的時候進行糾正操作,并且在條件允許時進行表揚。