談程式開發專案進度管控

早期軟體工程的研究,著重在軟體需求的流程上,把所有的目光集中在客戶需求的滿足,目的在撰寫出完全符合客戶需求的程式。於是專案進度的超時與成本的超支,成為軟體開發者的夢魘,甚至被視為理所當然,大家常開玩笑地說:『時程表就是用來延遲的』。

由於專案的超時與成本的超支,直接影響到專案是否能繼續進行,為了確保專案的成功,我們不應該將超時與超支視為專案的常態,任由成本與時程如洪水般的失控,而要將成本與時程這兩項重要因素,與客戶的需求並列為專案管控的成功要素,只有當這三項目標同時達成,專案才算成功。

計劃不等於執行過程

用過 MS Project 的人都對『甘特圖』印象深刻,但是大多數人只把它用在專案計劃之中,並不曉得如何用來有效管理專案進度。事實上,MS Project 不只用在專案計劃中,還能夠設定專案每一個工作項目的執行進度,進一步結合資源與成本規劃之後,還可以經由實獲值分析法  (Earned Value) 計算出整個專案的執行百分比。

圖 1
圖 1

[圖一] 是我們常見的進度報告,這個進度報告存在一個最大的問題是:『實際執行進度與現在的時間完全相同,時間走到那裡進度也就到那裡。』有經驗的專案成員應該很 清楚問題所在,尤其是程式開發專案,開發過程中充滿了許多的不確定性,專案的進度很少是一分不差地照著專案原先的計劃在走。由於不確定性因素很高,每一項 工作項目的執行進度有快也有慢,沒有道理完完全全地符合專案計劃所規劃的進度。

見到 [圖一] 這樣的進度表,最有可能的解釋是:專案經理沒有實際掌握專案執行的進度,只是因為時間走到這裡,進度就顯示到這裡。還有另一種可能是:專案經理的主管根本 不懂專案多變的特性,盲目地要求專案經理填報完全符合計劃的進度。不管是上述哪一個理由,結論都是這個專案的進度沒有確實反應到現況,如果未能採取進一步 的改善措施,本專案必然是嚴重延誤的下場。

解決這樣的問題,專案經理和專案經理的主管都必須改變一個觀念:專案雖然是照劇本 (專案計劃書) 在進行,但是目標要放在確保專案在期限之前完成,過程中是快是慢並不是重點,專案提前固然值得慶幸,專案延遲只是一個警訊,必要時,要大家坐下來檢討資源 配置或工法,以確保整個專案能如期完成。

實際評估專案進度

要怎麼有效追踨專案進度呢? 如果各別工作項目的成員隱瞞或虛報進度怎麼辦? 就以 [圖一] 為例,其中第三項工作項目提報進度是 33%,專案經理和專案成員是如何達成一致的共識,確定它就是 33% 呢? 為什麼不是 30% 或是 40%?特別是在程式的開發上,我們很難引用一個客觀的方法來衡量個別程式的進度。 別忘了,『專案的最終時程是否能達成才是我們的要求,個別工作項目是否精確的開始或結束,相對之下不是那麼重要』。我們需要一種客觀的指標,能夠讓下到專 案成員,上到客戶、老闆都能一致清楚並同意的進度衡量指標。建立這樣的衡量指標需要經過充分的溝通,不是單方面由專案經理或主管決定,否則衡量指標的執行 效益會很差。

工作項目狀態 進度 
未開始 0%
進行中 50%
已完成 100%

圖 2
圖 2

[表一] 是常用的進度衡量指標,[圖二] 則是依據此衡量方式可能產生的結果,表面上看起來似乎擴大了專案進度的衡量偏差,其實不然,因為使用了客觀的衡量指標,使得人為主觀的偏差反而大幅減少, 更能接近專案實際上的執行現況。 也許有人會覺得這樣的衡量指標似乎太粗糙,能不能把指標分得更細,分成五個階段甚至更多的階段?當然,你可以這麼做,但是通常沒有必要。不是每一個工作項 目都可以分得更細,而且若分得更細,可能會失去衡量的客觀基準。進一步來看,如果有某一個工作項目可以分成更多的執行細節,我們大可把它分解成更多的較小 的工作項目,直到不能再細分下去為止。

專案經理在追蹤進度時,問題從『你手中的部份做得怎麼樣了?』改成由專案成員自動填報工作現況,專案經理不必逐一檢查每一個工作項目,只要把焦點放 在有機會造成整體時程延後的工作延誤上,而這些延誤通常是出現在『要徑』(Critical Path) 之中 ([圖二]中紅色的部份)。專案更聚焦也有助於專案資源投注在確保專案順利完成的事務上。

進度落後要有效控制,而不是過度驚慌

所有的專案經理都會關注『延遲』,延遲若是沒控制好,總是會像傳染病般,迅速地蔓延到專案的各個角落。理由很簡單,當某一個工作項目延遲了,會導致 接下來的工作項目延後開始,而下一項工作延後結束,又影響到更後面的工作項目,而延後開始還有可能讓計劃中排定的關鍵資源卡到其他的計劃(例如:預約使用 測試中心進行壓力負載測試),於是『延遲』不僅會逐漸傳佈到各個角落,還會如滾雪球般越滾越大。

想要有效控制『延遲』,首先是要調整專案經理的觀念,要認淸程式開發的不確定性很高,可能一個 bug 卡很久找不出來,也可能原本預計 20 個人時的工作,一天之內就完成了,工作項目可能慢也可能快完成。專案經理先要有『延遲』的容忍度,若是缺乏對『延遲』的容忍度,會造成專案成員對『延遲』 事件的隱匿不報,專案經理反而更無法掌握目前專案真正的執行進度。一個 bug 卡很久,其實對專案成員來講,心理上會有很大的壓力,專案經理要注意別施加更多的壓力在專案成員身上,要鼓勵專案成員主動提出狀況,也許其他成員曾經解決 過類似的 bug,問題馬上迎刃而解。

『延遲』的容忍度應該要有多大呢? 到什麼情況下要採取進一步的措施? 關鍵在對專案所保留的『風險緩衝』剩下多少,因為工作延遲會直接或間接影響到專案的最終時程,專案計劃通常會保留一部份『風險緩衝』的時間,就像是專案經 理口袋裡的『時間存摺』,當工作延遲就從緩衝中提出時間來貼補,工作超前就把多餘的時間存回存摺中,留待因應後續的狀況發生。

當專案經理預見到『時間存摺』可能耗盡時,就要緊急召開會議,討論目前的狀況,並討論是否需要變更後續的專案計劃,以達到預期的專案最終時程。要特 別注意的是:會議討論的重點不是『如何趕上專案計劃的進度』,而應該是『如何滿足專案的最終時程』,因為專案計劃中的進度是『計劃』來的,隨時可以透過計 劃修正改變它,但專案最終時程是由合約或市場決定,通常不允許被改變。專案在計劃初期,通常是考慮風險最小或成本最低的資源與工法,一旦專案受到某種程度 的壓縮,特別是因為延遲所造成的可用時間減少,就得考慮在不影響專案內容的前提下,以部份金錢爭取寶貴的專案時間。例如:原來某一個元件的開發,是為了投 資公司內的元件發展,但如果市場上有其他可購得的元件,可考慮以採購的元件暫代,或者是調整元件化的順序,先進行功能開發,之後開進行元件化工作,雖然整 體費用可能較不經濟,但專案進度獲得改善才是最重要的。

進度超前要擴大戰果

不知大家有沒有遇到一個經驗:某工程師預估一項工作約需 10 個工作天,結果他花 6 天就把工作完成,但卻沒有想到告訴任何人,他心想:『反正下一個工程師還在忙其他的工作』,繼續做其他的工作,等 10 個工作天到了,專案經理來接收進度,他馬上交出已完成的工作,專案經理也很高興地拿著成果交給下一個工作師繼續專案的進行。

這樣故事天天上演著,專案經理也沒有發現什麼不對,該工程師確實如期交付他的工作,雖然他提前完成,沒有人認為他要提早交出成果,即使是提早交出成 果,下一位接手的人,可能認為計劃時間還沒開始,拿到手的工作也會先擺著,直到計劃開始時間到了,才開始進行計劃中的工作,一切似乎沒什麼不對。

但是從整體進度掌控的角度來看,工作可能延遲也可能超前,延遲的工作要消耗『時間存摺』裡的預備時間,而所有超前的工作若都被視為『如期完工』,並 未把節省下的時間加入『時間存摺』之中。『時間存摺』只有出沒有進,如非當初預留的緩衝時間很多 (其實不太可能有足夠多),整個專案只有超時收場。

專案需要一個獎勵措施,讓省下來的專案時間可以存入『時間存摺』之中,包含兩個要件:一是工作項目提前完成,二是接下來的工作項目提前開始進行。獎 勵方法可能是口頭上或實質上的獎勵,不管是什麼方式,一定要有適度的激勵作用,不要只是流於形式。也要避免過度的獎勵,扭曲了專案執行的重點,例如:為了 賺取獎勵,故意浮報工時的預估,或是虛報實際的工作進度。

由於程式開發時程的不確定性非常高,大多數專案經理只好依照客戶的需求,抓一個不知該如何完成的時間規劃,心裡抱著:『不管怎麼規劃,大家都會認為 不夠用,反正等做不到,再來開會研究。』這個心態是很不健康的。專案經理如同樂團的指揮,透過小小的指揮棒,指揮整個樂隊完成一場漂亮的演出。

作者:周旺暾,PMP (台灣微軟應用開發技術經理)
2004 年 12 月

Advertisements

2 Responses to 談程式開發專案進度管控

  1. quibids scam says:

    Thanks for your handy post. As time passes, I have been able to understand that the actual symptoms of
    mesothelioma are caused by a build up connected fluid regarding
    the lining in the lung and the chest cavity.
    The sickness may start inside the chest region and spread to other parts of the body.
    Other symptoms of pleural mesothelioma cancer include
    weight reduction, severe deep breathing trouble,
    nausea, difficulty ingesting, and swelling of the face and neck areas.
    It must be noted some people existing with the disease tend not to experience almost any serious indicators
    at all.

  2. I am sure this article has touched all the internet users,
    its really really fastidious post on building up new blog.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: