1.定義項目成功的標準

在項目的開始,要保證各方對于判斷項目是否成功有統(tǒng)一的認識。通常,跟緊預(yù)定的進度是明顯的成功要素,但是肯定還有其他的因素存在,比如,增加市場占有率、獲得指定的銷售量或銷售額、取得特定用戶滿意程度、淘汰一個高維護需求的遺留系統(tǒng)等。

2.把握各種要求之間的平衡

每個項目都需要平衡它的功能、人員、預(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ù)制定計劃工作表

如果你的組經(jīng)常承擔(dān)某種特定的通用任務(wù),你需要為這些任務(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)走在了計劃的前面。

9.為“過程改進”安排時間

你的小組成員已經(jīng)淹沒在他們當(dāng)前的項目中,但是如果你想把你的組提升到一個更高的軟件工程能力水平,你必須投一些時間在“過程改進”上。從你的項目進度中留出一些時間,因為軟件項目活動應(yīng)該包括做能夠幫助你下一個項目更加成功的過程改進。不要把你項目成員可以利用的時間的投入到項目任務(wù)中,然后驚訝于為什么他們在主動提高方面沒有任何進展。

10.管理項目的風(fēng)險

如果你不去識別和控制風(fēng)險,那么它們會控制你。在項目計劃時花一些時間集體討論可能的風(fēng)險因素,評估它們的潛在危害,并且決定你如何減輕或預(yù)防它們。

11.根據(jù)工作計劃而不是日歷來估計

人們通常以日歷時間做估計,但是我傾向于估計與任務(wù)相關(guān)聯(lián)的工作計劃(以“人時”為單位)的數(shù)量,然后把工作計劃轉(zhuǎn)換為日歷時間的估計。這個轉(zhuǎn)換基于每天我有多少有效的小時花費在項目任務(wù)上,我可能碰到的任何打斷或突發(fā)調(diào)整請求、會議,和所有其他會讓耗費時間的地方。

12.不要為人員安排超過工作時間80%的任務(wù)量

跟蹤你的組員每周實際花費在項目指定工作上的平均小時數(shù),實在會讓人吃驚。與我們被要求做的許多活動相關(guān)的任務(wù)切換的開銷,顯著地降低了我們的工作效率。一個員工一周理論上工作40小時,但不要只是因為有人在一項特定工作上每周花費10小時,去假設(shè)他或她可以馬上做4個這種任務(wù),如果他或她能夠處理完3個任務(wù),你很幸運了。

13.將培訓(xùn)時間放到計劃中

確定你的組員每年在培訓(xùn)上花費多少時間,并把它從組員工作在指定項目任務(wù)上的可用時間中減去。你可能在平均值中早已經(jīng)減去了休假時間、生病時間和其他的時間,對于培訓(xùn)時間也要同樣的處理。
 

14.記錄你的估算和你是如何達到估算的

當(dāng)你準備估算你的工作時,把它們記錄下來,并且記錄你是如何完成每個任務(wù)的。理解創(chuàng)建估算所用的假設(shè)和方法,能夠使它們在必要的時候更容易防護和調(diào)整,而且它將幫助你改善你的估算過程。

15.記錄估算并且使用估算工具

有很多商業(yè)工具可以幫助你估算整個項目。根據(jù)它們真實項目經(jīng)驗的巨大數(shù)據(jù)庫,這些工具可以給你一個可能的進度和人員分配安排選擇。它們同樣能夠幫助你避免進入“不可能區(qū)域”,即將任務(wù)量、小組勞動力和進度安排組合起來一看,根本不可能成功。

16.遵守學(xué)習(xí)曲線

如果你在項目中第一次嘗試新的過程、工具或技術(shù),你必須承受短期內(nèi)生產(chǎn)力降低的代價。不要期望在新軟件工程方法的第一次嘗試中獲得驚人的效益,在進度安排中考慮不可避免的學(xué)習(xí)曲線。

17.考慮意外緩沖

事情不會像你項目計劃的一樣準確地進行,所以你的預(yù)算和進度安排應(yīng)該在主要階段后面包括一些意外的緩沖,以適應(yīng)無法預(yù)料的事件。不幸的是,你的管理者或客戶可能把這些緩沖作為你的托辭,而不是明智地承認事實確實如此。向他們指明一些以前項目不愉快的意外,來說明你的深謀遠慮。

18.記錄實際情況與估算情況

如果你不記錄花費在每項任務(wù)上的實際工作時間,并和你的估算做比較,你將永遠不能提高你的估算能力,你的估算將永遠是猜測。

19.只有當(dāng)任務(wù)完成時,才認為該任務(wù)完成

使用英寸大小的小圓石的一個好處是:你可以區(qū)分每個小任務(wù)要么完成了,要么沒有完成。這比估計一個大任務(wù)在某個時候完成了多少百分比要實在得多。使用明確的標準來判斷一個步驟是否真正的完成了。

20.公開、公正地跟蹤項目狀態(tài)

創(chuàng)建一個良好的風(fēng)氣,讓項目成員對準確地報告項目的狀態(tài)感到安全。努力讓項目在準確的、基于數(shù)據(jù)的事實基礎(chǔ)上運行,而不是從因為害怕報告壞消息而產(chǎn)生的令人誤解的樂觀主義。使用項目狀態(tài)信息在必要的時候進行糾正操作,并且在條件允許時進行表揚。