軟件項目開發(fā)中的三個“不應做”事項
發(fā)布時間:2022-03-20閱讀次數(shù):2323
本文要點
項目未按時間表完成,或是項目超出了預算,這是導致很多項目失敗的原因。前期對項目做出預測,有助于避免從一開始就做出不切實際的承諾。
在做出詳細規(guī)劃前,自上而下、基于范圍的估算要比自下而上的規(guī)模估計和“猜測”更為有效。
當項目處于初始規(guī)劃階段和推進階段時,自上而下的估算工具有助于確立切合實際的項目邊界。這對于設定期望和讓利益相關(guān)者滿意是十分關(guān)鍵的。
通過過度增加人員實現(xiàn)壓縮時間表,在很多情況下實現(xiàn)代價高昂,并且常常是無效的。項目經(jīng)理可以使用自上而下的估算,對投資組合中的適當人員配置和資源需求做可視化。
當項目由于利益相關(guān)者的需求或一些不可預見的情況而發(fā)生變化時(當然,項目不可避免地會發(fā)生變化),項目經(jīng)理應重新做出預測,進而用于更新計劃。
引言
人們通常對“未雨綢繆”一詞了然于胸,那么為什么企業(yè)卻難以遵循這一原則呢?或許是因為人們已習慣于“快速行動起來完成工作”的做事方式。問題在于,過快的項目推進實際上會導致成事不足,給軟件項目帶來很大的問題。面對來自于高層的壓力,項目經(jīng)理很可能轉(zhuǎn)而采取倉促行事,跳過項目估算和前期規(guī)劃。但是從我自身30多年的軟件項目管理經(jīng)驗看,一個倉促進入開發(fā)階段的項目很有可能注定會失敗。
早在上世紀80年代,柯達曾致力于實現(xiàn)一種由軟件驅(qū)動的文檔成像解決方案,以此實現(xiàn)膠卷業(yè)務的多樣化。企業(yè)在花費了一年半的時間、投入了數(shù)百萬美元和大量的人力資源建立系統(tǒng)之后,他們找到我來做項目估算。估算結(jié)果顯示,完成項目還需要兩年的時間,并且還要投入更多的資金。如果預先做了項目估算,那么企業(yè)就有機會更好地評估項目的上市時間和投資回報率。反之,整個項目偃旗息鼓,浪費了寶貴的時間和資源。
一位同事曾與我分享過一個類似的悲慘故事。據(jù)他講訴,幾年前正值圣誕假期,一位顧客要求他在假期前提供一組合計22個估算。他們并不認可他給出的數(shù)據(jù)驅(qū)動估算,因此決定采取自己的方式。正是由于不合理的期望和時間表,他們的項目最終失敗了。他們最終還是回頭找到我的同事,按他的方式去正確做事。真應該祝圣誕快樂!
當前,一些企業(yè)也在犯著同樣的錯誤。最近,一家企業(yè)開展了一項大型高強度軟件開發(fā)項目。盡管他們擴充到100多名開發(fā)人員,但是由于內(nèi)部壓力以及一些不切實際的短期瘋狂計劃,他們決定放棄系統(tǒng)集成測試。由于缺少對質(zhì)量影響和趕進度開發(fā)機制的評估,他們最終遺漏了很多系統(tǒng)缺陷?,F(xiàn)在,企業(yè)正在重新做評估,一切從頭做起。
當然,我們沒有理由讓歷史繼續(xù)重演。如果項目經(jīng)理能關(guān)注那些“不應做”的事情,是可以避免一些會導致成本和時間超支的缺陷的,并給出創(chuàng)造真正價值的解決方案。
事項一:不應跳過估算匆忙進入詳細規(guī)劃,應采用自上而下的估算方法。
任何形式的計劃,都好過完全沒有計劃。自上而下的估算,為詳細計劃過程提供了有價值的輸入。
根據(jù)我的個人經(jīng)驗,設置不切實際的期望是項目失敗的主要原因。制定準確的目標是企業(yè)的核心競爭力,但不少企業(yè)尚做得不盡如人意。
部分原因在于,企業(yè)在估算項目規(guī)模時,傾向于使用傳統(tǒng)的范圍界定過程,這往往會給出不準確的預測。項目經(jīng)理在編制項目范圍時,傳統(tǒng)做法是采用一種自下而上的方式。管理者要求每個團隊成員估算自己在特定活動中的工作時長,并根據(jù)這些“假設”確定每個成員的日程安排。不幸的是,這種自下而上的過程中缺少了一個關(guān)鍵的因素,那就是“事實”。一項基于QSM項目完成情況數(shù)據(jù)庫的研究顯示,有三分之二的公司未能比較計劃的績效與歷史上類似項目的實際績效。比較工作可讓團隊更好地了解完成工作所需的時間、精力和資金情況。他們竭力做出的估算,也許會導致錯過最后期限、成本超支、客戶不滿意,以及開發(fā)人員被剝奪權(quán)利。
如果項目在開始時采用了自上而下的方式,那么一種非常有效的策略是基于范圍的估算。借助于類似項目提供的數(shù)據(jù),管理者可以準確地給出完成工作和交付完成工作產(chǎn)品所需的工作量。他們從一開始就全面了解項目的各項功能,并相應地分配資源。
當項目處于初始規(guī)劃階段和推進階段時,自上而下的估算工具有助于確立切合實際的項目邊界。如下圖所示,一位項目經(jīng)理具有一個由10位開發(fā)人員組成的團隊,團隊正在進行一個為期五個月的發(fā)布周期。在整個工作過程中,模擬軟件顯示了細化的Backlog,其中給出了需要完成的約100個Story點。
進一步分析表明,盡管項目經(jīng)理對團隊生產(chǎn)力和勞動力成本的初步估計是有效的,但他可能無法將新的功能添加到建議的時間表中。由于計劃是固定的,為了滿足利益相關(guān)者的期望,項目經(jīng)理需要聚集于如何調(diào)整產(chǎn)品功能和能力。團隊可以使用模擬軟件衡量實現(xiàn)所有100個Story點的概率。也許實現(xiàn)80個Story更現(xiàn)實,也許可以實現(xiàn)70個Story。無論實現(xiàn)的Story數(shù)量多少,至少這是利益相關(guān)者可以預期的。
其中并不存在任何主觀猜測,一切估算都是基于經(jīng)過驗證的數(shù)據(jù)點。因此,自頂向下的估算方法可比傳統(tǒng)的估算方法給出更準確的估算。團隊可以設定準確的期望,在難以管理的時間期限內(nèi)達到客戶滿意,降低開發(fā)團隊交付解決方案的壓力。
事項二:不應因為最后期限迫近,而做出增加員工的決策。
“廚子過多,反而做不出好的肉湯”,這是另一件人們常說的事情。然而,在面對日漸積壓的最后期限時,許多項目經(jīng)理的第一反應是為項目配備更多的人員。他們秉持的理念是,做事的人越多,事情完成得越快。
當然,這種做法幾乎不會很好地發(fā)揮作用。為項目添加更多的資源,通常提高了項目的復雜性,并增大了出錯的機會。更多的人員會導致溝通的不暢,這可能會增加缺陷,并導致返工。實際上,更多的人員通常會導致項目耗費更多的時間,而非節(jié)省時間。
項目經(jīng)理可以使用自上而下的估算,對投資組合中的適當人員配置和資源需求做可視化展示。估算可在一段特定的時間內(nèi)按計劃和月份進行細分。他們甚至可以將員工按支出率劃分,并與預算限額做比較,確保員工適合于特定項目,或是匹配組織當前的和未來的容量需求。下圖可視化展示了估算隨時間變化的情況。
事項三:不應為計劃所奴役。
事先做好計劃,并不意味著團隊在整個開發(fā)過程中都無法改變方向。即便給出了最好的計劃,但是大多數(shù)項目在其生命周期中,不可避免地會遇上一些未知因素,或是需要重新確定優(yōu)先事項。或許管理層會要求添加一些新功能,或許一些團隊成員將被轉(zhuǎn)到其它更為關(guān)鍵的任務上。
不確定性雖然隨時可能出現(xiàn),但是它可以納入到自上而下的計劃過程中,從而降低其潛在的影響。本文前面給出的項目例子就是一個很好的證明。不確定性在于團隊可能無法達成100個Story點。在計劃中預先納入這些不確定性,有助于規(guī)避項目早期的突發(fā)變化。
在整個開發(fā)過程中仍然可能存在一些波動,其中的大部分是由于利益相關(guān)者的需求的不斷變化所導致的。例如,客戶可能需要一些新的功能,以滿足不斷變化的市場動態(tài)。這些需求將不可避免地對開發(fā)產(chǎn)生直接的影響。團隊需要在盡可能維持最初共識的情況下,做好調(diào)整的準備。
不幸的是,當前進的道路上蹦出這些意外障礙物時,許多組織不知道如何做出調(diào)整。估算是易于上下微調(diào)的(因此稱之為“估算”),并且可以通過重新預測去適應不斷變化的需求和動態(tài)。優(yōu)先事項也是可以完全改變或移除的,以適應新的工作需求。項目范圍也可以做改進,為利益相關(guān)者提供切實可用的更新后時間表,使項目保持正常進度。調(diào)整是一個動態(tài)的過程,可與組織推動敏捷開發(fā)的過程緊密結(jié)合。
做任何事情都一樣,溝通在整個調(diào)整過程中至關(guān)重要。顯示在屏幕上的數(shù)字在利益相關(guān)者的眼里無疑是福音,即使這些數(shù)字在開發(fā)過程中會發(fā)生波動。項目經(jīng)理必須能夠在項目一開始就有效地讓利益相關(guān)者明白,他們的開發(fā)估算可能會根據(jù)許多因素而發(fā)生變化(具有諷刺意味的是,大部分因素都是由利益相關(guān)者的需求驅(qū)動的)。
此外,項目經(jīng)理還必須表明,估算是在給定時間點(即項目開始時)對項目范圍的一個最佳表示。團隊將會努力按時、按預算,最重要的是按預期設計,交付所需的功能。
最后一點,也是最重要的,是我們應從以往的錯誤中吸取教訓。這并非僅是將當前的項目與過去的一些努力做比較,而是應從柯達以及其它一些采取了錯誤步驟的組織中學習。一開始就做好計劃,而不是遵循傳統(tǒng)規(guī)范。這樣,項目經(jīng)理和開發(fā)團隊才更有可能在不破壞時間表或超出預算的情況下,以客戶期望的質(zhì)量交付滿足客戶價值的軟件。