時(shí)間管理是軟件開發(fā)管理中的一個(gè)關(guān)鍵職能,也稱為進(jìn)度管理。它對于項(xiàng)目控制至關(guān)重要,也是對項(xiàng)目成本有直接影響的因素之一。因?yàn)榭s短項(xiàng)目的時(shí)間不僅僅是能節(jié)約那些與時(shí)間相關(guān)的成本,而且還可以避免由于延期導(dǎo)致的損失,如賠付延期交付違約金等。本文從軟件開發(fā)項(xiàng)目的時(shí)間管理角度出發(fā),介紹關(guān)鍵路徑法在時(shí)間管理中的應(yīng)用,并提出實(shí)現(xiàn)關(guān)鍵路徑法的步驟和建議。
時(shí)間管理常見的錯(cuò)誤是什么?
軟件開發(fā)項(xiàng)目延期的原因也許有很多,但肯定有一條的就是時(shí)間沒有管理好,這被公認(rèn)稱為是項(xiàng)目延期的第一因素。事實(shí)上,時(shí)間管理究竟是"錯(cuò)在哪里"呢?這個(gè)問題通常比技術(shù)或者業(yè)務(wù)問題更值得花時(shí)間來思考。
(1)時(shí)間進(jìn)度表基線制定錯(cuò)誤
一般來說,在軟件開發(fā)中追求的是"如期、如質(zhì)、如預(yù)算"的開發(fā)出適合需求的軟件產(chǎn)品。因此,成功的軟件開發(fā)必須事先制定具有一定的預(yù)見性、前瞻性和切實(shí)可行的時(shí)間進(jìn)度計(jì)劃。項(xiàng)目時(shí)間進(jìn)度基線是指一種基線化的開始日期和結(jié)束日期,它代表著項(xiàng)目細(xì)分后的每個(gè)任務(wù)的預(yù)期開始日期和預(yù)期完成日期。
一般來說,進(jìn)度表基線是使用經(jīng)過評審的歷時(shí)估算和資源估算來構(gòu)建的,該進(jìn)度表也是作為任務(wù)進(jìn)度跟蹤的基線。項(xiàng)目進(jìn)度表可以是總體概覽的,比如項(xiàng)目主進(jìn)度表或者里程碑進(jìn)度表;也可以是明細(xì)的,比如每個(gè)里程碑內(nèi)的詳細(xì)任務(wù)進(jìn)度表。因此,當(dāng)進(jìn)度表基線制定有失誤的時(shí)候,每個(gè)任務(wù)的開始時(shí)間和完成時(shí)間就會產(chǎn)生混亂,嚴(yán)重的時(shí)候還會在時(shí)間上不能銜接,進(jìn)而就會帶來資源增加、成本超支等問題。事實(shí)上,實(shí)踐經(jīng)驗(yàn)也證明許多軟件開發(fā)項(xiàng)目的延期,是由于在進(jìn)度表基線的時(shí)間規(guī)劃上或多或少的存在著失誤。
(2)錯(cuò)誤的縮短項(xiàng)目非關(guān)鍵路徑時(shí)間
在軟件開發(fā)過程中,人們通常會認(rèn)為如果能縮短項(xiàng)目某些任務(wù)的工期就可能會縮短項(xiàng)目的總工期。例如,某個(gè)工作結(jié)果需要項(xiàng)目團(tuán)隊(duì)花費(fèi)二個(gè)月來完成,但如果能夠在一個(gè)月內(nèi)完成任務(wù),就可能會大大縮短項(xiàng)目進(jìn)度了。因此,許多項(xiàng)目經(jīng)理及其團(tuán)隊(duì)可能會使用工期壓縮技術(shù)來提高某些任務(wù)的進(jìn)度,或通過給這些任務(wù)分配更多的資源來縮短工期。
例如,通過趕工的方式來實(shí)現(xiàn)縮短工期。趕工的主要優(yōu)點(diǎn)是可縮短完成項(xiàng)目的時(shí)間,但缺點(diǎn)是通常會提高項(xiàng)目的總成本。而實(shí)際上,軟件開發(fā)項(xiàng)目通常是一個(gè)迭代的過程,它不但需要規(guī)劃好項(xiàng)目每一個(gè)任務(wù)的開始和結(jié)束時(shí)間,而且還需要做好任務(wù)上下之間、前后順序和關(guān)聯(lián)之間的銜接。因?yàn)槿绻ㄟ^趕工只是縮短了非關(guān)鍵路徑上的任務(wù),并不會縮短項(xiàng)目的開發(fā)時(shí)間,而只會是提高了開發(fā)成本。
(3)沒有明確的時(shí)間管理,極易產(chǎn)生"拖延綜合癥"
所有的項(xiàng)目工作都是通過人來實(shí)施的,如果不考慮人的因素,時(shí)間管理目標(biāo)通常會失控和很難實(shí)現(xiàn)的。也就是說,成功的時(shí)間管理需要考慮人的一些內(nèi)在因素,包括人的工作習(xí)慣或者天性。因?yàn)槿说牧?xí)慣和天性也是造成項(xiàng)目工期拖延的原因之一。例如,在我們的日常工作中經(jīng)常會碰到這樣一種現(xiàn)象,比如要提交一份報(bào)告,通常需要三天時(shí)間。但在多數(shù)情況下,員工可能會在第三天才開始寫這份報(bào)告。也就是說,他把前面兩天時(shí)間安排去做其它工作了,從第三天才開始寫。這樣一來,他的報(bào)告就不可能如期完成,即使靠加班加點(diǎn)如期完成也嚴(yán)重影響了報(bào)告質(zhì)量。我們把這種情況稱之為"拖延綜合癥"。
有統(tǒng)計(jì)表明,如果沒有明確的開始時(shí)間,就會在項(xiàng)目和工作中極易形成"拖延綜合癥"。這也稱為帕金森定律(Parkinson's Law),它是指工作總是拖延到它所能夠允許最遲完成的那一天。因此,如果沒有明確的時(shí)間觀念或忽視了"拖延綜合癥",最后都是會造成項(xiàng)目延期,或者是勉強(qiáng)按期完成任務(wù)。
什么是時(shí)間管理的關(guān)鍵路徑法?
時(shí)間管理是軟件開發(fā)項(xiàng)目管理一個(gè)重要的內(nèi)容,因此必須要使用高效的工具來確保時(shí)間受到控制,關(guān)鍵路徑法就是其中一種常用的工具。正所謂:向關(guān)鍵路徑要時(shí)間,向非關(guān)鍵路徑要資源。
(1)什么是關(guān)鍵路徑法?
關(guān)鍵路徑法(Critical Path Method, CPM)最早出現(xiàn)于20世紀(jì)50年代,它是一種基于數(shù)學(xué)計(jì)算的時(shí)間規(guī)劃管理方法,是網(wǎng)絡(luò)圖計(jì)劃方法的一種。它是時(shí)間管理中很實(shí)用的一種方法,廣泛地用于項(xiàng)目進(jìn)度分析和時(shí)間管理。一般來說,在項(xiàng)目管理中關(guān)鍵路徑法是上連著WBS(工作分解結(jié)構(gòu)),下連著執(zhí)行進(jìn)度控制與監(jiān)督。因此,一般是用它來預(yù)測整個(gè)項(xiàng)目的工期,和幫助項(xiàng)目主管防止項(xiàng)目進(jìn)度超期。
關(guān)鍵路徑法是將項(xiàng)目分解成多個(gè)獨(dú)立的活動并確定每個(gè)活動的工期,然后用邏輯關(guān)系(結(jié)束-開始、結(jié)束-結(jié)束、開始-開始和開始結(jié)束)按照活動的關(guān)系形成順序的網(wǎng)絡(luò)邏輯圖,從而計(jì)算出項(xiàng)目的工期和各個(gè)活動的時(shí)間特點(diǎn)(最早最晚時(shí)間、時(shí)差)等。它是通過確定網(wǎng)絡(luò)圖中的每一條路線的起始時(shí)間到結(jié)束時(shí)間,從而找出工期最長的線路。也就是說,整個(gè)項(xiàng)目工期的決定是由最長的線路來決定的。有一些人認(rèn)為關(guān)鍵路徑包括的都是最重要的活動,然而關(guān)鍵路徑關(guān)心的只是項(xiàng)目的時(shí)間維,它的名字中包含"關(guān)鍵"并不意味著它包含所有的關(guān)鍵的重要活動。因?yàn)閷τ谝粋€(gè)項(xiàng)目而言,在項(xiàng)目中通常有多個(gè)任務(wù)同時(shí)進(jìn)行,只有項(xiàng)目網(wǎng)絡(luò)中最長的或耗時(shí)最多的活動完成之后,項(xiàng)目才能結(jié)束,這條最長的活動路線才叫關(guān)鍵路徑,組成關(guān)鍵路徑的活動才稱為關(guān)鍵活動。
(2)關(guān)鍵路徑?jīng)Q定著項(xiàng)目工期
一般來說,關(guān)鍵路徑上的持續(xù)時(shí)間是決定著項(xiàng)目的工期,因?yàn)殛P(guān)鍵路徑上所有活動的持續(xù)時(shí)間總和就是項(xiàng)目的工期。關(guān)鍵路徑上的任何一個(gè)活動都是關(guān)鍵活動,其中任何一個(gè)活動的延遲都會導(dǎo)致整個(gè)項(xiàng)目完工時(shí)間的延遲。關(guān)鍵路徑上的耗時(shí)是可以完工的最短時(shí)間量,若縮短關(guān)鍵路徑的總耗時(shí),則會縮短項(xiàng)目的工期;反之,則會延長整個(gè)項(xiàng)目的總工期。但是如果縮短非關(guān)鍵路徑上的各個(gè)活動所需要的時(shí)間,則不會影響項(xiàng)目的完工時(shí)間。
簡單的說,關(guān)鍵路徑上的活動是總時(shí)差最小的活動,若改變其中某個(gè)活動的耗時(shí),則可能使關(guān)鍵路徑發(fā)生變化。所以,關(guān)鍵路徑是相對的,是可以變化的。在采取一定的技術(shù)措施之后,關(guān)鍵路徑有可能變?yōu)榉顷P(guān)鍵路徑,而非關(guān)鍵路徑也有可能變?yōu)殛P(guān)鍵路徑。計(jì)算關(guān)鍵路徑可以用正推法計(jì)算出每項(xiàng)活動的最早開始和最早結(jié)束時(shí)間,用逆推法計(jì)算每項(xiàng)活動的最遲開始和最遲結(jié)束時(shí)間,從而就可以確定每一項(xiàng)活動是否具有浮動時(shí)間。如果浮動時(shí)間不為零,也就是說這項(xiàng)工作不是位于關(guān)鍵線路上,它是具有浮動時(shí)間的。
綜合來說,關(guān)鍵路徑法的優(yōu)點(diǎn)是能為項(xiàng)目及其主要活動提供了圖形化的顯示,這些量化的信息為識別潛在的項(xiàng)目延遲風(fēng)險(xiǎn)提供極其重要的依據(jù)。例如,使用關(guān)鍵路徑分析可使進(jìn)度均衡。因?yàn)楫?dāng)項(xiàng)目經(jīng)理知道了關(guān)鍵路徑上的一個(gè)任務(wù)會落后于預(yù)期進(jìn)度時(shí),他就可能會給關(guān)鍵路徑上的其它任務(wù)分配更多資源來彌補(bǔ)時(shí)間;或通過跟蹤關(guān)鍵路徑,以判斷是否需要采取積極主動的行動來達(dá)到預(yù)期目標(biāo)。
如何應(yīng)用關(guān)鍵路徑法優(yōu)化時(shí)間管理?
關(guān)鍵路徑表示完成項(xiàng)目的最短時(shí)間。如果關(guān)鍵路徑上的一個(gè)或者多個(gè)活動比預(yù)期計(jì)劃要長,除非采取修正行動否則項(xiàng)目進(jìn)度將會延后。因此,在軟件開發(fā)時(shí)間管理中,控制進(jìn)度表的基本思想就是在一個(gè)龐大的網(wǎng)絡(luò)圖中找出關(guān)鍵路徑,并對各關(guān)鍵活動優(yōu)先安排資源以盡量壓縮需要的時(shí)間。而對非關(guān)鍵路徑的各個(gè)活動,只要在不影響完工時(shí)間的條件下,抽出適當(dāng)?shù)娜肆Α⑽锪拓?cái)力等資源,用在關(guān)鍵路徑上以達(dá)到縮短工程工期。
(1)關(guān)鍵任務(wù)的定義和時(shí)間估算
為了找出項(xiàng)目的關(guān)鍵路徑,必須首先要設(shè)計(jì)好網(wǎng)絡(luò)圖。因此,第一步是在開發(fā)范圍內(nèi)用WBS(工作分解結(jié)構(gòu))把所有工作分解成最小任務(wù)。這個(gè)過程的輸出是任務(wù)清單和里程碑清單,需要注意的是這些清單不僅僅是要列出有哪些任務(wù)和有哪些里程碑,而是任務(wù)還要有含持續(xù)時(shí)間或具體的時(shí)間工期等信息。因?yàn)殛P(guān)鍵任務(wù)的另一個(gè)屬性是時(shí)間屬性,這在時(shí)間管理中是非常重要的。一般來說,任務(wù)的持續(xù)時(shí)間估算是一個(gè)復(fù)雜的估算過程,因?yàn)橛泻芏嘁蛩囟紩绊懙饺蝿?wù)的持續(xù)時(shí)間,如工作效率水平,投入的資源數(shù)量等。
(2)評估任務(wù)的優(yōu)先級
根據(jù)優(yōu)先級為每個(gè)任務(wù)建立相對重要性是核心的一步。因?yàn)樵谲浖_發(fā)中事情會是非常多,不可能平均分配時(shí)間。如果經(jīng)常出現(xiàn)時(shí)間被次要工作過度占用,這會是很糟糕的情況。因此,相應(yīng)的根據(jù)緊急程度把任務(wù)涂成綠色、黃色和紅色,就意味著不僅可以很容易的區(qū)分項(xiàng)目內(nèi)和項(xiàng)目間的任務(wù)優(yōu)先權(quán),而且也可以很明確的分配時(shí)間資源。另外,評估任務(wù)的優(yōu)先級也會把時(shí)間管理觀念推廣到團(tuán)隊(duì)的各個(gè)層次。不但可以確保工作在合適的時(shí)間內(nèi)完成,而且還不需要管理層經(jīng)常性的提醒和干預(yù)。所以,明確任務(wù)的優(yōu)先級是影響非常大的一個(gè)步驟,因?yàn)樗艽蟠蟾纳圃诙嘀厝蝿?wù)中時(shí)間資源的分配效率。
(3)關(guān)鍵任務(wù)的排序和路徑計(jì)算
關(guān)鍵任務(wù)的排序就是根據(jù)任務(wù)的前后和依賴關(guān)系形成網(wǎng)絡(luò)圖。簡單地說,就是我們要找出耗時(shí)最多的活動序列組成的路徑。因?yàn)檎页隽岁P(guān)鍵路徑后,我們就可以預(yù)測項(xiàng)目的工時(shí),最終確定項(xiàng)目的工期。這里需要提醒的是,只有在考慮到資源平衡和資源日歷后的任務(wù)網(wǎng)絡(luò)圖才會是一個(gè)有價(jià)值的進(jìn)度表。因此,在存在可預(yù)見風(fēng)險(xiǎn)的路徑點(diǎn)上,事前一定要進(jìn)行資源優(yōu)化,以防止項(xiàng)目超期。
(4)監(jiān)督和檢查進(jìn)度表的實(shí)施
一般來說,在網(wǎng)絡(luò)圖上計(jì)算關(guān)鍵路徑后就會形成進(jìn)度表。然后,我們通過監(jiān)督和檢查進(jìn)度表與實(shí)際情況的比較,就能很方便的使項(xiàng)目時(shí)間受控了。例如,通過趕工或快速跟進(jìn)的方式對滯后的進(jìn)度進(jìn)行壓縮,以使進(jìn)度表受控,從而也使到項(xiàng)目時(shí)間得到控制。