哪一種軟體工程師薪水最高?Stack Overflow 年度分析報告大解析
Stack Overflow是一個問答網站,它允許使用者提出問題或回答問題,使用者可以透過提出問題或是回答問題來累積聲望和積分,Stack Overflow 也會根據使用者的貢獻頒發徽章,也因為這樣的管理機制讓許多技術人員樂於回答問題,展現他的專業和熱情,所以一般來說軟體開發人員碰到棘手的問題時,常會在Stack Overflow 上尋求解答,所以有一句話是這樣說的,當你遇到問題,Google 一下,然後 Stack Overflow。
Stack Overflow 每年會做一次開發人員問卷調查,問卷內容包含了開發人員角色背景,使用的技術和工作薪資等問題,最後製作成圖表提供給所有人閱覽,我注意到這份調查報告之後,發現裡面有很多有趣的數據結果,他展現不同面向的觀察,提供我們不同的觀點思考,所以我建議想要學習程式語言的初學者,或是工作多年的資深工程師,都可以進到這個網站觀賞這份有趣的調查報告,我會將網址放在文章下方,我想報告內容一定會有帶給你一些有趣的觀點。
今年有超過 8 萬名軟體開發人員,參加了這次問卷調查,分享了他們在軟體開發過程中的工具,和整體趨勢的回饋,雖然參與問卷調查的國家高達181個,但開發人員主要集中在這10個國家當中,美國就佔了18%,其次是印度12%,然後德國、英國和加拿大等歐美國家,所以這份問卷調查參與者的國家大都是來自歐美國家,台灣只有302人參與這份問卷調查,所以在等一下的薪資水準報表中,是以美國、印度、德國這些國家的薪資水準為主,即便如此,這份報表仍然具有重要的參考價值,我們可以很客觀的了解到,不同的開發人員角色,在相對比較上會有不同的薪資水準,我們可以透過這份圖表看看自己現在所處的位置,和未來可以發展的方向。
這份報告使用程式語言開發的年資,大概落在1到4年之間,佔了31%,其次是5到9年,佔了27%,所以1到9年的開發經驗,大概就佔了58%,這份問卷也問了一個很有趣的問題,你寫的第一行程式碼是在幾歲的時候,大部分的人是在11到17歲之間,我大概也是在這個年齡區間開始寫程式的,比較有趣的是,居然有1%的人是在不到5歲的時候寫下第一行程式碼,我五歲的時候只會堆沙吧,寫程式對當時的我來說實在是太遙遠了 >_<"
這張圖表是所有開發人員的角色分類,大致上可以分成這幾種類型,受訪者可以用多選的方式選擇自己目前的工作角色,我們可以看到大部分集中在前三名的角色,依序是全端工程師、後端工程師和前端工程師,其次是桌機或企業軟體的開發工程師,這裡我們可以了解市場的需求和技術大都集中在前三名的類型當中,後端工程師使用的程式語言會是像Java, Python 這類的程式語言,然後串接資料庫,用SQL 語法新增、修改和刪除資料,最後將開發好的程式部署在Server上,所以這類的工程師大都需要了解一些Linux 的操作指令,和串接資料庫的技能,而前端工程師則是需要透過HTML、CSS和Javascript 技術製作出精美的網頁,讓使用者有一個舒適的使用者體驗,如果工程師能用後端程式語言開發後台系統,並且能夠用前端技術製作出介面,將資料呈現給使用者,或操作和分析資料,那麼我們就會稱之為全端工程師,但這個界線並沒有這麼的明確,所以這是由受訪者,對自己的角色做分類。
在工程師的技能發展過程中,朝向全端工程師或是擁有更多技能的工程師,是自然而然的一件事,因為我們常會需要從已經學會的技術,向外延伸學習還不熟悉的領域,不管是在工作需要或是自身的學習熱情驅使,朝向多樣性的技能發展,是進入這個行業後必然的結果,唯一會限制我們技能發展和工作領域的只有我們自己。
在知道開發人員的角色類型之後,我們就可以來深入了解,這些不同的類型的工程師,薪資水準大概在哪裡,這張圖表上的圓點就是代表一個類型,圓點的顏色則是表示這類型的人數多寡,紅色是超過兩萬人的受訪者,藍色則是五千位以下的受訪者,圖表的X軸是平均工作年資,Y軸則是稅前的薪資酬勞,包含了獎金的部分,我們剛才看到最多人的全端工程師就是在這個位置,薪資平均在5萬8千美元左右,如同我剛才前面說的,這份問卷的主要對象大都是在歐美國家,但我們可以藉由圖表的相對位置大致了解,不同類型的開發人員,薪資與年資的相對關係。
我們接下來看人數排名第二多的是後端工程師,其實他和全端工程師的年資和薪資都非常的接近,年資相距不到半年,我們可以把他們的年資和薪資看作是相同的,但是我們看一下人數排名第三的前端工程師,薪資水準會比後端工程師和全端工程師來得低。
和前端工程師相似的是設計師,但年資12年左右的設計師,薪資水準大約也和前端工程師差不多,而設計師的高年資低薪資有特別被Stack Overflow 報告提出來,雖然前端工程師和設計師的薪水相較於其他類別的工程師低,但還不是最低的,最低的是手機相關的開發人員,像是iOS 和Android APP 這類的軟體。
年資同樣在9到10年區間的類別,除了剛才提到人數最多的前三項,薪資水準最高的就是資料工程師,旁邊還有一個資料科學家和機器學習專家,這類專業的資料分析人員,在相同年資的情況下,能夠取得較高的薪資,除了業界看重資料分析的技術以外,這類開發人員也需要有較為廣泛的知識和技能,他們需要懂得使用Python 程式語言或R 程式語言來分析資料,建置模型,並且能將程式部署在機器學習的雲端伺服器上,類似AWS 所提供的雲端服務,最後還需要將找出來的有用資訊,設計成資料視覺化圖表,提供給使用者理解和操作,這還是在不包括優化演算法和數學等技能的情況下的討論,所以資料分析工程師所需要的技能樹,會比一般軟體系統開發人員要來的更豐富許多,而且近年來相關領域成長速度飛快,工程師學習速度也要跟上才行,所以這類的資料分析工程師,薪資高於相同年資的其他工程師,也是蠻合理的,如果你已經是後端工程師,對資料分析有興趣的朋友,建議可以朝這個方向發展,相較於其他類型的技術人員,進入這個領域會更為容易一些,技能樹的關聯性會高一點。
我們剛才討論的年資,大約都是落在10年左右或以下,我們往右邊移動到平均年資12年左右的類型,這裡有三個類型的角色是組成企業IT 部門的重要工程師,分別是資料庫管理員、系統管理員和企業系統開發人員,其中企業系統開發人員的薪資,會比前面兩個管理員的薪資來得高一點,就我的經驗觀察,這還蠻符合目前的薪資行情,但大致上來看都和剛才提到的全端工程師和後端工程師差不多,也就是說這幾種類型的工程師,薪資差不多就是市場上的一般水準,差別在於在企業IT 部門年資較高,因為在企業內部比較穩定,不管是環境或是系統都是,如果能夠成立具有百人以上的IT 部門,公司規模一般來說都不小,所以企業內部的開發人員流動率也較低,自然而然平均年資也會較為高一些。
前面我有提到Stack Overflow ,從2015年開始就每年做這份問卷,下圖是去年2020 年的薪資圖,我們可以看到剛才提到的全端工程師、後端工程師和前端工程師,在圖表上的相對位置是差不多的,我們再看上圖前年2019年的圖表,也是差不多的相對位置,資料分析師也都是有較高的薪資水準,所以我們可以發現在這幾年,工程師類型的薪資結構是差不多的,影響你工資天花板高度的是你工作的內容,你帶給公司價值的多寡,舉個例子,兩位工程師一樣都是用Python 程式語言,但有人的工作是在分析庫存和銷售資料,進而預測下一季進貨的數量,節省公司成本,有的人是在寫後台程式,維護使用者進銷存系統,加一點功能或調整一下資料庫欄位,但薪資水準就會有一些差異。
不管哪一種工作類型,都需要有程式語言的基礎作為工具,這張圖表是在這8萬3千位受訪者中,所選出的熱門程式語言排名,包括了受訪者目前在工作使用的程式語言,和受訪者想要使用的程式語言,第一名和第二名是Javascript 和HTML/CSS,這三個技能是前端的技術,也就是全端工程師和前端工師都會需要使用的技能,後面的排名都屬於後端的程式語言,第三名的Python 剛才有提過,除了可以開發後台系統以外,在資料分析、機器學習領域也是首選的程式語言,它簡單易學,初學者很容易上手,所以在熱門排行榜上排在第三名。
SQL 是用在查詢和管理資料庫的程式語言,用來搜尋資料和新增、修改、刪除資料庫裡的資料,一般來說,SQL 是後端工程師必備的技能,因為我們開發系統像是內容管理系統、人事管理系統,都需要將資料存在資料庫裡面,我們不可能只提供一個有商業邏輯和漂亮介面,但無法儲存資料的系統,更別說是資料分析相關的工作了,所以SQL 這個程式語言是後端工程師必備的技能之一。
Java 也是後端工程師常用的一種程式語言,適合用在開發大型的軟體專案,目前企業的內部軟體,像是ERP 系統,大都使用Java 程式語言開發和維護,它有點像是一位可靠的老朋友,看起來沒這麼潮,但是當我們要開發大型專案項目時,還是會選擇這位堅實可靠的老朋友作為首選,Java 和JavaScript 不一樣,他們沒有任何關係,因為名字中都有java,所以很容易讓人搞混,Java 是後端程式語言,無法在瀏覽器是執行,而JavaScript 是在瀏覽器上執行的程式語言,過去是無法在後端Server 上運作的,但有Node.js 出現後,JavaScript 的程式碼也可以在後端Server 上執行了,Node.js 就是一個能執行 JavaScript 的環境,它提供和Chrome 瀏覽器一樣的V8 引擎,負責解析和執行 JavaScript,讓原本只能在瀏覽器上運作的程式語言,也能和Python、Java 這些後端程式語言一樣,在後台Server上運作,Node.js 的出現大大的幫助到熟悉JavaScript 的前端工程師,因為他們只要學習一種程式語言,就能夠在前端和後端兩邊開發系統。
雖然JavaScript 優點很多,但缺點也不少,尤其是他的弱型別常會造成開發人員的困擾,程式碼在類型的使用與轉換時容易發生錯誤,而Typescript 的出現,就是為了讓JavaScript能夠變得更好,他彌補了JavaScript 弱型別的缺點,改為強型別,避免在類型的轉換上發生問題,Typescript是由Microsoft 所維護,這讓開發人員更有信心的使用它,這代表它會持續的update,處理bug,不會有像獵人停更的狀況發生。
我到目前介紹的前七名程式語言,如果你能具備前面五項技能的基礎,你就能夠獨立開發出大部分常見的軟體系統,也能夠應徵到不錯的工作,如果你想要進入這一行,但沒有任何基礎,你可以先從其中一項技能開始學起,然後再慢慢擴展、延伸到其他領域,像是你可以先從較為簡單的Python 開始,或是企業公司常用的Java 學起,再延伸到資料庫的技術,學會完整的後端技術,在這裡工商一下我的課程,我分別有開設Python 程式語言、Java 程式語言和資料庫設計,以及資料分析的線上入門課程,如果對這方面有興趣的朋友,可以點選課程連結,或是瀏覽我的課程網頁領取免費課程和電子書。
程式語言的技術有很多,除了這個排行榜上看到的,還有很多基於程式語言發展出來的Framework和套件需要學習,所以Stack Overflow 在去年的問卷上問了一個很有趣的問題,他問受訪者多久學習一次新的程式語言或Framework,每隔幾個月就學一次新技術的人大約有37%,一年一次的也有36%,所以在一年左右就學一項新技術的人大約有將近75%,這是一個蠻高的比例,我們也可以說在學習IT技術的道路上,沒有終點,只能不斷地學習,對於我來說學習新技術是一件很有趣的事,在業界我也常看到許多優秀的工程師在熱情中不斷學習,不是為了客戶,也不是為了公司,而是單純享受在學習中的快樂。
但是這麼多程式語言和Framework,我們該怎麼學習?這份問卷詢問了這8萬多位的受訪者同樣的問題,我們可以透過這個問卷結果,來看看其他開發人員是如何學習程式語言,首先最多人選擇的方法就是線上資源,像是你現在看的youtbe或是部落格教學文章,這類的資源大都是免費的,而且搜尋容易,是最快速方便的學習方式,但缺點就是資訊量很大,內容品質參差不齊,需要使用者自行過濾出有用的資訊,第二種方式是透過學校有系統的授課,學習相關科系的基礎知識,這也是一般本科生常見的學習管道,其次是書籍或是存在實體的多媒體檔案,也就是光碟片,我們買程式語言的書都會附一張光碟片,裡面會有範例程式或簡短的教學示範,大概就是這類的書籍,以上這幾種都是我們常見的學習方式,就算是在十年前也都是這樣學習,但第四種線上課程,就是近幾年慢慢興起的一種方式,他整合了學校系統化教學的優點,也彌補了書籍無法與講師互動的缺點,幫學生整合有用的資源,補充業界常用的技術,這才是線上課程最大的優勢。
我們將剛才學習方式加入年齡來分析,每一條橫列代表了不同的年齡層,從最上層18歲以下,到最下層的65歲以上,然後在每一個年齡中用不同顏色的區塊,來表示不同的學習方式,我們先從人數最多的25歲到34歲來看,藍色的線上資源和紫色的學校課程,大約都是20%,其次是粉紫色16%的書籍和橘色14%的線上課程,比例相近,所以現在透過線上課程學習的人,和看書學習的人是差不多的,在學習方式有顯著不同的是藍色區塊使用線上資源的比率,越年輕佔比就越高,而橘色的線上課程也隨著年齡越低,佔比也就越來越高,從18到24歲開始使用線上課程學習的佔比16%,已經超過了書籍的13%,近年來線上課程平台的普及和線上課程品質的提升,我們學習程式語言的方式,已經不再像過去一樣,需要進入學校學習或是購買書籍畫重點,線上課程有系統性的授課方式,自由的上課時間和地點,會是自學程式語言更好選擇。
Stack Overflow 針對開發人員進行的問卷調查,對於我們來說有很多的啟發,想要開始學習的程式小白,可以透過熱門程式語言排名,以及薪資水準分佈圖,來評估自己可以從哪一種程式語言開始,並且未來可以朝向哪一種開發人員角色發展,這影響了你對未來的時間投資成本,對於已經在業界工作的資深開發人員來說,你也可以了解和你技能相近的開發人員,薪資水準大概在什麼相對位置,也可以決定是否增加自己的技能樹轉換跑道,這份報告從2015 年就開始調查,Stack Overflow 團隊也不斷求新求變,2015 年的圖表,看起來非常精簡,開發人員的角色很少,定義也不明確,2019 年將薪資、開發人員類型和年資的關係做成了精美的圖表,用泡泡的大小表示受訪者的人數,但圖表太過擁擠,還需要加上直線標記這個泡泡指的是哪一個類型,2021年他們將受訪者數量改為顏色區分,並且用暗色主題的背景,讓圖表看起來更為簡潔清楚,我們可以透過Stack Overflow 不斷優化圖表的過程,學習如何設計一個好的資料視覺化圖表,他們遇到的問題,也會是我們會遇到的問題,他們的解決方案,也提供給我們許多很好的解法和啟發。
文章最後,我建議你可以到這個網頁看看,裡面還有很多豐富的資訊,像是這張圖是詢問受訪者,你目前開發時在用的程式語言,以及你明年想要使用的程式語言關係圖,透過這張圖你可以找找看哪一個程式語言的忠誠度最高,如果想要換程式語言,他們最想用的是什麼,我將網址連結放在最下方,有興趣的朋友可以花一點時間研究看看,這篇文章是希望能節省你的時間,快速的整理出報表中的部分內容,其中也加上我一些自身的經驗,如果文章對你有幫助和啟發,請轉發和分享,謝謝!
資料來源:Stack overflow survey 2021
Code Gym 致力於創造實用的高品質線上課程,幫助想要學習程式語言和IT技術的朋友,能透過我的課程,學習知識,發揮熱情,創造出屬於你自己的作品