工程師種類有哪些?最新13種軟體工程師常見分類|工作機會

軟體工程師「最新品種」有哪些?軟體工程師已成為一條多樣化的職涯路,不同領域的軟體工程師不只運用到不同程式語言、不同框架、不同開發平台……也已經開始延伸出不同的證照、不同的工作文化。本文細部分析13種目前較常見的軟體工程師類目,以及面對趨勢更要具備的3種思維!

文/Mr. 6

本文目錄(點擊可快速前往)

一般來說,當一門領域會被拆分至更細的子領域,就愈表示這門學問已經太複雜,必須專業分工,針對每一個子領域去發展。近年剛入職場或即將轉職的資訊從業人員蠻感興趣的一個話題就是,如今,軟體工程師到底分為哪幾類?各種軟體工程師的前景又各為何?

前端、後端、APP、AI……這些新「品種」的軟體工程師,都是後來才分出去的。30年前,軟體工程師就只有一種───軟體工程師。那個年代的軟體工程師甚至還要懂一點點硬體,甚至不自稱為軟體工程師(programmer),而是電腦工程師(computer engineer)。後來,連軟體這個當年的新興領域,也被細分成這麼多種了。

首先,讓我們先來細看一下,軟體工程師的最新分類。

13種常見的軟體工程師種類

軟體工程師已成為一個多樣化的職涯路,它不只運用到不太一樣的程式語言,在不同平台上面開發……它已經開始發展出不同的專業領域、職能、工作文化。每種軟體工程師皆自成一世界,都有各自獨特的職務,以下列舉13種現今常見的軟體工程師種類和它們的歷史背景,這些分類與描述,想必也須在一年或兩年後又必須重新更新。

1. 前端工程師 Front-End Engineer

前端工程師(Front-End Engineer)主要工作是在應用程式的使用者介面和用戶體驗。他們使用HTML、CSS和JavaScript等技術來創建響應式(RWD)和互動性的網站和應用程式。前端工程師的工作重點是確保用戶界面美觀、易於使用,又兼顧性能以及可以在各種平台上皆讓用戶可以使用。前端工程師往往與設計師、UI/UX研究員等等保持密切合作,確保使用者使用的感覺是好的。前端工程師幾乎是第一種分出來的軟體工程師子領域,在網頁為主的應用方案中(Web-based Applications),前端工程師的出現,同時也宣示著電腦運算從後端(伺服機)部份移至前端(用戶的瀏覽器)。

104【前端工程師】工作機會

沒看到有興趣的職缺嗎?

2. 後端工程師 Back-End Engineer

後端工程師(Back-End Engineer)主要負責應用程式的伺服器端邏輯和數據管理。他們算是比較傳統的軟體工程師,仍然在大型軟體系統中扮演著非常重要的地位。他們使用各種後端語言如Java、Python、Ruby和PHP來構建和維護伺服器、資料庫及應用程式邏輯。後端工程師確保數據能夠高效、安全地存儲和檢索,並支持前端的功能需求。

104【後端工程師】工作機會

沒看到有興趣的職缺嗎?

3. 全端工程師 Full Stack Engineer

全端工程師(Full Stack Engineer)是能夠同時處理前端和後端開發工作的工程師。他們掌握了HTML、CSS和JavaScript等前端技術,同時也熟悉後端語言如Python、Ruby或Java,以及資料庫管理。他們的技能使他們能夠獨立完成從用戶界面到伺服器端的整個應用程式的開發。此字「全端」(Full-stack)也不只用來形容工程師,亦可以來形容其他非技術領域,當某個產品試圖打破原本前後、上下層的分類而融為一體時,也可以成為「全端」。事實上全端這個字也暗示著無論產業如何要求拆層、分工、專精,若你可以反其道而行而試著「全懂」,總會讓自己擁有一些比別人不一樣的獨特機會。

104【全端工程師】工作機會

沒看到有興趣的職缺嗎?

4. 行動應用開發工程師 Mobile App Developer

行動應用開發工程師(Mobile App Developer)專門從事手機應用程式的開發工作。這類工程師的出現,就像前端工程師一樣,也是宣示著許多網路應用從瀏覽器轉向直接安裝於智慧手機中的App的典範轉移時期。他們通常使用Swift和Objective-C來開發iOS應用,或使用Java和Kotlin來開發Android應用。行動應用開發工程師需要了解移動平台的特性和限制,並優化應用的性能和用戶體驗,即便來到現在,手機的系統軟體依然尚未「大一統」,以iOS與Android兩大陣營為首,考驗著行動應用開發工程師們如何在兩大陣營做出學習與職涯上的選擇,或「腳踏兩條船」。

104【行動應用開發工程師】工作機會

沒看到有興趣的職缺嗎?

5. 資料工程師 Data Engineer

資料工程師(Data Engineer)亦是新世代的新職稱,從「資料挖礦」(Data Mining)、「大數據」(Big Data)直至現在的AI時代,資料已從被動的角色成為決定此軟體應用是否有競爭力的主要角色,因此各企業特別需要厲害的資料工程師能負責設計和建構能夠收集、存儲和處理大量數據的系統。他們使用SQL、Python和各種大數據技術如Hadoop和Spark來構建數據管道和數據倉庫。資料工程師的工作對於企業做出數據驅動(Data Driven)的決策至關重要。

104【資料工程師】工作機會

沒看到有興趣的職缺嗎?

6. 資料科學家 Data Scientist

資料科學家(Data Scientist)是這些工程師種類中最不像傳統工程師者,但其重要性相信大家也已經常常聽過,愈來愈重要。許多原本非資工領域的專業人士,尤其是專修數學、統計學與其他理科學問的紛紛也轉至資料科學家領域,專門分析和解釋大量的數據。他們經常使用機器學習(Machine Learning)和數據可視化工具來發現數據中的趨勢和模式。資料科學家將這些洞察轉化為可操作的建議,幫助企業制定策略和解決問題。

104【資料科學家】工作機會

沒看到有興趣的職缺嗎?

7. 安全工程師 Security Engineer

安全工程師(Security Engineer)專注於保護應用程式和系統免受各種網路上的資安威脅,他們使用加密技術、滲透測試和漏洞掃描工具來確保系統的安全性。安全工程師的主要任務是識別和修補安全漏洞,並制定安全策略和規範。這種軟體工程師也是歷史悠久,但網路上的各種惡意攻擊、釣魚軟體、駭客入侵與偷竊個人資料進行勒贖者卻愈來愈多,於是安全工程師的重要性似乎一直都沒有下降。

104【安全工程師】工作機會
Security Engineer
台北市松山區|待遇面議
Information Security Engineer
台北市中正區|年薪800,000~1,800,000元

沒看到有興趣的職缺嗎?

8. 機器學習工程師 Machine Learning Engineer

機器學習工程師(Machine Learning Engineer,或直接稱為AI人工智慧工程師)專注於設計和開發能夠自動學習和改進的算法和模型。他們使用Python、R和TensorFlow等工具來構建和訓練機器學習模型,並將其應用於各種領域,如圖像識別、自然語言處理和推薦系統。機器學習工程師需要深入了解統計學和數據科學。這類型的工程師在2023年所開啟的生成式AI(Generative AI)時代,更需要懂得如何不要從0開始,而是靈活的運用目前已有的模型,或使用目前已開放的API,再加上自己系統內的新舊資料,快速的整合成可以進入市場的AI應用──也就是說,以前往往扮眼研發角色重於產品角色的機器學習工程師,現在的角色已經趨近於應用面、市場面。

104【機器學習工程師】工作機會

沒看到有興趣的職缺嗎?

9. DevOps工程師 DevOps Engineer

DevOps工程師(DevOps Engineer)則是近年很流行的職稱與說法,負責開發和運維之間的協作與自動化。他們使用工具如Docker、Kubernetes和Jenkins來實現持續集成和持續部署,確保應用程式在不同環境中的一致性和穩定性。DevOps工程師的工作目標是提高開發流程的效率和質量。

104【DevOps工程師】工作機會

沒看到有興趣的職缺嗎?

10. 嵌入式系統工程師 Embedded Systems Engineer

嵌入式系統工程師(Embedded Systems Engineer)專門從事嵌入式系統的開發工作。他們使用C和C++等語言來編寫運行在微控制器和其他嵌入式設備上的軟體。嵌入式系統工程師的工作範圍涵蓋從家用電器到工業自動化設備的各種嵌入式應用。

104【嵌入式系統工程師】工作機會

沒看到有興趣的職缺嗎?

11. 遊戲開發工程師 Game Developer

遊戲開發工程師(Game Developer)負責設計和開發電動遊戲。這類型的工程師被分門別類出來,往往是因為遊戲領域所需要的硬軟體已經和其他的一般應用大異其趣,遊戲領域自成一格,雖然使用者範圍不廣,只限於遊戲玩家,但這些玩家卻非常重度使用,也因此遊戲開發工程師一直都是人們夢想的行業,儘管它工作時數並不短。他們使用Unity、Unreal Engine和C++等工具和技術來創建互動式和沉浸式的遊戲體驗。遊戲開發工程師需要具備圖象程式、物理模擬、人機互動設計……等技能。

104【遊戲開發工程師】工作機會

沒看到有興趣的職缺嗎?

12. 資訊系統工程師 MIS Engineer

資訊系統工程師(MIS Engineer)專注於設計和維護企業的管理資訊系統。他們確保企業的數據和資訊系統高效運作,維持業務流程和決策。MIS工程師通常會使用ERP系統和各種企業軟體來優化企業資源管理。

104【資訊系統工程師】工作機會

沒看到有興趣的職缺嗎?

13. 韌體工程師 Firmware Engineer

韌體工程師(Firmware Engineer)容易和剛剛提過的嵌入式工程師(Embedded Software Engeineer)搞混,這裡指的往往是比嵌入式系統更低階、更接近硬體的低層軟體。使用C和C++等語言來編寫,或直接進行Assembly Language的撰寫,往往燒在硬體裡無法改變,甚至要包括一些像FPGA硬體語言的配合,是許多電腦設備、元件或電子產品(無論大型或小型)的最基礎的運作功能,也因此韌體工程師的工作涉及從消費電子產品到醫療設備的各種硬體產品,範圍相當廣。

104【韌體工程師】工作機會

沒看到有興趣的職缺嗎?

這些種類的軟體工程師每一種都在其專業領域內發揮著不可或缺的作用,共同推動軟體產業的未來。


軟體工程師分這麼多類,是要「逼」我們選擇其中之一嗎?

這個問題其實沒有一定解答,且相當具爭議性。我認為,NO,雖然軟體工程師分類眾多,有的用人主管或技術主管會期待新的工程師要專注在某一類而不只是「通用工程師」,但,軟體工程這條職涯,被逼著選其中之一而從此深耕在某個軟體工程子領域,對軟體從業人員來說未必是好事。

事實上,軟體產業的後起之秀,也往往因為分工過細已經失去了原本軟體工程師該有的熱情。

什麼是軟體工程師最原始的熱情呢?

那就是,有某種「憨膽」與志氣,憑自己一雙手,寫出一套軟體,改變全世界!

還記得Linux作業系統,由芬蘭的Linus Torvalds於1991年一手促成?

或記得Minecraft,由Markus Alexej Persson(暱稱為「Notch」)於2009年推出,成為了歷史上最暢銷的遊戲?

不幸的,隨著軟體工程分工愈細,它慢慢變成一個愈來愈無聊的學問,因為工程師已經不是夢想家、實作家、創業家,而愈來愈像是一支大型工程師團隊裡的小小螺絲釘,配合著做著各種形式上的開會、各種形式上的註記與報告。如今學習軟體工程的學生,也因為學得太細,往往不再懷有創造出一套偉大產品的夢想,而是準備入職考試,刷「Leetcode」,趕快進入大公司,追上一條發財的職涯之路、看似前景無限的所謂「專業」職涯。

初學者一看到眼花撩亂的軟體工程師分工,也就以為要去培養某特定技能,成為其中某一領域的專家。他們不知道的是,專精於某一條軟體工程師子領域的職涯之路,儘管可以讓他們在短期內獲得一定的競爭優勢,但長期來看,這種過度專精,只會限制他們的職業發展。尤其科技日新月異,新技術層出不窮,過度依賴某一技術的風險在於一旦市場需求改變,這些「專家」便瞬間變成甕中鱉,與甕一起被淘汰掉!

那個「甕」,過去二十多年來,有好多案例。其中各位可能聽過的慘烈例子,十幾年前,有些軟體工程師力圖專精於Flash技術,幻想著有一天Flash會取代所有前端程式及HTML,甚至連後端也都囊括進去,但,隨著HTML5的興起,這批Flash眾工程師們,不幸的,被市場淘汰,被人們遺忘。

軟體工程師們還必須認清,企業培養工程師的潛軌,和個人的利益往往是相悖的;企業希望將員工培養成一個個可替代的零件,因此,專精於某一技能的工程師雖然在某一領域內表現優秀,但他們的工作內容往往是高度重複和狹窄的,也就是說,看起來你愈專業,你就愈變成「免洗筷」──很矛盾的是不?淪為公司裡的「螺絲釘」、被養在大團隊裡以至於失去了全觀能力,突然被要求停止開發某產品、改平台、換語言、打掉重練後,就瞬間不知該去哪裡了。

現代軟體工程師應該具備的3種思維

因此,面對軟體工程師的分類如此多元化,現代軟體工程師應當重視:

一、不怕變通才,維持技能的多樣性,保持自己職涯的靈活!

不要僅僅追求某一領域的專精。在學習過程中,軟體工程師甚至應該刻意避免過度專注於某一技術,而是應該保持對各種技術的興趣和探索,並持續在例如GitHub上面貢獻與發表各子領域的作品。剛剛提到,全端開發(Full Stack Development)至少是一個很好的開始,同時掌握前端和後端技術,並理解如何將兩者有效結合。這樣的開發者不僅能夠獨立完成整個應用程式的開發,還能在不同的技術需求間自由切換,應對不同的挑戰。

二、培養一種「我可以一個人完成全部」的精神,而別被團體合作給洗腦

拒絕企業或工程部門給你過多的「團隊」概念,並不是說要拒絕團隊合作,而是要堅持具備獨立解決問題的能力和全局觀念,有些東西,自己認為應該做,與其去說服團隊或走冗長的正規管道,不如「自己捲起袖子自己幹」!這種全局觀念與霸氣,可以讓工程師在面對新問題時不會因為技術限制而束手無策,而是能夠靈活應對,找到最合適的解決方案。這種能力不僅能夠提升個人的競爭力,也能夠讓他們在職業生涯中保持持續的發展和進步,畢竟,以前已有太多太多的成功案例,一個軟體工程師可以做出一套幾千人團隊都做不出來的爆紅作品。

三、反思職業宏觀,不要只以當技術人感到井蛙式的驕傲

對於那些立志成為大公司「專業螺絲釘」的軟體工程師來說,他們更應該反思自己的職業目標。只變成一個僅僅是完成特定任務、專精特定技術的專家,不僅限制了個人的成長,也容易陷入自滿──雖然屢屢被稱為「神人」,在整個職涯與雇主眼中實際上只是「工具人」,這樣一來,這些天賦就被埋沒了,非常可惜!這些聰明的軟體工程師,就像醫生和律師可以當總統,也應該開始「雜食」,慢慢的培養自己前往職場與商場上更關鍵決策者之地位,讓自己生涯最終可以變成領導人,領導著技術與非技術的所有人。因此,一開始專注技術之餘,還要一直像海綿一樣吸收非技術的智識,包括未來趨勢的全面掌握和靈活運用,而不是自限於某一狹窄領域而沾沾自喜。

總之,雖然我們要時時注意軟體工程的最新分門別類,然而,在軟體工程師行業中奮鬥的我們,反而應該克制自己專精的慾望,保持技能的多樣性和靈活性。只有這樣,他們才能在變化莫測的科技環境中立於不敗之地,成為真正的技術全才,甚至跳脫技術專業,讓自己高人一等的智慧可以造福更多人,而不是終身陷在大公司裡安於當一根可被隨意替換的小小螺絲釘。這樣的宏觀態度、技能組合,才不枉費你走上了這一條以「二十一世紀最棒的工作」著稱的軟體工程師職涯路。


你是搶手的數位人才嗎?104有超多寶藏職缺等你探索⮕

104數發人才專區