一個典型項目開發(fā)的故事
68 2017-04-14
南寧達內:一個典型項目開發(fā)的故事
2ACME公司的Widgets系統出了點問題。這個系統被他們用來管理器材的庫存,當初設計時沒考慮到如今這樣大量的數據的增長。他們的員工因為這個問題備受折磨。很顯然,需要想辦法解決這個問題,讓系統恢復正常。經過對...
ACME公司的Widgets系統出了點問題。這個系統被他們用來管理器材的庫存,當初設計時沒考慮到如今這樣大量的數據的增長。他們的員工因為這個問題備受折磨。很顯然,需要想辦法解決這個問題,讓系統恢復正常。
經過對本地軟件公司的一番篩選,ACME聯系到了Hamster軟件公司,看看他們能否解決這個庫存系統中的問題。他們很喜歡Hamster軟件公司的網站,他們沒有任何軟件開發(fā)的經驗,但根據網站的外觀,他們估計這個軟件公司能解決他們的問題。這件事上他們并沒有做錯,但也不是很對。
于是,ACME公司和Hamster軟件公司開始討論如何解決他們庫存系統中的問題。私底下,Hamster軟件公司的開發(fā)團隊知道以前從未處理過類似這樣的問題,然而,他們有一群很能干的小伙,他們相信一定能把這個問題解決掉。
基于一個不符合實際情況的預估,ACME公司和Hamster公司達成協議一起努力來解決問題。這是他們犯的第一個錯誤。Hamster公司的開發(fā)團隊認為,對現有的軟件進行簡單的修改就能滿足他們的需求,并在此假設上制定出了工程估算。
起初,按照ACME公司認可的設計方案,Hamster公司的開發(fā)進展神速。不久之后,事情看起來,他們的確是有可能按照最初的設計預算來完成任務。
除了有一些bug需要解決。
起初的bug都很小,就Hamster公司設定這種一日千里的開發(fā)速度而言,ACME公司理解,開發(fā)進行中的軟件不可能做到十全十美。他們很高興能開始使用改造中的系統,對于出現的問題,開發(fā)團隊已經有了更好的方案,所以,看起來,邊改造邊使用是沒有問題的——盡管有些bug存在。
但是,Hamster軟件公司的小伙都很能干。沒有人希望bug的出現,但因為開發(fā)團隊專注于解決擴容問題、寫代碼來升級系統,所以,有時候,很容易會發(fā)生一些意想不到的事情(bug)。隨著開發(fā)的進行,項目規(guī)模的擴大,記住代碼中各種編寫策略的背后原因變得越來越困難,但是,他們是群能干的小伙,沒有他們處理不了的問題。
RichardHammond——Hamster公司的創(chuàng)始人之一,是一個優(yōu)秀的程序員,他對這個項目做出了巨大的貢獻。一天,Richard收到了來自FifthSpeed公司的聘請,FifthSpeed公司是一家非常出名的軟件公司,Richard無法拒絕。Hamster公司的開發(fā)團隊很沮喪,但對于這種事情,他們無能為力,只好頂著壓力繼續(xù)開發(fā)。
如果這些bug之前一些麻煩,而Richard的離去相當于火上澆油。他的腦袋里裝有大量的關于每個東西為應該如何運作的知識,而現在,軟件只能在沒有他的情況下獨自完成工作。各種征兆開始顯露,Hamster公司開發(fā)的軟件里有些東西并沒有按要求運行。
Bug成倍增加。每一次新的版本的發(fā)布看起來都會導致越來越多之前已經完成的功能不能用。
作為解釋軟件應該做成什么樣的唯一參考來源的規(guī)格說明書,如今已經增長到沒有哪個人能單獨掌握。
ACME公司距離他們解決庫存系統問題的目標看起來是越來越遙遠。每一次新版本的發(fā)布都是一次前進,但也是一次后退。他們用這個系統來提升他們的業(yè)務,但bug不僅影響了員工的使用,而且影響到了客戶。
公司實際業(yè)務上的損失有這些bug的很大功勞。沒錯,ACME公司庫存系統原始問題已經解決了,但卻引入了其它問題,算起來得不償失。這個龐大的系統本以為能解決ACME公司所有的問題,但現在看起來更像是一個負擔,而不是資產。它每月還在不斷的吞噬巨大的財力用于維護,遠看不到盡頭。
可不幸的是,這是如今大多數軟件項目的現狀。糟糕的計劃,沒譜的預算,無休無止的“維護”,使得我們軟件開發(fā)世界對真正的軟件項目失去信心。
只有我們共同努力,以整個行業(yè)之力,才能改進軟件項目中估算和不切實際的期望等相關問題。
在試圖解決問題前,一定要盡量理解問題。
測試你的代碼,即使不為自己,也是為下一個接手你工作的人。
。
掃一掃
獲取更多福利
獵學網企業(yè)微信
獵學網訂閱號
獵學網服務號