念資工的電腦都很厲害?
上一篇我們從三寶爸(親子教養)開始談起,這一篇就換聊工程師了。我是一名軟體工程師,在學校期間研讀的科系是資訊工程,就是簡稱的資工。很多人都有個迷思,只要遇到電腦的問題,覺得找念資工的朋友或家人處理就對了。其實這麼想也沒錯啦,不過現在科技發達,資訊透明,大多數的問題都可以從網路上找到答案,很多非資訊科系的人,對電腦的知識也不少於資訊本科系的。
到底是工程學還是科學?
電腦科學的領域很廣,在國外一般被稱為Computer Science,但在台灣普遍叫做資訊工程,Information Engineering,為什麼這樣取我也不太清楚,或許是因為歸類於工學院的關係,所以系所名稱大多以XX工程為主。不過如果以畢業後的出路來看,職業的稱謂是工程師Engineer ,而不是所謂的科學家,這樣好像也蠻符合的。(好吧!資料科學家Data Scientist 另當別論)。
不論是工程學或科學,電腦普遍存在每個人的生活之中,也漸漸成為科普知識的一環,且108課綱也將相關科目納入其中,可見其重要性。
如果你對這個領域有興趣,學習的管道很多,不論是坊間的線下實體課程,或者是線上影片教學,都是蠻容易取得的。
軟體工程師只是都在寫(打)code?
我面試過很多剛畢業的社會新鮮人,他們都不是說寫程式,而是打程式,讓我很不習慣,雖然從動作來看,確實是打(鍵盤)而非寫(字),但我還是不太能接受。
離題了,身為軟體工程師,並不是只有寫程式這件事而已,如果是的話,充其量就只是個“碼農”,所以工程師還有另一種稱謂“RD”,Research & Development,(不是阿滴Ray Du喔),就是研究與開發。一個軟體的形成,從一開始的概念發想,之後的需求分析,規格設計,進入程式開發,到後續的維護與改善,都需要軟體開發人員的參與。
這一整個階段,就是俗稱的軟體工程,但我比較習慣稱之為軟體開發流程,或者你也可以稱為專案管理。Anyway,不論你叫什麼,這一切涵蓋的範圍包括市場分析,介面設計,軟體開發,產品測試等,而參與的腳色當然也不是只有軟體開發人員而已。
敏捷真的敏捷了嗎?
上述的這段流程,當然有些制式的參考規範,也有相關的證照可以考取,某些公司的部分職位也會依照其作為徵選的標準。這些流程簡單來說區分成兩種,一種是傳統的瀑布式(Waterfall)流程,另一種則是目前普遍流行的敏捷式(Agile)流程。
之所以說流程而不說軟體開發流程,是因為並不是只有軟體開發適用這樣的流程。我想可能有些人聽過Scrum,或者公司的專案管理就是採用Scrum,它就是屬於一種敏捷式的流程規範。
對我來說,敏捷是一種精神,就如同開源(Open Source)一樣,目的都是改善。開源的精神是透過開放分享進而使其完善,而敏捷的精神是透過持續的迭代(Iteration)而優化團隊效率。
至於敏捷開發真的比較好嗎?我認為沒有正確答案,一切因組織而異。就像宗教信仰,都是勸人向善,你相信它,它就是好的。就敏捷的本質上,我覺得它適合成員皆具有高度自律能力,且整體可快速應變的團隊。在東方的職場文化中,大多被訓練為奴性堅強的員工,習慣於被分派工作,否則不知道要做甚麼,若團隊的組成是這類型,那或許就不適合這樣的流程。
不過話說回來,敏捷的精神不就是為了持續改善嗎?所以,如果你不知道敏捷,或者你的團隊還沒有採用敏捷式流程管理,何不試看看,一起擁抱敏捷吧!
#軟體工程 #敏捷開發 #程式設計