前幾天和一個身在美國的碼農聊天,一時對中美兩國的程式設計師差異產生了興趣,於是就跑去收集整理了國內外近5年的開發者統計資料。這算不上一篇技術文章,但我想,瞭解國外同行的一些潮流或者趨勢,或許對我們有所啟發,畢竟根據以往的經驗,灣區的風也常常吹到國內。
✎ 資料來源包括StackOverflow、CSDN、TIOBE、DB-Engines、Levels、Glassdoor、Michael Page等。
✎ 下述各圖表中出現的0值通常指資料缺失,或資料較小可忽略。
1. 程式語言流行度
程式語言歷史趨勢和2023的最新排名。TIOBE的資料來源是Google、Bing、維基等搜尋引擎,但不包含國內的搜尋引擎,因此主要覆蓋國外開發者,尤其是美國開發者。從趨勢上可以看到,Java下滑明顯,Python快速上升,C#近幾年波動不太大。新興語言中,Rust進入最新榜單的前20。
StackOverflow的統計則是採用調查問卷的形式,通常都有數萬人參與調查,2023達到9萬人,樣本比較大。從近五年的資料來看,JavaScript常年穩居第一,說明存在大量的Web應用開發,這個似乎和國內更側重移動開發不同。Java下滑明顯,Python快速上升,C#波動不大,這和TIOBE的趨勢是吻合的。新興語言中,GO和Rust上升明顯,Scala則在低位徘徊。
CSDN同樣採用調查問卷的形式。Java、Python、C#的趨勢與國外的步調一致。有幾個區別,一個是Typescript(一種JavaScript的超集)在國內的流行度不高;另外一個是新興語言如GO和Rust,佔比還比較低。業餘有精力想學點東西的小夥伴,我覺得可以關注一下這兩個。我記得TiDB的黃東旭也推薦過Rust,國外像近期大火的向量資料庫Pinecone,也用Rust對原來的C++程式碼進行了重寫。
2. 資料庫流行度
DB-Engines的資料來源包括搜尋引擎(Google、Bing)、技術社群(StackOverflow和DBA Stack Exchange)、招聘網站、社交媒體(Twitter)等,由於不包含國內搜尋引擎,因此主要也是覆蓋國外開發者,尤其是美國開發者。從趨勢上可以看到,傳統關係型資料庫三巨頭Oracle、MySQL、SQL Server發揮穩定,基本上符合我們的直觀印象。比較顯眼的是Snowflake,這個和Databricks都屬於正當紅,建議有興趣的小夥伴可以關注一下。
而從StackOverflow近五年的統計看,PostgreSQL在2022年流行度超過了MySQL。這個可能是因為MySQL在2008年被甲骨文公司收購後,它的授權政策引發了一些爭議,導致一些使用者轉向開源的PostgreSQL。和這件事有關的另外一件事是,在MySQL被收購後,MySQL的創始人之一Michael Widenius於2009年建立了MariaDB專案,MariaDB與MySQL相容,同時,使用者可以自由地使用、修改和分發MariaDB。從圖中可以看到MariaDB這幾年的流行度也不低。另外,一些新興的資料庫(偏巨量資料方向),如Cassandra、Snowflake、ClickHouse也佔有1%-3%的比例,國內團隊開發的資料庫TiDB,也在榜中(這部分由於篇幅所限,下圖未列出)。
國內MySQL一枝獨秀,Oracle、SQL Server則是明顯處於下降的趨勢,這也和國內提倡信創自主有關。比較不同的一點是,PostgreSQL在國內的佔比較低。另外,國產資料庫這幾年整體佔比也上升到5%左右。其他像MongoDB和ElasticSearch在國內相對有一定的流行度。
3. WEB框架流行度
Web框架(或者說Web庫)方面,我們先看看國外的趨勢,jQuery佔比下降,React.js佔比上升,位居第一。Vue.js維持在百分之十幾的佔比。
國內開發者則偏愛Vue.js,該框架近三年一直居於榜首。
4. IDE流行度
整體來個,不管是國內還是國外,流行度最高的IDE都是VS CODE。Java開發中常用的IntelliJ在國內外的佔比差不多,而另一個傳統的Java IDE Eclipse在國內外佔比都處於下滑狀態,尤其是國內。PyCharm由於Python語言的流行度上升,其佔比也在上升中。注:StackOverflow 2019 IDE資料缺失,沿用了2018的資料。
5. 年齡分佈
年齡分佈。國內資料來自CSDN,可以看到絕大多數開發者都集中在30歲以下,而40歲以上的開發者僅3%。國外的資料來自StackOverflow,可以直觀看到35歲以上的專業開發者,佔比40%。通過資料我們還可以粗略估計40歲以上的開發者不會少於三分之一。對比可見,國內對程式設計師的年齡歧視(不論是公開的或者是隱性的)仍然是普遍的。
6. 薪資情況
先來看看國內開發者近三年整體的薪資情況(這裡統計的是月薪,定位人民幣元),可以看到近幾年都集中在8-17K,在整體受訪者中佔比均超過了40%。另外,以城市而論,國內2022年的統計中,北京29%開發者月薪超過17K,遙遙領先,說明北京是IT行業最為發達的地區,廣東和上海分別為18%和17%,位居第二第三位。
StackOverflow的薪資報告(這裡統計的是年薪,單位是萬美元)是根據職能來劃分的,我也收集了近五年的資料,整體看薪資波動不大,多數職能是穩中有升的狀況。SRE職位常年位於第一位,這個是Google最早提出來的一個職能型別,可以簡單理解為「懂開發的資深運維」,國內目前開這個職位的公司還比較少。
Levels則基本上是按照開發者的經驗年限來劃分的,其中「Entry-Level Engineer」即初級,通常是0-2年經驗;「Engineer」即中級,通常是2-5年經驗;「Senior Engineer」即高階,通常是5年以上經驗;「Staff Engineer」即主管工程師,通常是10年以上經驗;「Principal Engineer」即首席工程師,這個可能很多地方沒有這種提法,圖裡我就不列出了。
國內的位元組跳動上榜前十,中級開發者給出了32.3萬美元的薪資,這和我接觸到的位元組2-1的薪資水平區別比較大,不過,由於Levels的薪資資料主要是使用者匿名提交,如果一個公司的樣本較少的話,會出現偏差。
巨量資料方向大家比較熟悉的Databricks和Snowflake薪資水平相當可以,Databricks在杭州有辦公室,但我不知道是否招開發,在杭州的小夥伴可以打聽打聽。
在Levels上我們還能看到不同城市開發者薪資水平的差距,灣區以23.4萬美元的年薪中位數(不是平均值)位居全球第一,國內的話,上海、香港、北京、深圳位於亞洲區的前十榜單裡,年薪中位數7-8萬美元。對比就會發現,灣區的薪資水平還是很嚇人的。
7. 最後
♨ 通過統計資料,可以在一定程度上避免個例或者小圈子帶來的認知偏差,幫助我們擁有一個比較準確的圖景。
♨ 直接以美元計價對比國內外的薪資可能存在偏頗,畢竟貨幣的實際購買力並不能用匯率直接換算。
♨ 小夥伴們在關注自己的工資條的同時,也可關注一下業界的新事物、新趨勢。Keep calm and keep yourself updated!