Member-only Article✨
Please sign up or log in for the complete content
Have been the member? Log in
疫情帶動企業數位轉型,又掀起一批轉職軟體工程師的熱潮。
剛接觸軟體工程師領域時,你可能會被前端工程師、後端工程師、 全端工程師這些常見的工程師職稱搞得一頭霧水。這些軟體工程師彼此的工作內容有哪些差異?各自的薪水待遇又是如何?本篇文章將帶你一覽這些常見軟體工程師職稱分別的月薪級距、工作內容、以及必備程式語言技術力與軟實力,讓你選擇進修、轉職方向,或者在與技術團隊溝通協調時,更有一份參考依據。
「寫程式對軟體工程師而言只是基礎要求,更多考驗你的自我管理與精進成長」
軟體工程師,顧名思義,在公司行號裡負責資訊工程系統、電腦軟體的設計、測試、安裝、修改與維護。白話文來說,就是至少精通一種程式語言,會撰寫電腦能理解的指令,讓電腦自己工作的人。
即使軟體工程師有多種分類,日常業務性質並沒有太大的不同,大致可分為三類:
大多數人對軟體工程師的刻板印象,是坐在電腦前埋頭苦寫。然而,為了節省開發階段的時間前,「定義問題,找出最適解」是很重要的。此時需要進行跨部門的需求釐清、開發策略的擬定,否則容易出現職場糾紛。這類業務通常佔軟體工程師工時的二到三成。
釐清需求的工作內容包含但不限於:
此外,「專案工程師」與「產品工程師」在釐清需求時的工作情境差異甚大。專案工程師通常會得到比較清楚定義的規格,因此釐清規格部分時間會比較少;而產品工程師得到的規格往往比較模糊,甚至要自己定義,所以需求討論一般會佔據比較多時間。
進入開發後,工程師需要先與團隊成員討論規格與實作方式,例如前端工程師與後端工程師討論架構的設計與分工、API 串接格式等,接著才會實際寫 code。而在自己執掌的項目交付給需求窗口前,測試與除錯(debug)也是必要的,此外,功能交付後的教學與維護也由工程師負責。
此類工作內容包含但不限於:
上述的工作項目,不一定會流水線式順著進行,而看專案或企業的風格,常見的大分類有: waterfall, agile/lean, 隕石開發...。
➤ 延伸閱讀: 何謂 Scrum 敏捷開發?知名新創 PicCollage 告訴你
資訊工程技術日新月異,隨時會有更好的程式寫法誕生,如何快速學習並且應用在當下任務情境,對軟體工程師至關重要,此類工作項目包含了解並且引入新技術、新套件、學習使用新的系統等等。部分業界工程團隊也會每週舉辦讀書會 (study group),共同吸收新知,工程師也時常為了更好的完成專案,往其他領域學習,例如前端工程師往後端、資料科學發展等。
常常被前端、後端這些名詞搞得霧煞煞嗎?好奇我們看到的軟體產品中,不同種類工程師分別負責哪些環節嗎?本段將常見的工程師職稱分為七大類,分別介紹他們的工作內容,以及所需的能力與技術。
在網頁開發中,前端工程師負責一切與使用者介面相關功能的開發與維護,若將其工作內容大概分程兩大面向,即是建置合理的頁面讓使用者能與產品互動,以及讓資料能順利顯示在使用者面前。
延伸閱讀:如何成為前端工程師:什麼是前端 | 在夯什麼 | 在做什麼 | 有哪些特質
後端工程師的主要任務,是開發伺服器端的應用程式,並根據不同專案的商業邏輯開發框架。當使用者在前端下指令時,後端工程師要使資料庫自動且有邏輯地撈取對應資料,並在頁面上呈現正確結果。
根據 《Digital Report 2020》的網路瀏覽裝置比例數據,在全球使用行動裝置比例高速成長的趨勢下,台灣網路用戶的手機與桌機佔比只有 7% 的差距,並且用手機瀏覽網路的比例穩定成長,顯示 App 開發工程師的需求將持續上升。然而,RWD(響應式網頁設計, Responsive Web Design)使得 Web 框架也能在不同行動裝置上正常使用,降低企業對於聘用專職 App 開發工程師的需求。以 Yourator 站上為例,Web 工程師與 App 開發工程師的招募比例約為 4:1。
App 開發工程師可分為兩種,分別是 iOS 工程師與 Android 工程師,入門門檻差異不大:
iOS 工程師最基本的工作內容便是透過 Swift / Objective-C 開發一款 iOS 應用程式。除了產品開發外,也需要熟悉 Apple 的上架流程,包括憑證及憑證描述檔等。並於上架完成後,持續維護 App,在每次 iOS 更新後同步修改老舊的程式碼,使其獲得支援,維持穩定且優質的使用者體驗。
與 iOS 工程師同理,Android 工程師也需要透過 Kotlin / Java / Android Studio 開發 App 產品與功能、解決設計及開發層面技術問題,同時導入新的 Android 程式、版本與各種新技術,帶來更流暢的效能。
Infrastructure 指的是資訊系統的基礎架構,各種 Infrastructure 工程師的目標都是把某個面向或所有面向的基礎架構處理好,讓執行於其上的系統可以順暢的運行。目前比較常見的 Infrastructure 工程師有幾種: DevOps 著重於讓開發團隊能順暢的接軌營運,SRE 著重在網站的可靠性,雲端架構師則著重在雲端服務的架構與維運。為了要讓組織內資訊系統能夠好好運行,Infrastrucure 工程師必須存在的重要角色。
DevOps 其實是兩個英文字的縮寫,分別是 Development(開發)和 Operations(營運),原先其實是一個文化概念,後來才演變成專門的職稱。DevOps 工程師是敏捷開發盛行後應運而生的角色,負責消除開發與營運團隊之間的溝通與協作障礙,讓敏捷開發的成果能快速上線,打造流暢的部署與發布流程。
DevOps 工程師工作內容核心是建立自動化流程,進而縮短產品的交付周期,最常見的方式莫屬開發企業專屬的工具平台,甚至統整企業內部原有的零散工具,打造能覆蓋整個產品交付流程的工具體系。此外,無論是實體的工具與體制面的流程改進,都需要有人在內部持續推廣,監督是否落地,並持續探索潛在的優化點。
SRE 的全稱是為 Site Reliability Engineering,通常翻譯為網站穩定性工程師。SRE 工程師所需求的工具屬性與 DevOps 工程師非常類似,有許多專文用很長的篇幅解析兩者的差異。如果要簡單區分的話,SRE 的關鍵點在於使產品具有「高擴展性」、「高可用性」,例如當用戶數量暴增時,可以讓產品在不調整架構的前提下支撐服務、或者當系統掛掉時,負責讓服務在可推估的時間內恢復運作,工作內容與系統的變更與故障息息相關。
雲端工程師是近幾年興起的職位,主要因為雲端服務(AWS、GDP)等蓬勃發展,企業能夠通過雲端平台節省各項資源,因此聘請雲端工程師負責建置與維護雲端平台,讓企業服務能在雲端正常運作。由於不斷上升的需求,加上 AWS/GDP 都有完整的線上認證機制,需求近幾年來不斷的上升。
QA 工程師全稱 Quality Assurance Engineer,最主要的職責便是測試軟體產品的品質,因此 QA 工程師需要了解產品細節、流程與邏輯,也被稱為「世界上最瞭解功能細節」的職位。
QA 工程師的常見工作內容包含,透過手動,或撰寫自動化測試的方式檢查軟體產品,確保上架、紀錄並分析所得到的結果、建置與管理測試項目(Test Cases)資料庫,同時不斷優化測試流程,讓產品能更敏捷的上線。
➤ 參考閱讀:從幾乎不會任何程式語言,到國際 App 新創第一位 Release Manager:QA 工程師的成長之路
數據概念的興起,及其背後對業務成長的影響潛力,讓企業組織紛紛投入預算,組織內部的數據團隊,其中最熱門的兩個軟體工程職種,分別是「資料工程師(Data Engineer)」及「AI 工程師」。
Data Engineer 所負責的角色,是透過一系列程式技術維運企業內部的數據系統,方便蒐集與管理數據,並將原始數據轉換為可用資訊,讓團隊內的 data scientists、business analysts 能夠使用。Data Engineer 也是相對新興的領域,單就掌握的技能樹而言,跟後端工程師有一定程度的重疊,也有部分企業會直接訓練內部的後端工程師接觸數據知識。
有了一定量體的數據作為基底,就能嘗試建立模型,模擬人類的行為路徑,此時就開始需要 AI 工程師的協助。AI 工程師通常會透過機器學習(machine learning)、深度學習(deep learning)推演行為,從中得出足以影響決策的商業洞察。
AI 工程師的日常業務主要包含業務主要包含開發、測試、並部署 AI 模型,滿足組織內部不同需求方,協助他們理解 AI 模型,實際運用於內部決策,此外也需要負責資料數據結構建置相關工作。根據需求技術的不同,企業也會單獨招聘機器學習工程師、深度學習工程師等。
區塊鏈工程師的需求在這兩年極速上升,也促使許多網頁開發工程師跳入這艘大船學習新技術。
目前區塊鏈工程師的工作項目主要能分為兩種領域,第一種是開發公有鏈(公共區塊鏈)的工程師,技術難度高,需要更底層的程式語言、密碼學等知識。第二種則是負責撰寫智能合約開發 DAPP(去中心化應用程式),同時也需要與傳統前後端介面 API,成為成為消費者真實可用的產品服務。
如果你瀏覽過 Yourator 站上軟體工程相關的職缺頁面,也會經常看到「全端工程師」這個職稱。事實上,全端工程師比較像是個通稱,一般全端工程師指的是網頁前端+後端的開發,但依據專案或產品需求,有些全端工程師也有可能是 App + 後端、前端+App+後端等職能。
近十年隨著軟體技術高速發展,並在新創公司強調 MVP (Minimum Viable Product, 最小可行性商品)的潮流下,全端工程師能快速打造出產品 prototype,並在變動的新創環境的隨時支援任何產品開發各個環節,是相當搶手的人才。
綜上所述,大部分新手想轉職成為軟體工程師時,都會以「成為合格的前端工程師」為初步的職涯目標,不僅上手門檻較低,部分視覺設計專業的求職者也能發揮所學,提升自己的附加價值,但起薪相對較低。因此,如果在學習過程中意識到對於軟體開發的天賦及熱忱,可以繼續朝後端、全端等軟體工程相關職務邁進。
看完落落長的工作內容,你一定會好奇:「他們各自的薪資待遇怎麼樣呢?」。Y 小編也整理了站上的薪資數據,分別列出上述職位的平均年薪範圍。
依目前站上資料統計顯示,薪資待遇最高的是「行動裝置開發」,緊追在後的是近年的熱門趨勢「資料工程/機器學習」,以及通常需要由資深工程師擔任的「Devops / SRE 工程師」。
而雲端工程師與區塊鏈工程師都是近年興起的領域,薪資級距落差較大,本次不納入統計,可以到 Yourator 的職缺頁面瀏覽大致的薪資範圍。
(定義:平均下限~平均上限。統計時間:2023/11)
➤ 你可能會想瀏覽:
Yourator AI / 人工智慧職缺專區⎜最新 AI 工作資訊
Yourator 數據人才職缺專區⎜最新數據分析、數據工程師職缺
基本介紹各種類工程師的工作內容後,想成為軟體工程師的你,心頭一定會冒出更多疑問:「我該往哪種工程師邁進?/我的第一個程式語言該選哪個?」
對於初心者而言,與其看著薪資、招募比例糾結半天,不如先「找尋一個能讓你學習程式的理由」,可以與朋友組成專案,學習最適合專案的語言、或是參與社群,學習最容易取得學習資源的語言。專一深耕其中一項後,再瀏覽工程類別職缺的 JD (工作內容),篩選出適合的職缺,並補足尚未完成的技能樹。
資深的軟體工程師普遍認為,對邏輯與流程的注重是工程師最基本的技能,當今的電腦設計、程式語言以流程控制為主體,如果想成為工程師,邏輯能力卻不及格,很難繼續往下學習。
此外,耐心與堅持是擔任工程師的必備特質,擔任工程師不免會遇到需要維護程式碼、重複做公司舊有程式工具的時候,如何在繁瑣的過程中尋找成就感,或是建構一個新的自訂義解決方案,優化整體系統,都是一種練習與挑戰。
另一個要點則是對於問題本質的好奇心,如果好奇自己適不適合當工程師,不妨觀察自己在日常生活中遇到麻煩時,是否會習慣抽絲剝繭,把各種可能出錯的環節一個一個排除,直到找到問題根源,並對於得到解答感到興奮以及滿足。如果你擁有這種性格,在轉職軟體工程師的路上一定更加順利。
此外,Y 小編常聽到的一個提問是:
「我是文組出身/我的數理很爛,我是不是不適合當軟體工程師?」
事實上,如果在 Google 搜尋「文組 工程師」,你可以看到無數的成功的轉職案例,因此,與其因為背景而自我懷疑,不如回歸人格特質,並且實際接觸基本學問,才能能更全面做判斷。
資訊時代來臨,每位工程師都是時代的推手,希望這篇文章有幫助你更了解工程師們的工作內容,做出更好的職涯選擇,或者在工程團隊裡找到對的人溝通。
相關閱讀:
想轉職工程師該從何開始?2022 最新課程資源、培訓計畫推薦
軟體工程師想找接案 / 遠距工作?精選 6 個國內外遠端求職管道!
想進新創當軟體工程師,有哪些必備能力與特質?新創 Tech Lead 親口告訴你