傳統觀念上的成功是指基於給定的財政預算,按照需求規格按時交付產品。[standish]中給出了一些經典的定義:
成功的(successful)
「按時完成,費用不超出預算,而且所有特性和功能都符合原先的設計規格。」
不太成功的(challenged)
「已完成而且可以執行,但費用超出了預算,沒有如期完成,[擁有]的特性和功能少於原先的設計規格」
失敗的(impaired)
「在開發周期的某個時刻專案被取消了」
儘管非常流行,這些定義還是有問題的。某些專案即使一分錢也沒賺到,它仍然可能是成功的。另一些專案即使帶來了數百萬美元的收入也仍然不算很成功。
那些滿足了所有傳統成功標準——時間、預算和設計規格——的專案,最後仍然可能是失敗的,因為它們不能吸引目標使用者,或者因為它們最終不能帶來更多的商業價值。
……同樣,按照傳統的it標準被認為失敗的專案最終卻可能反敗為勝,原因是:儘管存在費用、時間和規格方面的問題,但系統最後卻被目標使用者所喜愛,或者帶來了預想不到的價值。舉個例子,曾有一家金融服務公司,開發一套新系統時工期延遲了六個月,費用也超出了原來預算的兩倍多(最終的花費達570萬美元)。但這一專案最終卻造就了一家適應性更強的組織(在13個月之後),因而被認定為乙個相當成功的專案——這家公司通過賬戶沖銷節省了3300萬美元,而且降低了時間價值比,提高了容量,從而使生產環境中併發收集策略的測試數增長了50%。*
成功不只是如期完成對於成功來講,除了如期完成,應該還有更多的要素……但它們是什麼呢?
我小時候非常喜歡玩耍。後來我喜歡上了程式設計所帶來的挑戰。當我使乙個程式成功執行,就會有一種勝利的感覺。回想那時,即使是乙個不能工作的程式,也仍然是一種成功,只要我從編寫它的過程中獲得了樂趣。這時我對成功的定義主要圍繞著個人回報。
隨著經驗不斷增長,我的軟體變得更加複雜,我常常無法全面跟蹤它究竟是如何工作的。我不得不在完成某些程式之前結束它們。我開始相信可維護性是成功的關鍵——這一思想在我參加工作並與其它的開發團隊一起工作時得到了驗證。我為自己能寫出優雅的、可維護的**而感到自豪。此時,成功對我來說意味著技術優秀。
某些專案的**儘管寫得很好,但專案還是失敗了。即使執行過程無懈可擊的專案也仍然會讓使用者打呵欠。我開始認識到我的專案組是乙個更大的生態系統的一部分,這個系統包含幾十個,幾百個甚至幾千個人。我的專案需要滿足那些……尤其是為薪水支票簽字的人。實際上,對於那些為工作提供資金的人來說,軟體的價值必需超過它的成本。於是,成功意味著向組織機構交付價值。
這些定義並不矛盾。三種型別的成功都很重要(見圖1-1)。沒有個人的成功,你將很難為自己及其他員工提供激勵。沒有技術上的成功,你的**最終將被它自身的重量壓跨。沒有組織的成功,你的團隊可能發現公司不再想要它了。
組織成功的重要性
軟體開發團隊更喜歡容易獲得的技術和個人成功,因此組織成功常常被他們忽視。然而毫無疑問的是:即使你並不為組織的成功負責,更大的組織仍然會從這個層面上來評價你的團隊。行政和高管不太會關心你的軟體是否優雅、可維護,甚至也不會關心它是否被使用者所喜愛;他們關心的是結果。那是他們專案投入的回報。如果你不能達到這種型別的成功,他們會設法讓你達到。
不幸的是,高階經理人員通常並沒有時間和精力去為每個專案分別實施一套有細微差別的方案。他們揮舞的是大刀,而不是解剖刀。他們希望由專案團隊去關注各種細節。
當團隊開發的結果不能讓經理們滿足,就是揮舞大刀的時候了。成本就是最明顯的目標。砍掉成本有兩種最簡單的方法:設定非常緊迫的交付期限來縮減開發時間,或者將工作外包給乙個勞動力成本更低廉的國家。或者兩種方法同時運用。
這些都是笨拙的方法。過於緊迫的交付期限最終將延緩進度,而不是加快進度[mcconnell 1996](220頁),而離岸外包則擁有隱性成本[overby]。
緊迫的期限和外包的威脅聽起來是不是很熟悉?如果是,那就說明你的團隊到了重新為成功負起責任的時候了:不僅僅是個人和技術的成功,還有組織的成功。
圖1-1 成功的型別:
組織最重視的是什麼?
儘管某些專案的價值直接來自於銷售,但組織的價值卻不僅在於銷售收入。專案可以通過多種方式來提供價值,而且你不能永遠使用金錢來衡量這些價值。
除了收入和成本節約,價值還會來自以下方面:*
· 競爭優勢差異(competitive differentiation)
· 品牌影響(brand projection)
· 提高客戶忠誠度
· 滿足監管要求(regulatory requirements)
· 原創性研究(original research)
· 策略性資訊(strategic information)
* 本文摘自《敏捷開發的藝術》一書。
什麼是DRT專案,DRT專案的構想和目的
ywthegod drt gitee.com 不想多說什麼賣弄情懷的話,是的,就是那個快要死掉的delphi,drt這個專案,就是看著能不能再搶救一下,救不活就拉倒。思路就是將一些優秀的c庫,移植到delphi上來,希望能打通delphi與c圈子的技術互通。幾個問題 1.delphi不是可以連線c的...
什麼是軟體測試,軟體測試的目的?
軟體測試 用來確認乙個程式的品質或效能是否符合開發之前所提出的一些要求 軟體測試就是在軟體投入執行前,對軟體需求分析 設計規格說明和編碼的最終複審,是軟體質量保證的關鍵步驟。軟體測試是為了發現錯誤而執行程式的過程 軟體測試的目的 1.確認軟體的質量,其一方面是確認軟體做了你所期望的事情,另一方面是確...
軟體成本造價之什麼是軟體專案的工作量?
在軟體成本造價過程中,軟體專案的工作量是很多開發組織進行估算的主要物件。那麼,什麼是軟體專案的工作量呢?它都包括哪些內容呢?乙個軟體專案的工作量所表達的含義是完成某個專案或系統開發所需的全部工作量,包括從專案立項開始到專案完成驗收之間開發方的需求 設計 構建 包括編碼 整合 測試 實施及相關的專案管...