2009年1月12日 星期一

維護的重要性

"對於日前桃園機場境管電腦大當機事件, 最後還是內政部長廖了以親自指揮, 才叫得動這套系統創始的資深工程師章毅昌上陣解決問題, 而面對這套只有「少數人才懂」的電腦系統, 移民署已決定更換。"

不知道大家對這新聞有何想法?

為什麼開放原始碼觀念帶給我們如此大的震撼?
為什麼近年來技術增長的如此快速?
為什麼Google產品能夠如此強大?

因為他們都採取"讓越多人瞭解, 讓越多人能輕易的上手"這種觀念, 唯有如此產品或技術才能以倍數發展或散佈

寫軟體, 不是自己寫了幾百支檔案, 能夠運作正常就洋洋自得。一個公司裡, 最講求的部分絕對包括效率, 當然人員的流動性也必須考慮進去, 當接手的人必須花比原開發時間多一倍甚至兩倍去閱讀程式碼, 進而重構(Refactoring), 途中更必須承擔毀損舊有結構的風險, 這時候你才會把當初懶惰, 不以為意的想法(不寫說明文件, 詳細註解, 物件設計藍圖等...)丟置在一旁, 並深深警惕自己下次不要再犯(雖然再犯率和煙毒犯假釋出獄的機率差不多...很高), 但至少你學到一個經驗, 不過在這當中老闆已經燒掉多少薪水了?一個人一個月加上詢問原開發者半個月...。

台灣早期很多軟體都是這樣的做法, 我把它稱之為偉人模式, 因為總是有個很厲害的工程師獨自(或帶領)寫出一套大型軟體, 當然箇中奧妙也只有他自己知道, 接下來的幾十年, 維護的人來來去去, 一知半解的祈求著不要crash。比較倒楣的就是碰到類似桃園機場的狀況, 客戶再也不使用該軟體。

近年來架構設計的觀念從國外引入, 慢慢的大家也開始著重這一塊, 為了寫出易擴展好維護的軟體, 會把類別說明當作教科書來寫, 當然由於文件齊全, 接手的人又可以使用擴展手法不更動到既有程式, 不但時程縮短許多, 也能做到版本控管。

並不是指早期的軟體很糟糕, 那是因為環境使然, 而是說軟體始終是一個跟著時間一同前進的東西, 要做到長久當初設計時就應該把眼光放遠, 尤其是現在進步速度如此之快, 擴展已經是見怪不怪的事情, 不, 應該是必備!

做為一個老闆, 你覺得留住一個人十年簡單還是做出一套軟體能夠方便擴充功能, 架構良好讓來來去去員工維護簡單?

沒有留言:

張貼留言