軟件項目最常見的失敗原因分析
發(fā)布時間:2015/9/11 9:58:00
在啟動一個新的軟件項目時,尋求一名在軟件開發(fā)領域具有豐富經(jīng)驗并且可以在項目計劃的早期階段提供協(xié)助的主題專家的幫助。這一策略已經(jīng)被證實可以極大提升項目的成果,然而在項目結束時你還是只能眼睜睜的看著失敗發(fā)生。為什么會這樣呢?
項目失敗可分為成本超支、交付延期、質量不合格和/或產(chǎn)品未被應用等一種或幾種情況。無論是否曾經(jīng)參與到項目計劃階段,通常情況下,軟件開發(fā)人員都會首當其沖承擔失敗的責任;無論怎樣,他們是真正構建這個應用的人。然而,對項目更進一步的審查表明并非所有失敗的項目都應歸咎于開發(fā)人員能力不足。
當對這些失敗的項目進行評估時,其中一些項目與行業(yè)趨勢相比完成的“還算不錯”,然而卻被其所在組織認定為失敗項目。其原因在于絕大多數(shù)的問題都與項目之初有缺陷的評估或錯誤的商務決策聯(lián)系緊密。為了避免這種情況發(fā)生,整個組織首先必須要使用標準的評估術語集合。我們經(jīng)常會發(fā)現(xiàn)個人和組織大量地互換使用關鍵術語,而實際上他們各自都有獨特的含義。
目標 - 我們想要完成或達成的目標 約束 - 在我們所能完成的工作上的一些內部或外部的限制 估算 - 在范圍、成本、日程、人員和可能性確定的情況下,對我們所能完成的工作的技術性計算。 承諾 – 通過選擇一個評估場景并分配合適的資源,在一系列的限制條件下達成目標的商務決策。 計劃 – 一系列項目任務和活動的集合,讓我們可以在確定的范圍、預算、日程以及人員的情況下,有一定的概率可以履行某一承諾。
這些概念的清晰定義可以確保項目擁有一個良好的開端——實際的目標和對項目所受限制的理解。若非如此,下面這些因素很有可能導致項目在一開始就踏上死亡的征程。
1. 在沒有實質的數(shù)據(jù)和分析的情況下,就接受一個強制的日程安排或完成日期/里程碑日期。
組織中的某個人公開推測項目將在某一特定日期完成,這樣在無意中整個團隊都會致力于這一期限。也許你的預算周期顯示分配給這一項目的資金必須花費到今年年底或者下一個版本不會得到資金支持。也許項目的利益相干人希望項目能在圣誕節(jié)前完成,知道項目已經(jīng)結束他/她就可以安靜地享受假期;蛘吒纱嗑褪且驗槔嫦喔扇颂貏e喜歡整數(shù),希望項目能夠在該月一號發(fā)布。為什么一個開發(fā)團隊會被設定一個主觀的項目完成日期的原因五花八門。過于狂熱的計劃經(jīng)常導致項目人員配備過度的不幸現(xiàn)實是為什么軟件項目失敗的另一原因。
2. 添加過多的人員以實現(xiàn)不切實際的日程壓縮。
項目經(jīng)理如何處理過度樂觀的項目計劃?一個常見的反應就是增加項目組成員,增加的成員經(jīng)常會比完成項目所需的成員更多。這樣不僅會大幅增加項目的成本,還會降低項目質量。讓更多的人參與到項目中會增加錯誤傳達的可能性,也會讓不同部分的代碼整合更具挑戰(zhàn)。此外,F(xiàn)rederick Brooks (1975) 的主張“在延期項目中增加人手只會讓項目更加滯后”是有一些道理的。這些人員通常是從其他項目中調派而來。這會讓其他項目的項目計劃更加滯后并且還要求新的成員能夠趕上資深成員,這樣整體來說生產(chǎn)力是下降的。
3. 未能考慮和調整需求的增長或變化并據(jù)此對計劃和預算預期進行必要的調整。
“如果……不是更好么?”這種話有時候是最可怕的,特別是在項目組建的過程中道聽途說而來時。當然,確實需要時間和場所進行頭腦風暴,這些活動應該在第一階段和第二階段開展。實際上,這兩個階段的目的就是要決定一個項目是否可行,以及應用應該具備哪些功能特性。你可以如此考慮這個問題,第二階段幫助你確定所要構建的內容,第三階段則開始構建在第二階段所確定的內容。在這兩個高級階段之間存在一定的重疊,當處于階段三時,對于一個產(chǎn)品發(fā)布版本來說,應該已經(jīng)有了一個清晰的必要功能列表。如果在沒有增加開發(fā)時間和預算的前提下就增加功能,需求的增長就會成為問題。實際上,這是在要求在更短的時間內完成更多的工作,這種手段早已被證明無效。取決于其特性和時點,已有需求的變更也有可能成為問題。只要變更發(fā)生在某一特定迭代的構建之前,使用敏捷開發(fā)方法的項目就可以處理這些明細需求的變更。不過,對于任何會導致代碼返工的軟件架構方面的需求變更幾乎必然會對項目的計劃和預算產(chǎn)生影響。
4. 忽略事實和統(tǒng)計數(shù)據(jù)的情緒化或”全憑直覺的“利益干系人談判。
或早或晚,我們都會與某個我們參與的具體項目緊密聯(lián)系并在該項目的產(chǎn)出之上投入情感。對于許多人來說,該項目可能關乎自己的聲望;項目太大經(jīng)不起失敗,而這經(jīng)常會讓我們被我們的情感所控制。當軟件項目的成功或失敗懸而未決導致個人的事業(yè)處于危險之中時,任何相關的業(yè)務決策很有可能都會受到影響。壓力可以讓人思維混亂,特別是在賭注巨大之時。為了給客戶留下深刻的印象,某個利益相干人可能會要求一個12個月的項目計劃安排,而完全不顧之前類似規(guī)模的項目報告均顯示了15個月的生命周期。利益相干人很可能會忽略項目成員的建議,并聲稱他“感覺”項目團隊可以渡過難關。在這種情況下,憑直覺可能是相當不利的并且有可能直接導致項目的失敗。
5. 錯誤,但普遍認為眾所周知的銀彈可以獨自解決項目吞吐量或過程問題。
當其他嘗試都已失敗時,一個常見的方法就是改變策略。這時比較常見的想法就是“我們現(xiàn)在的所作所為一定是錯誤的”以及“我們的競爭對手在做些什么?”也就在這時,“IT銀彈”的思慮可能就會開始在辦公室中蔓延。例如,某人可能會建議組織,需要采用最新的流行開發(fā)方法。雖然這可能會將組織引領至一個偉大的方向,但像這樣的決策決不應該草草定論。無論你的組織決定采用哪種開發(fā)方法,這也只是實現(xiàn)層面的變化。僅僅是開發(fā)方法的轉變并不足以完成開發(fā)操作的轉換。 無論做出什么決策,為了能夠成功實施,就需要各方均能接受并支持這一決策,并且需要為項目成員提供培訓,而且所有人都需要為同樣的標準負責。否則,每次啟動新的項目時,你的開發(fā)策略就基本相當于等待天空的星辰排列整齊,期盼奇跡發(fā)生一樣。如果沒有經(jīng)過深思熟慮,實現(xiàn)這種策略不僅存在令人難以置信的風險,同時也會減少團隊成員在項目中期提供反饋的機會。
簡而言之,造成軟件項目失敗的原因林林總總。花點時間認真反思一下上述原因是否曾經(jīng)也是導致你的組織中項目失敗的元兇。那么現(xiàn)在是否有了應對它的措施?作為一個執(zhí)行領導人,可以做的工作有很多,不過對開發(fā)操作提供支持仍需很大的勇氣。他們需要在合理的預期內運行。顯然,他們仍需要對自己的行為負責,因此就需要歷史績效數(shù)據(jù)作為證明他們能力的證據(jù)。你需要從多個不同的維度搜集數(shù)據(jù),包括項目的計劃持續(xù)時間、所花費的精力、工作的范圍、項目的整體質量以及所達到的生產(chǎn)力水平。
這種情況下,生產(chǎn)率指數(shù)(PI)以指數(shù)點數(shù)作為計量單位,這是一個有專利的QSM計算單位,范圍從0.1到40。它讓項目之間的比較更有實際意義并且對軟件開發(fā)因子作出了解釋,其中包括如下變量:管理影響、開發(fā)方法、工具、經(jīng)驗水平和應用程序類型的復雜度。一旦某個組織建立了已完成項目的倉庫,就可以計算定制化趨勢線,用于基線創(chuàng)建。這些趨勢線作為參考點可用于組織內的項目比較。項目相對于趨勢線所處的位置表明了項目與平均水平的相比孰優(yōu)孰劣。這會讓你對組織的當前能力有清晰的洞察。(項目管理者聯(lián)盟)
更多內容詳細咨詢:http://lqfuyuan.com/