軟體開發 不可能完成的任務? 收藏

2021-03-31 08:56:59 字數 2363 閱讀 6635

2023年7月6日,香港新機場赤角正式開通運營。這個耗資200億美元的建築專案終於可以讓人喘一口氣了。然而,當新機場開通運營之時,令人窘迫的問題出現了:電子訊號顯示了錯誤的資訊,**系統被迫關閉,行李不見了,客貨運擱淺不前。  

200億美元複雜的建築結構的確是有史以來全球最大的建築專案之一。在專案中,半個世界的挖掘機隊伍都在忙忙碌碌地參與這浩大工程的建設。數十個承包合約和建築專案時刻等待著協調,以完成在同一時間進行的數千項不同的又常常相互關聯的複雜活動。儘管專案不時地面臨著絕境,但專案最終還是從絕境中走出來了。 

然而,本文開頭所描述的困境還是產生了,而且這難題使機場損失了6億美元。但這個難題與機場的建築專案沒有一點關係。他們全都來自計算機硬體與軟體。 

事實上,香港新機場遇到的軟體開發的問題是軟體業司空見慣的失敗案例之一。軟體業的成功只是個例外。 

開始即意味著失敗 

standish集團針對美國大約8000個軟體專案進行了調查研究,結果表明:所有軟體專案中令人驚訝地有84%未能按時完成、按預算完成或者安裝所有預先要求的特性;所有專案中有超過30%在完成之前被取消了,其他則明顯超過了期限,並且(平均來說)超過了預算的189%。 

另一項研究發現,高度複雜的專案中有超過50%被取消了。也就是說,這樣乙個專案從一開始,失敗的機會就要比成功的機會更高。 

軟體總是讓人覺得戰戰兢兢。在上個世紀的80年代初,美利堅銀行就經歷了master***系統失敗的噩夢。為了能夠抓住資訊科技帶來的機遇,使美利堅銀行成為信託業的鉅子,2023年秋天,美利堅銀行決定建立一套業務和客戶管理的軟體系統。在經過18個月的詳盡研究分析之後,乙份預算為2000萬美元的計畫批准了,專案計畫的截止時間是2023年12月31日。然而,乙個除夕來了又走了,系統並沒有出現。直到2023年年中,在最初期限的一年半之後,銀行才得以向客戶演示乙個還有著太多漏洞的系統。 

2023年3月,系統在晚了27個月投入正式工作。而此時,美利堅銀行的it噩夢開始了。銀行在晚了3個月才能發布會計報表,於是,客戶的信任開始喪失,企業客戶抽走了價值40億美元的**。最後,美利堅銀行的管理層放棄了這個專案。 

這種災難也許是在靜悄悄地發生,但丹佛機場的災難、「亞利安娜」火箭的**,一直到波音「德爾塔」3號火箭的**,都是軟體給人留下的轟天巨響。 

誰是罪魁禍首? 

軟體業為什麼這麼容易失敗?到底誰是罪魁禍首? 

.............

企圖通過增加人手來縮短專案日程。一些開發人員的錯誤是認為增加專案人手就可以縮短專案日程。這通常是錯誤的,原因有兩個:首先,開發工作往往無法在許多任務作者之間進行分割,相互依賴性使某些任務要求必須按順序進行。正如布魯克斯所說:「生小孩總是需要9個月,無論安排了多少女人。」其次,人手增加的同時,花在交流上的時間將同步增長。

....................

「乙個有才華的軟體開發者的創造性可以是乙個普通者的十倍,即使他們有著相同的過往經歷。」麥康奈爾頗有感慨地說。麥肯錫公司在調研中交談過的開發經理都同意這一點。「乙個有才華的木匠會在建一項好工程時做許多決定。他通過直覺做出正確的事。」巴瑞扎,一位經驗資深的開發經理說,「對乙個開發人員來說也是如此。許多關於結構和編碼的決定是相當直覺,依賴長期的閱歷和才華。很難匯集它們,但結果會有巨大的差別。」 

軟體開發專案應該配備最好的人手。「最好是找到乙個有創造力的程式設計師,而不是指望某乙個程式設計師會變得有創造力。」麥康奈爾說。同樣的原則也適用於團隊。 

創造有力的團隊結構。並非每乙個程式設計師都是明星選手。「在組織成長時,你會有些平庸的開發人員——這幾乎是不可避免的,」platinum的ceo菲利波夫斯基說,「頂尖高手們屈指可數。」 

但成功的公司學會了如何將明星與那些並非同樣出色的人組合在一起。如同一支醫院急救隊的人員配置,有一兩個頂尖程式設計師,其他人協助他們。  

...............

把握頂尖人才。當幾年前platinum的一位頂尖程式設計師說他將不得不離開公司,因為他的妻子在加利福尼亞得到了乙份好工作時,公司的coo休曼南斯基完全拒絕接受。由於不想失去這名好員工,休曼南斯基安排將終端建在這名開發人員在加利福尼亞的新居——以及他在內華達山上的小屋裡。從那時起,這位快樂的員工(明顯不是乙個早起者)在中午起身,遊戲或者徒步旅行,並為platinum工作,從下午3點到凌晨3點。「當時如果我們沒有建立起途徑,克服地理邊界限制的話,今天我可能已經出局了。」休曼南斯基說。

......................

合成元件時代? 

數十年來,開發經理一直在呼喚新的「神奇解決方法」,以便可以在軟體開發中帶來乙個根本的或真正的革命性進展。而今,合成元件正在顯著改變軟體開發遊戲。 

許多軟體專家贊同軟體元件的變革會有幫助。考克斯曾經觀察到:如果軟體開發能從「自己建設一切」轉向「簡單地整合定製的可重複使用元件」方式,這對整個行業就意味著巨大的生產力和質量提公升。 

但使用元件開發還面臨著種種困難。比如要求大量前期投資,需要改變開發人員的整個思想形式。 

如何完成看似不可能完成的任務

先說一下背景,這是我工作10來年遇到的乙個很特殊的案例。我和組員在入職的第一天就接到了任務,在完全不熟悉公司內部流程 研發資源 測試資源和專案背景以及需求的情況下,就按照專案方的意願給出了乙個deadline,雖然當時會議上沒有要求表態,但是要求第二天需要給出具體的研發完成時間。時間緊 任務急 一切...

軟體開發不可與建築模擬

多年以來,軟體行業一直在使用一種模擬,即以建築來做參考和比喻。這種比較在軟體語言裡隨處可見,比如架構 architecture 地基 foundation 建造者 constructor 專案 project 施工規範 building code 等。這些說法是如此之流行,以至於影響到了我們對軟體開...

軟體開發不可與建築模擬

多年以來,軟體行業一直在使用一種模擬,即以建築來做參考和比喻。這種比較在軟體語言裡隨處可見,比如架構 architecture 地基 foundation 建造者 constructor 專案 project 施工規範 building code 等。這些說法是如此之流行,以至於影響到了我們對軟體開...