沒人在乎軟件工程——缺失
長期以來,關于軟件工程有許多吊詭之處,通過本文章,我對五個吊詭的問題提出我的看
法,希望也能因此解開你心中對軟件工程價值的疑問。
Q: 軟件工程到底有沒有用?
如果你上過軟件工程的課,你很可能會懷疑軟件工程有沒有用,如果你有這樣的懷疑,很
可能是因為你「遇人不淑」。事實上我就是如此,大學時我原本有選修軟件工程的課,但
是上不了幾次課我就退選了,因為老師教得奇差無比,加上老師本身不是研究軟件工程的
(他根本就是研究硬件的),更沒有業界的實務經驗。沒理論基礎,沒實務經驗,沒教學
熱誠,遇到這樣的教授我怎能不打退堂鼓。
但千萬不要讓這種教授??喪了你對軟件工程的信念。軟件工程絕對是有用的,最佳的實例
就在印度。你只消看看印度的軟件產業,如此講究軟件工程,而且開發軟件的成績如此輝
煌,你就應該知道:軟件工程除了可以拿來發表論文幫助學生取得學位或幫助教授升等之
外,也確實是可以幫助軟件工業的。
Q: 軟件工程對誰重要?
我們常常(特別是最近)會聽到一派言論比較反對軟件工程的說法,他們認為加強程序員
的能力比實施軟件工程「更重要」。我不反對這樣的說法,但問題是對誰比較重要?我認
為,軟件工程對組織(公司)比對個別的程序員更重要。程序設計技巧的加強、以及新技
術的學習對程序員比較重要。采用軟件工程,短期內對程序員帶來的好處不多,甚至會為
程序員帶來麻煩(被加諸許多限制)。
對于公司來說,實施軟件工程,除了可以因此掌握軟件的品質之外,更可以避免一些風險
。即使目前的軟件開發團隊還算穩固,但是這些人未來可能會一個一個離職。沒有好好實
施軟件工程的公司,在重要的軟件開發人員離職后,往往會讓軟件計劃嚴重延宕,甚至停
擺(我們聽過也看過太多這樣的例子)。如果當初有實施軟件工程,就可以一切井然有序
,可以不用花太多時間就讓接替的人繼續專案進度。
Q: 既然如此,程序員可以不要理會軟件工程?
既然程序員最重要的是加強程序能力,那么程序員應該忽略軟件工程?當然不是。程序員
是公司的一份子,對公司有利的事,也會間接對程序員有利。再者,程序員是無法當一輩
子的,必須及早準備因應之道(請參見「軟件人員的生涯規劃」一文)。如果有心要在以后成為主管階層,最好能先對軟件工程和計劃管理的相關知識做好準備。對程序員來說,
軟件工程又比計劃管理來得更急迫。
Q: 軟件工程對哪類型的計劃比較有用?
對于小型計劃來說,軟件工程不見得有太大的用途(但也不至于有害)。對于中大型計劃
來說,如果不采行軟件工程,后果往往就會很嚴重,很可能會遭致一團混亂,導致計劃失
敗。就算完成計劃,大概也是拼湊出來的,許多 bug 潛藏其中,軟件的實用性很低,而且
無法維護。
Q: 那么小型計劃不應該用軟件工程?
雖然使用軟件工程與否,對于小計劃的影響不大。但是我認為,即使是小型計劃,最好也
要遵照軟件工程的程序來進行。通過小計劃來練習軟件工程,讓大家有機會熟悉軟件工程
的運作,當在大計劃中使用軟件工程時,才不會手忙腳亂。一個公司如果沒有從小計劃開
始實施軟件工程,就驟然在大計劃中實施軟件工程,那么失敗的機會很高。而且第一次就
失敗,往往會使得主管對于軟件工程的信心大打折扣,連第二次嘗試的機會都被抹殺了。