Choose Your Career Wisely.
我從事軟體相關工作很多年了,最常被問到的問題是:「我想要做軟體相關工作,不知道軟體工程師跟資訊科技(IT)工程師的差別在哪裡?要怎麼知道自己適合哪一種?」我回顧自己多年的工作經驗,差不多有一半的時間是在軟體工程,另一半時間在製造業的 IT ,就用自己的觀點跟你分享幾個主要差異。我們先輸入關鍵字看一下大家對這兩個職務的普遍認知落在哪裡:
「軟體工程師」主要負責開發和維護軟體應用程式,包括設計、編寫、測試、部署和維護。他們需要了解各種編程語言和框架,並熟悉軟體開發生命週期的各個階段。軟體工程師需要與其他團隊成員(如 PM、TE、UI/UX等)密切合作,以確保軟體應用程式的成功交付。
「IT工程師」負責管理和維護計算機系統和網路基礎設施,包括伺服器、存儲設備、網路設備等。他們需要對各種操作系統、網路協議和安全性有深入了解。IT工程師通常需要在維護現有系統的同時,為新的硬體和軟體產品進行評估和選擇。
你看出差別了嗎?軟體工程師簡單來說就是大家口中的程序員,是負責在電腦上開發程式解決問題的人。IT 工程師,是負責軟硬體基礎建設的人,從你看得到的辦公室電腦、網路服務器、系統軟體的佈建就是他們的工作,也就是在公司裡當你發現電腦有問題的時候第一個會想到的人。
不過還是很抽象對不對?所以除了先記得上面名詞解釋外(共同語言),還可以透過以下四個面向來幫助自己了解這些工作其他重要屬性,進一步幫助自己確認這種類型的工作是不是適合自己。
從職缺所屬的組織單位類型判斷
看是戰鬥單位還是幕僚單位。 以前我常聽人家說:「RD 是戰鬥單位、IT 是幕僚單位。」所以如果你在找軟體相關工作的時候,看到職缺說明看到所屬的單位是軟體工程部門或者是某種產品開發的軟體工程師,就是研發的軟體工程師。例如:智能家電、智能電網軟體開發工程師等這些都是;如果看到的所屬單位是資訊處,那就是隸屬總部的幕僚單位,可以歸類為 IT 工程師。
通常來說,在戰鬥單位的軟體工程師每天工作節奏會比較快,因為要需要面對產品交期、會碰到客戶的壓力也比較大。IT 的幕僚單位會接收使用者的需求,有點像銀行的櫃檯,使用者抽好單號就排隊等窗口來進行服務,壓力也有只是沒那麼恐怖。
從所需的工作內容來判斷
看是產品開發還是系統維運。 從前面的定義我們也知道,軟體工程師與 IT 工程師要面臨的挑戰不一樣,軟體工程師是以產品為導向的,目標是轉化客戶需求規格,像魔術師一樣把產品功能給「變」出來給客戶,工作型態一班都是一個專案接著一個專案,一個人身上同時背好幾個專案在趕也是常有的事(加班?!),除了要配合事業單位的業務需求開發不同類型的軟體,也會有出差支援客戶、現場安裝等工作,這些是軟硬整合的軟體工程師、系統廠的軟體工程師的主要工作內容。當然也有專門純做軟體的工程師,負責像是現在流行的前端、後端、全端之類的工作,會寫程式、開發 API,程式庫、中介軟體或者使用者介面控制等。
IT 工程師會著重在公司的各級資訊系統的維運層面,目標是努力保證公司的 IT 服務的 SLA 層級,為了確保各種資訊系統的通暢與軟硬體的穩定性,熟悉相同技能或系統的 IT 工程師就會聚再一起形成一個服務單位。比如說:MIS 的 IT 工程師負責辦公室 OA 系統、CIM 的負責生產線 MES/SFIS 系統,或者企業總部的 ERP/SCM/PLM系統的維運。
類似的職務所需的技能不同
看技能關鍵字進一步確認是否適合。 研發的軟體工程師需要開發軟體服務或軟硬體產品並且要結合所屬產業的 domain knowledge,日常工作會包含大量閱讀產品相關各種特性與技術文件、比較產品功能規格與研究各種系統設計架構,還要能團隊合作,應用軟體開發流程來達到工作目標,所需軟體技能關鍵字例如:會各種程式語言、資料結構、物件導向設計(OOP)、設計模式、持續整合(DevOps)、敏捷式開發(Agile)、看板管理(Kanban).. 等,對程式語言整握度要求高,也嚴格要求原始碼的控管,所以會使用版控軟體 SVN, Git 也是必備的技能,在專案的控管上就需要熟悉 Redmin, Jira, Rational 等的 issue tracking 軟體;
負責系統維運的 IT 工程師就會碰到公司的各種資訊系統,就像是業務會用的 BPM,財務管銷研就是 SAP/ERP/PLM,負責生產線的有 MES/SFIS 等… 這些資訊系統每一套都規模龐大與功能複雜,通常都會有專門的外包廠商,有些財力雄厚的大公司就可能會有成立專門的團隊負責客製化這些資訊系統來符合公司內部需求。 負責資訊系統的 IT 工程師要非常熟悉自己負責的系統的各種工作模組與資訊流,如此才能做好系統使用者服務與供應商的溝通橋樑。專門負責硬體基礎設施的 IT 工程師也叫做 Infra,是負責光纖或無限網路、電腦主機、伺服器、儲存空間、資訊安.. 等基礎設施,24x7 是常見的 IT 營運模式,所以平常 IT 工程師也會需要值班或晚上輪班。這點也值得考慮。
從學經歷要求來看是否有機會
那非本科是不是以後就沒機會了呢 必須說,現在要做軟體工程師或者 IT 工程師,從軟體工程、資訊管理、計算機相關畢業的學生真的更有優勢。特別是軟體工程會比其他的科系更吃香「很多」,因為在大公司的招募政策下,很多軟體開發相關工作都直接或間接的所屬科系給綁定了,這是一種趨勢啦,不能說是公司有偏見或是不相信個人能力,畢竟民間高手這麼多不是嗎?只是企業在找人的時候都是為了「快速」找到「適合」的人,不會堅持一定要找到「最好」的人,所以對公司而言,最保險的方式還是選擇量產的資訊工程會比較快。不過,也不是每間公司都會如此嚴格要求,可以考慮從比較缺人的公司,或新創的公司入手,或者有機會問 HR 會比較快。
通常 IT 工程師對學歷的要求比較沒這麼嚴謹,從負責資訊系統的 IT 工程師當作軟體生涯起點也是個很好的開始。以我自己為例,我自己也不是本科系畢業的,一開始就因為寫論文時對程式產生了興趣而入行,畢業後從製造業的系統 IT 工程師開始,不斷從工作中學習,開始累積了相關的作品與工作經驗,這些都成為我後來進入其他軟體相關工作領域的敲門磚。所以想進入軟體相關工作領域的你,只要不是一開始門檻就設定在頂尖的 FAANG,一切都是有可能的。
總之,軟體工程師的職責主要是開發和維護軟體應用程式,而IT工程師則主要負責管理和維護計算機系統和網路基礎設施,這點要先記住,再多從上面提到的四個個面向(所屬組織、技能需求、關鍵字、學歷要求)觀察,結合自己個性與生活條件綜合評估一下,就能知道自己適合哪一邊了。如果你對這些類型的問題感興趣,或者想了解更多,歡迎留言一起討論。