軟體工程師的薪資與熱門技術排名
Stack Overflow 每年都會做一份問卷調查,詢問不同領域的開發人員薪資和使用的技術,這樣的問卷調查工作從2011 年就開始了,報告結果的圖表也越做越好,問卷題目也越來越廣泛,我之前有做過去年報告的影片【哪一種軟體工程師薪水最高?Stack Overflow 年度分析報告大解析】,去年的報告和今年的報告略有不同,有些問題只有去年才有問,有些是今年新增的項目,有興趣的朋友可以參考看看。
這是一張開發人員薪資與年資的分散圖,填寫問卷的開發人員主要來自於歐美國家,所以薪資相較於台灣或其他國家較多,但歐美國家稅賦也重,保險支出高,消費水準也比較高,所以單就薪水的數字來做比較會不太客觀,但如果是比較開發人員在圖表上的相對位置,和其他技術的薪資排名,就有比較的意義,因為這可以看作就業市場中,資方願意給開給工程師價碼的高低,所以我會以薪資高低和年資的相對位置來討論這份報告,而不是的以薪水的數字來討論,最後我會聊到一個有趣的程式語言關係表,歡迎一起看到最後。
這張圖表包含了四個資訊,左邊Y 軸是年薪,這是稅前的收入,包含了年終和獎金,下方X 軸則是平均工作年資,中間的小圓圈則是代表每一個開發人員的類型名稱,顏色則是這個類型的開發人員數量,藍色是人數最少的203 人,紅色則是人數最多的18213 人,這份問卷最多的人數是Full Stack,也就是全端工程師這個角色,另外靠近全端工程師也是紅色的兩個原點,分別是後端工程師與前端工程師,這裡我們可以了解市場的需求,和技術大都集中在這前三名的類型當中,後端工程師使用的程式語言會是像Java, Python 這類的程式語言開發系統,開發過程中會串接資料庫,然後用SQL 語法查詢、新增、修改和刪除資料,最後將開發好的程式部署在Server上提供服務,所以後端工程師除了要會撰寫程式之外,也還需要將測試好的程式碼,透過版本控制軟體,像是Github,將程式碼合併到目前運作的版本,然後部署到Server 上,程式上線後,會有維運系統的團隊負責監控程式的運作,前端工程師則是需要透過HTML、CSS和Javascript 技術製作出精美的網頁,讓使用者有一個舒適的使用者體驗,如果工程師能用後端程式語言開發後台系統,並且能夠用前端技術製作出介面,做出一個能服務使用者的Web 應用系統,那麼我們就會稱之為全端工程師,因為現在提供給使用者服務最直接的方式就是用瀏覽器,也是最常見的應用系統,所以這三類的開發人員人數最多,大多數熱門技術排名也都圍繞Web 應用程式為主,薪資也可以作為整體平均水準的參考。
熱門程度排名 - 程式語言
剛才提到前端和後端工程師,程式語言也有分為前端、後端和全端,這份名單是今年程式語言的熱門排名,和去年的排名比較略有不同,但第一名仍然是Javascript ,這個原本只能在瀏覽器上執行的程式語言,在Node.js 的出現大大的幫助到熟悉JavaScript 的前端工程師,因為他們只要學習一種程式語言,就能夠在前端和後端兩邊開發系統,因為這個原因,Stack Overflow 在報告開頭就提到Javascript 已經連續十年佔據了第一名的位置,主要還是因為它能夠同時跨兩端,又是所有瀏覽器都支援的程式語言,所以成為了大部分開發人員都會使用的程式語言,第三名是操作資料庫的程式語言SQL,第四名Python 和第六名Java 是我們所熟知的後端程式語言,在開發過程中,使用Python 或Java 撰寫商業邏輯,串接資料庫,然後用SQL 來存取資料庫中的資料,最後再將資料丟給前端,展示給使用者閱覽,是後端工程師常見的工作內容。第五名的TypeScript 則讓Javascript 變得更好,Typescript 優化了JavaScript 弱型別的缺點,改為強型別,避免在類型的轉換上發生問題。
TIOBE 程式語言排名
說到程式語言的排名,最常拿出來參考的是TIOBE 程式語言排名,和Stack Overflow 問卷統計的方式不同,他的排名方式主要是依據各大搜尋引擎的數據,所計算出來的排名,他們的官網有提供他們定義排名的方法,有興趣的朋友可以到官網連結中參考,目前最新的排名,第一名是Python,官方排名的網站上是這樣敘述Python 的,現在已經很難找到Python 沒有被廣泛使用的領域,雖然這兩份的排名不同,但你可以看到前幾名中有幾個重複的程式語言,像是Javascript, SQL, Java, C 這些都是我們所熟知程式語言。
熱門程度排名 - 資料庫
剛才提到最多開發人員的,全端和後端工程師,他們除了要會程式語言以外也要會操作資料庫,這份排名就是資料庫的熱門排名,第一名是MySQL,第二名是PostgreSQL,這兩個都是使用人數最多的關聯式資料庫,這些關聯式資料庫都可以用SQL 搜尋資料,以及新增、修改、刪除資料,雖然不同的資料庫有些函式會稍有不同,但大致上來說SQL語法是一樣的,像是用SELECT 關鍵字搜尋資料,UPDATE 關鍵字更新資料,如果工程師要轉換資料庫工作,也只需要稍加查詢語法的差異就可以了,所以一般來說後端工程師至少會需要熟練一個程式語言和SQL,還有對資料庫設計的知識。
熱門程度排名 - Web Framework
不管是前端或後端,工程師都需要使用程式語言,快速的開發出一個穩定和安全的系統,這個時候我們就需要搭配framework 來幫助我們,framework 是一個框架,它已經幫我們寫好架構,將重要的功能模組化,但我們仍然可以客製化去調整細節,所以不管是前端或後端的開發人員,都需要熟練一個或數個framework,這份排名就是web framework 和web 技術的熱門程度排名,第一名Node.js 剛才有提到,Node.js 就是一個能執行 JavaScript 的環境,負責解析和執行 JavaScript,讓原本只能在瀏覽器上運作的程式語言,也能和Python、Java 這些後端程式語言一樣,在後台Server上運作,第二名是React.js,官網是這樣介紹自己的,React 是用來實作使用者介面的 JavaScript 函式庫,這行字簡潔明瞭的說明他的用途,這個開發前端介面的工具,是目前最熱門的前端技術,這個排行的前六名都和javascript 有關,所以我們可以從前面的程式語言熱門排名,看到現在web framework 的排名發現,目前開發web 應用程式的技術主要是用javascript 作為程式語言,搭配Node.js 和Express 開發後端系統,再使用React.js或是Angular, Vue.js, jQuery 開發前端介面,如果你想要朝全端工程師發展,或許這樣的資訊可以作為你發展的參考。
程式語言薪資排名
雖然現在開發Web 應用程式都是Javascript 的天下,但是仍然有許多framework 支援不同的程式語言,像是Python 的Django和Flask,PHP 的Laravel,還有Ruby on Rails,這裡我想特別提一下Ruby on Rails,它是使用Ruby 程式語言開發的web framework,熱門排名不算前面,但是我們來看一下薪資排名,Ruby on Rails 排在第二名,遠高於剛才介紹過的的React.js 和Node.js,我們來看另一張薪資排名,這是程式語言的薪資排名,Ruby 排名第五,它是在前20 名的熱門程式語言排名中,薪資最高的程式語言,相比之下,剛才第一名的Javascript還有第二名的HTML/ CSS, 薪資都排在了後面倒數的名次,所以我們看一些程式語言或技術雖然熱門,但也因為會的人比較多,在市場上的薪資相對也不太具有競爭力,反而是熱門程度沒那麼高,或是使用在特定領域的程式語言,薪資水準更高一點。
薪資與年資分散圖 - 企業開發人員
剛才我們看過人數最多的後端和前端的技術與薪資排名,我現在往右邊移動,往年資較高的區域看一下,這裡有一個開發人員類型的人數僅次於前端工程師,桌機或是企業系統開發人員,這個角色和資料庫管理員、系統管理員、PM,是組成企業IT 部門的重要角色,他們使用的技術大都和剛才提到的差不多,因為在企業內部比較穩定,不管是環境或是開發技術都是,所以企業內部的開發人員流動率也較低,自然而然平均年資也會較為高一些,但薪資水準並沒有因為年資增長而提高。
薪資與年資分散圖 - 資料工程師
我們現在來看一下資料工程師,相比之下,資料工程師與後端工程師年資相同,但薪資水準卻高出許多,資料工程師需要建立大數據平台,和Data Pipeline, data warehouse,他們還需能將資料與web service整合,他們會使用Spark、Kafka和Hadoop 來處理大量數據,剛才我有介紹過程式語言和web framework 的薪資排名,下方排名圖表是除了web framework 以外的框架薪資排行,第一名就是剛才提到的Spark ,Spark 的核心是一個分散式的資料處理引擎,它有處理結構化資料的模組,可以擴充的機器學習程式庫,Spark 速度快,容易使用,支援SQL 和DataFrame,而且它是開放的原始碼,所以透明,更新速度快,薪資排名第二名的Kafka,和第三名的Hadoop 也是資料工程師常用的Framework 之一,資料工程師的薪資高於平均水準,使用的工具和技術在薪資排名也是高於其他framework,是目前人力市場上薪資待遇較高的族群,如果你目前是後端工程師,對資料分析有興趣,可以考慮朝這個方向發展,除了了解剛才提到個framework,還有程式語言Python 或R,在資料分析這部分,剛才提到的熱門程式語言Javascript ,能發揮的空間就比較有限一點,雖然轉職需要花上較多的時間和精力,來點相關的技能樹,但因為後端工程師對於後台架構、資料庫和web 開發有一定程度的了解,相較於其他開發人員,學習的速度會快一點。
薪資與年資分散圖 - DevOps
資料工程師旁邊有一個年資與薪資相近的角色,叫做DevOps,這個名稱是由開發和維運兩個英文字母所組合而成的,顧名思義它就是串連開發與維運之間的渠道。
一個已經上線,開始提供服務的系統,開發週期大概是這樣的,左邊是開發的流程,右邊則是維運的流程,一個已經上線的系統會由維運團隊負責維護與監控,確保系統能夠正常的運作,當發現有需要修改的Bug或效能問題時,就會交由開發人員規劃處理,這個時候除了更新目前現在系統上程式,也會加入PM 從使用者蒐集到的需求,然後開發人員就會開始寫code,build 程式和測試程式,確認沒問題後就release ,deploy 新的程式碼到server 上,維運團隊會繼續維持系統正常運作。
看似完整的流程,但是仍有看不見的風險,從test, release到deploy 這一段上線前的步驟,常會隱藏許多錯誤,造成上線後維運的問題,像是在外掛程式版本衝突的問題,但是在Jenkins 這樣的系統幫助下,提供持續整合(CI)的自動化流程,能夠快速安全的更新系統,所以DevOps 工程師會確認系統在部署期間和之後都能正常工作,他們負責發佈程式碼的部署、監控和擴展,DevOps 在兩邊的工作,讓維運和開發雙方資訊都變得透明,也因為資訊變得透明,兩邊的整合度也變得更高,這是一張開發與維運流程中常用的軟體,這張圖的流程縮短了剛才提到的幾個步驟,但整體來說還是一樣的,下方在持續整合(CI)的流程中,就有剛才提到的軟體Jenkins,另外JMeter和JUnit ,則是Java 常見的壓力測試和單元測試工具。
薪資與年資分散圖 - Cloud
薪資水準在資料工程師和DevOps上方的是雲端基礎架構師,我們開發出來的系統,都需要在伺服器上運作,這樣才能提供運算的功能和線上的服務,所以這一類的工程師需要熟悉雲端平台的工具,建置出系統的基礎架構,Amazone AWS, Google Cloud, Microsoft Azure,這三個是目前最大的雲端平台,這三間公司名氣大資源多,提供的服務也比較全面和完整,目前最多人使用的是AWS,佔了受訪者的一半以上,在薪資排名部分,AWS 也是這三間雲端平台薪資最高的,AWS 提供許多服務,像是雲端伺服器 EC2,雲端儲存空間S3,另外還有一個很有名的資料庫服務DynamoDB,在資料庫的薪資排名中佔據第一名的位置,去年的資料庫薪資排名第一名也是DynamoDB,今年的薪資還上漲了許多,DynamoDB 不同於MySQL 這類關聯式資料庫,他是NoSQL 資料庫,它最大的優點就是速度快,Dropbox和ZOOM 都有使用這項服務,AWS 的教學文件完整,網路資源多,也有提供教育訓練和證照,如果你想朝雲端基礎架構師發展,或是想架設自己的線上服務,可以考慮先從AWS 開始學習。任何系統都需要放在穩定又安全的基礎架構之上,但是這個架構又需要保持彈性,隨著系統快速發展而擴建,所以雲端平台的開發人員需要有足夠的知識與經驗,薪資水準也會比一般開發人員來得高。
薪資與年資分散圖 - 區塊鏈 Blockchain
今年的薪資報告中增加了一個開發人員類型,Blockchain 區塊鏈,這類型的開發人員年資較淺,但薪資水準高於人數最多的全端和後端工程師,區塊鏈技術最重要的就是去中心化,這幾年火紅的加密貨幣和NFT 就是基於區塊鏈技術發展出來的,現在這項技術也開始應用在其他非金融相關的領域,像是政府機關、媒體和奢侈品等領域,不過在這份報告中並沒有詢問技術方面的問題,而是問受訪者,你對於區塊鏈、加密貨幣和去中心化贊同的程度如何?從非常支持和贊同,到非常不贊同五個等級,另外有加上一個不確定unsure 的選項,從結果來看,在贊同和不贊同之間,並沒有明顯的趨勢傾向哪一方,分別是非常贊同和贊同總和的32%,以及非常不贊同和不贊同總和的31%,保持中性冷漠看待的也有26%,除了這份報告展現出開發人員對於這項技術的分歧,在加密貨幣市場上也有類似的分歧,一邊是股神巴菲特,他非常不看好比特幣,他認為比特幣不是一種生產性的資產,不會產生任何有形的東西,這與巴菲特價值投資的理念相違背,另一邊則是特斯拉的馬斯克和ARKK 的Cathie Wood ,他們則是相反的對加密貨幣的未來和遠景十分看好,即便現在認同與不認同雙方有所分歧,但不可否認區塊鏈將會是越來越重要的技術,所以Stack Overflow 也開始將區塊鏈放入到他的報告中。
Worked with vs. want to work with
前面我介紹的圖表和薪資,技術的熱門程度排名有關,這份圖表不只是單純的排名,而是在程式語言之間建立了一個有趣的連結,這張圖是詢問受訪者,你過去一年所使用的程式語言,和你明年想要使用的程式語言,這兩個問題幫助我們理解開發人員對於程式語言的期待,讓程式語言之間產生了關聯,透過這張圖我們可以觀察到每一個程式語言,受到其他程式語言的開發者,感興趣和期待的程度,當這個程式語言與其他程式語言產生很多連結,代表這是一個受到不同領域開發人員歡迎的程式語言,也透露出這些開發人員想要轉移的方向,這張圖乍看之下有點複雜,但是當你看懂了之後,就會覺得它很有趣,所以我稍微說明一下要怎麼閱讀這張圖。
當我把滑鼠放在其中一個程式語言上的時候,我們會看到這個程式語言和其他程式語言之間出現了很多連結的線條,這些連結的線條代表了他和其他程式語言之間的關係,當我們點擊這個程式語言之後,它會變成灰色,中間的線條會在圓圈中消失,這是為了讓我們刪除掉不想看的程式語言,方便我們專注在想看的程式語言,我現在點擊掉其他程式語言,只留下最熱門的兩個程式語言Javascript 和Python,用這兩個程式語言來說明圓圈中的線怎麼看,每一個程式語言都有一個代表自己的顏色,Python 是橘紅色,線條的顏色代表了工程師在過去這一年所用的程式語言,所以最右邊這一條連向Javascript 的線,代表的是這一年用Python,但明年想要用Javascript 的人數,線條越粗,代表人數越多,另一條代表Javascript 紫色的線,則是反過來,代表這一年用Javascript,但明年想要用Python 的人,所以我們用顏色來判斷今年使用的是哪一個程式語言,就可以看出,想要使用這個程式語言的工程師,明年想要轉移的方向了,那麼連結程式語言自己本身的線條代表什麼意思呢?就是我用Python,但我明年還想繼續用Python 的意思,這個程式語言的忠誠度高不高就看這條線了,你可以用這條線的粗細程度來比較其他線條看看,就可以知道想跳槽的人多,還是想繼續使用這個程式語言的人多。
我這樣說明,你應該就能夠理解這張圖中線條的意義了,所以一個程式語言和另一個程式語言之間最多只會有兩條線,如果沒有人想使用,就不會產生線條,像是C語言,我現在打開它,你會看到C語言有兩條綠色的線,連結Python 和Javascript,代表使用C語言的工程師,有部分想使用這兩個程式語言,反過來看Python 也有人想使用C語言,但是Javascript 就沒有人想使用C語言,所以C和Javascript 之間只有一條線。
我現在將所有程式語言打開,了解我剛才的說明之後,你就能夠花一點時間去動動你的滑鼠,研究一下每一個程式語言之間的關係,如果你正在使用其中一個程式語言,你也可以看看你的同行有沒有傾向明年使用哪一種程式語言,可以作為你下一個學習目標的參考,在這裡我們可以看到剛才舉例的C語言,剛才我只放Python 和Javascript,現在全部打開後,就會顯得C語言很孤單,除了剛才提到的Python 有人想使用以外,其他程式語言都沒有人想用C語言工作,就連隔壁的好兄弟C++ 都沒有,只有想過去,但沒有想要過來的,相較於Python 就受到許多開發人員的歡迎,是一個很多人想使用的程式語言,就像前面提到過的,現在已經很難找到Python 沒有被廣泛使用的領域。
如果你想要開始學習Python,可以從Code Gym 製作的 免費Python 入門特訓課程 開始。
除了程式語言以外,這份報告也有展示資料庫技術之間的關係,PostgreSQL 和MySQL 是大部分開發人員想使用的資料庫,但是Micosoft SQL Server 則是沒有人想過來使用的資料庫,比剛才提到的C語言還孤單,一條連向它的線都沒有,接著是雲端平台,AWS 是最受歡迎的平台,不過從連向Google Cloud 的線條來看,也有不少人想轉為使用Google Cloud,其他還有Web framework、IDE和其他協同工具,我就不一一說明了,有興趣的朋友可以花一點時間研究一下,相信你一定也可以找到一些有趣的觀點。
這份資訊量充足的調查報告,我快速的整理出部分內容,將它製作成影片,你可以觀看下方Youtube 連結,其中也加上我一些自身的開發經驗,在我觀察和閱讀的過程中,我發現StackOverflow 不斷地改進和加入新的內容,我也嘗試向他們學習,改進我對這份報告影片的製作,如果影片中有不足或需要修正的資訊,還請各個領域的朋友不吝指教,畢盡這份報告範圍涵蓋了所有IT 產業的開發人員與技術,雖然不容易但我還是很高興能製作這段影片,因為我自己也是藉由這份報告,來欣賞不同領域的專業技能,希望這段影片和這篇文章對你有幫助和啟發。
Code Gym 致力於創造實用的高品質線上課程,幫助想要學習程式語言和IT技術的朋友,能透過我的課程,學習知識,發揮熱情,創造出屬於你自己的作品