HOME 回資訊服務處首頁 Login
2008年第12期
簡訊
主機資源及線上系統今(6/12)晚暫停服務
BSA查緝盜版行動6/1展開
完成WebPAC改版作業
「網路影音服務」新增1場活動內容
7月份資訊推廣課程預告
智慧財產權
誰在搜尋「office 2007」?
資訊話題
軟體開發工程師的十大特質(上)
 
資訊話題 >
上一篇 | 返回電子報
 
軟體開發工程師的十大特質(上)
 
吳信輝

前言

 軟體產業在台灣整體產業中,算是資訊產業之一;也因為資訊產業的發達,所以軟體產業算是一個熱門的產業【註1】,很多所謂非本科系畢業的學生(即大學非資訊工程、資訊科學與資訊管理主修的學生)在畢業後紛紛利用自學或是參加就業訓練班,投入軟體產業之中,使得台灣從事軟體開發的人數在產業界的比例與其他國家相比,相對是較高的。也由於是非主修的緣故,這些從事設計的軟體開發工程師還是缺少了一點基本電腦科學知識的素養。因此,台灣雖然有很多從事軟體設計的程式設計師與軟體開發人員(以下將統稱為軟體開發工程師),但是整體的發展成熟度,依然不如以軟體代工的印度等國家。

 所謂的代工產業,就是強調生產速度快與成本的低廉【註2】。電子產業在台灣算是成熟的產業,但也由於其重硬體輕軟體的特性,所以在軟體發展上,一直沒有所謂的標準作業程序,也沒有一個生產規模足夠大的公司可以建立起一套軟體開發與評估的標準。不過,近來台灣的軟體公司也漸漸朝向軟體工程的路前進,很多軟體公司紛紛建立起軟體能力成熟度模式(Capability Maturity Model Integration, CMMI【註3】)的評估與認證,強調該公司的軟體開發流程的標準化,以符合世界軟體工程發展的潮流,此點是值得高興的。

 筆者曾經以「軟體工廠」的概念,介紹標準化、模組化開發軟體的概念【註4】。其實,軟體開發就是一個標準流程的制訂【註5】。但在產業界中真正應用標準流程開發軟體的公司有多少呢?依據筆者在美國的觀察,美國的軟體產業環境也跟台灣差不多,會應用標準流程的公司也僅屬於那些較有規模的軟體開發公司,一般的小公司並沒有採用所謂的標準流程,因此,其標準化的程度其實是不如台灣的;加上其大學電腦科學主修的課程內容,有關軟體工程的著墨並不多,大抵有教導物件導向(Object-Oriented【註6】)概念,但對於設計模式(Design Pattern【註7】)的應用,卻也不見得每個美國電腦科學主修畢業的大學生都會使用。

 何以美國的軟體產業比台灣的軟體產業發達呢?原因在於他們有比較優秀的軟體開發工程師。這些軟體開發工程師的薪水在美國受薪階層中,算是處於平均值以上的行業【註8】,因此,相比較而言,他們的水準會比我們還高一點。

 軟體工程雖然一直朝向一個標準的方法前進,事實上,軟體因為是活的,它就像人類的作文一樣,不可能每一次寫都是相同的內容。所以,軟體的品質可以靠一些相關的作業程序或是標準來維持。基本上,目前軟體的水準是立基於軟體開發工程師的素質上,也就是說,軟體開發工程師的程度愈好,其軟體的品質也就愈好。以下就開始說明一個好的軟體開發工程師最需要具備的十大特點。

軟體開發工程師十大特點

特點一:喜歡寫程式
  
 寫程式其實算是一項需要腦力與勞力的工作,一個好的軟體程式,除了有良好的程式邏輯設計之外,好看的使用者介面設計(User Interface)也是一項重點。此外,當軟體系統規模愈來愈大的時候,軟體的除錯將會變成一件困難的工作,必須花費相當的心力才能將其完成。所以說,軟體作品就像一個工藝作品,需要花費很多心血並且投入很多時間才能夠使其完美;軟體開發工程師就好像一個藝術家一樣,要有相當的熱情,才能持續下去(建議參考書籍請參閱【註9】)。

特點二:完成事情的能力
  
 一般而言,軟體開發的盲點常常在於花費於系統分析與設計的時間太長,而真正優秀的軟體開發工程師並不會因為一個軟體系統架構設計未達他的標準,就遲遲不去撰寫程式碼。相反地,他會馬上撰寫相關的程式碼去驗證架構設計的優點與缺點,然後再繼續改進。因應這樣的趨勢,軟體發展流程也產生了一種稱為「敏捷軟體開發」的概念【註10】,其重點就在於將開發流程細分為多個小的開發流程,每一個小的開發流程皆以先撰寫出程式碼為目標,並在下一個階段的開發流程中,再進行調整。所以可以說,一個軟體開發工程師的功力,在於其撰寫的程式碼的數量;唯有真正看到該工程師的程式碼,我們才能真正斷定他的程式開發水準的高低。

 這樣的道理同樣也可用於電子硬體產業中。從台灣的大學電子相關系所訓練IC設計人才的過程中可以發現:「一個要從事IC設計的工程師,一定要有實際下晶片的能力」;同樣的道理,要培養紮實的程式設計人才,就必須有完整的程式撰寫能力(建議參考書籍請參閱【註11】)。(本文作者現就讀於美國聖路易大學資訊科學系博士班)(待續)

參考文獻

【註1】:請參考專欄文章:「台灣軟體產業,該醒醒了!」。

【註2】:有關於「代工」一詞的說明,中文,available at URL
<http://distance.shu.edu.tw/spirit/plan_upfile/%E5%91%82%E7%9B%88%E9%81%94.ppt>

【註3】:有關於「軟體能力成熟度模式」的說明,中文,available at URL 
<http://www.itri.org.tw/chi/services/ieknews/e0000-B10-02239-773A-0.doc> and
<http://www.itri.org.tw/chi/services/ieknews/e0000-B10-02238-DB6D-0.doc> and
<http://www.cmmi.com.tw/94PolarTech/2_document/40.pdf> and
<http://www.dgbas.gov.tw/public/Data/61281158171.pdf>

【註4】:請參閱『細說「軟體工廠」概念(一)

【註5】:請參考專欄文章:「台灣軟體工程產業的推手-李允中」。

【註6】:有關於「物件導向」的解釋,英文,available at URL
<http://en.wikipedia.org/wiki/Object_oriented>

【註7】:有關於「設計模式」的解釋,英文,available at URL
<http://en.wikipedia.org/wiki/Design_pattern_(computer_science)>

【註8】:請參考「Top 10 Jobs for the Class of 2008」。

【註9】:相關的參考書籍推薦,「Software Craftsmanship: The New Imperative」,探討軟體開發哲學問題的書籍,英文,書籍介紹,available at URL
<http://www.amazon.com/Software-Craftsmanship-Imperative-Pete-McBreen/dp/0201733
862/ref=pd_bbs_sr_1?ie=UTF8&s=books&qid=1208313963&sr=1-1>

【註10】:有關於「敏捷軟體開發」的說明,英文,available at URL
<http://en.wikipedia.org/wiki/Agile_software_development>

【註11】:相關的參考書籍推薦,「Getting Things Done: The Art of Stress-Free
Productivity」,提高執行力的方法書,英文,書籍介紹,available at URL
<http://www.amazon.com/Getting-Things-Done-Stress-Free-Productivity/dp/0142000280>




上一篇 | 返回電子報
 
 本電子報所有文字、圖片版權為中央研究院所有 。 電子報出版系統由中央研究院資訊服務處開發。