軟體專案的樂觀主義

4 views
Skip to first unread message

cactus

unread,
Dec 13, 2007, 11:06:02 PM12/13/07
to MIS Blog
軟體專案的樂觀主義


| | | |
葉木金

2007/12/14 05:00

在軟體專案的開發過程中,時程提供了專案進度追踪與資源運用的控制基準,讓專案管理者能夠可以用更有效率的方式達成專案目標。通常,軟體開發者會藉由軟
體開發的經驗或專業預估合理的專案時程。理論上,專案時程代表軟體開發者對軟體需求者的承諾,同時也是專案團隊合作、與進度追踪的重要依據(註1)。

不過,軟體開發專案與其它的產品開發在開發流程上卻存在顯著的不同。就本質而言,軟體本身具有抽象化的特質,因此,軟體開發的專案時程預估大多是靠個人
的直覺或主觀認定。每個人對時程預估都有所不同的認知,對同一個軟體開發作業,經由不同的人所預估所需花費的時間與成本往往會有不同的結果,但卻沒有人
會確切知道該作業實際的完成時間與所耗資源與成本。

實際上,合理的軟體專案的開發時程往往要在接近完成時,才會真正地出現。在接近專案的尾聲時,我們才會真正知道我們預估的開發作業時間是否合理。但直到
專案後期才發現時間不足或需要投入更多的資源時,卻會為開發團隊帶來巨大的壓力,結果常使整個開發團隊措手不及而造成專案的迫切的危機。

為什麼計劃總是與現實差別那麼大,莫非真的是「計劃趕不上變化,變化比不上老闆一句話」嗎?難道軟體專案的時程真的是無法預估的嗎?事實上,沒有時程的
預估,專案就無從管理;而依照筆者在實務上的觀察中發現,問題的核心並不在時程無法正確預估,而是在於預估時程抱持太過樂觀的想法,因而對專案進行了無
效的管理。

過程與目標的混淆

以管理的觀點來看,專案時程只是為了要達成專案目標,所採用的最可行的方案。但在規劃過程中,專案的不確定性將使得時程的預估變得很複雜,而為了增加規
劃的效率,通常需要做一些假設來簡化這些的複雜性,以使時程規劃可以順利進行。

換句話說,專案時程本身存在許多的前提假設,這代表專案時程並非達成專案目標的唯一途徑,而是依計劃進行的一種可能性。但換個角度來看,專案時程有時候
可能會無法實現,或是就算它真的被實現了,卻不一定能達成專案的真正目標。例如,軟體開發者常常在緊要關頭才會發現到,原先所規劃的時程其實是太低估了
開發作業所需要的時間,或是發現專案時程遺漏了重要的工作項目,使得整體的工作產出無法整合。

因此,在開發過程中,造成軟體專案無法按時程進行的最主要原因,其實是在於把計劃錯認為專案目標,而忽略了該檢視存在專案時程中的假設是否依然成立,因
而造成了專案目標與過程之間產生了混淆。依照筆者的觀察,這種混淆往往會造成管理過程的溝通問題、以及進度追踪的數字迷惘的兩大後遺症。

管理過程的溝通問題

在軟體工程領域中,理論上,依據軟體的功能與複雜度,可運用軟體度量的概念來具體客觀度量軟體規模,以協助軟體開發者預估合理的開發時程與成本。不過,
在實務上,要準確地度量合理的開發時程,其實還是取決於軟體開發團隊的歷史經驗與度量的成本。

如此看來,只要時程規劃者擁有足夠的歷史經驗並且願意投入相當的度量成本,發展出精確的專案時程是可行的。但事實上,為專案做這樣的投資卻是不見得會划
得來的。因為,軟體開發的過程常常會牽涉許多複雜的人際溝通與事物的變化,要巨細彌遺地將它們表達成數字,並不是一件容易做到的事情,同時也很容易讓管
理變得很複雜,結果往往會未蒙其利,先得其害。

例如,筆者常常會發現有些專案管理者,只會一味要求開發者提供開發作業的進度,卻沒有深入理解開發過程的實際狀況,也不去專注於溝通與協調。因此,對於
團隊成員在開發的過程中所出現的困難,往往無法提供立即而有效的協助,而在無力改善問題的情形下,讓問題不斷地擴大而造成時程延宕也是必然的結果。

其實,預估開發作業的工期並不在於數字的精確性,而是為了形成團隊成員彼此分工合作的基礎。換句話說,要讓管理更有效率,時程規劃與進度控管必須兼顧專
案的複雜性與團隊的文化。更明確地說,時程規劃與進度追踪應該支援團隊達成專案目標,而不是用來產生對團隊的限制。專注於專案時程數字的表象而忘了忽視
了團隊的溝通,很容易形成在管理上的本末倒置。時程規劃的重點,應該是放在如何增進團隊的溝通與互動上。(待續)
Reply all
Reply to author
Forward
0 new messages