程式設計師,一個圈外人羨慕、圈內人喊苦的“神奇”職業——高薪、福利好是旁人羨慕的理由,高壓、加班多卻也是他們最常見的寫照。

回想過去一年,程式設計師圈中可謂熱鬧非凡:雷軍一句“為小米汽車而戰”,使得智慧自動駕駛成為行內熱詞;雲原生和全面數字化趨勢下,熟練使用 K8s 幾乎成為了必備技能;元宇宙、Web 3 突然爆火,一度令程式設計師摸不著頭腦;好不容易捱到年底了,一個猝不及防的 Log4j2 漏洞又召喚無數開發者深夜修 Bug……

與此同時,對於業內技術持續迭代、新興趨勢不斷出現的形勢,許多程式設計師也逐漸感到迷茫:“眾多同行之中,我究竟處在什麼位置?”、“面對日新月異的技術工具、平臺、框架和場景,我又該如何抉擇?”

在此,CSDN 重磅釋出《2021-2022 中國開發者現狀調查報告》。本報告囊括了各類開發者圈中的熱點話題,不論是加班與漲薪情況、“大小周”的抉擇,亦或是偏愛或討厭的程式語言、常見學習路徑等程式設計師最為關心的問題,都將在這份報告中一一揭曉謎底,更有位元組跳動移動技術專家、大前端技術中臺部門 ToB 專案技術負責人石延龍對報告結果進行分析。

首先,讓我們一覽本次報告的幾個重要發現:

被圈內稱作“35 歲危機”的 30-40 歲從業者從去年報告中 16% 的佔比提升至 19%——35 歲可能已並不再是程式設計師“魔咒”。

只有不到 10% 的開發者會每天花費 70% 以上的時間寫程式碼,並且大多開發者平均每天只寫 200 行程式碼左右。

近 70% 的國內開發者還是喜歡聚集在一線/新一線城市,並且 77% 的開發者表示,為了高薪,支援/可考慮“大小周”。

今年 Java 開發者人數從去年的 50% 降至 40%,組合語言被 37% 的開發者票選為最討厭程式語言第一名,而 Python 成為最想要學習的程式語言。

96% 的開發者每週都會保證一定的學習時間,其中學習 1-5 小時/周的佔據 42%。另外僅有 4% 的受訪者表示沒有時間去充電學習。

為了尋求更高的職級和更好的待遇,程式設計師普遍會採用三種方式:一是學習熱點技術(75%),二是崗位晉升(67%),三是跳槽(47%)

接下來,就讓我們通過這份報告,縱觀國內開發者的真實現狀吧!

程式設計師畫像篇:程式設計從少年開始,35 歲不再是“魔咒”

隨著近年來國內人工智慧、雲端計算、資料庫等 IT 產業迅猛發展,人才需求不斷上漲,程式設計早已不限於大學課程,部分地區甚至已將其融入高中教育——程式設計從少年開始,以此實現“少年智則國智,少年強則國強”。從資料上來看,這一目標已不遙遠:有 57.23% 的受訪者表示第一次寫下程式碼的時間是在 16-20 歲,即在高中或大學接觸程式設計已十分普遍,在 30 歲之後接觸程式設計的開發者僅佔 0.8%。

圖1 寫第一行程式碼的年齡

技術演進下,近年來“自研”一詞成為國產破局的關鍵,為此無數壯志滿懷的少年在踏入社會時,紛紛選擇了入局 IT:近 5 年選擇從事程式設計的開發者超過 7 成。

圖2 從事程式設計時長

不過,今年開發者圈中的形勢有些不同:

30 歲以下從業者比例從 82%(2019 年)、81%(2020 年),再度下降至 78%;反觀被圈內稱作“35 歲危機”的 30-40 歲從業者卻從去年報告中 16% 的佔比提升至 19%——35 歲可能已並不再是程式設計師“魔咒”。

40 歲以下的女性開發者比例也在上升。結合去年報告,30 歲以下女性從業者佔比達到了12%(去年為 10%),同時在 30-40 歲程式設計師中,女性也佔據了 8%(去年為 6%)。

不變的是,後端開發崗在 40 歲以下程式設計師圈中依舊熱門。40 歲以上從業者中,擔任技術經理的佔比從去年的 11% 提升至 21%,可見隨著年齡的增長,越來越多開發者開始走上了技術管理之路。

圖3 開發者基本特徵

在圈外人眼中,程式設計師的日常應該被“程式設計”佔據,但事實並非如此。工作期間,只有不到 10% 的開發者會每天花費 70% 以上的時間寫程式碼,並且大多開發者平均每天只寫 200 行程式碼左右。

圖4 開發者每天寫程式碼行數

影響程式設計師工作效率的原因中,“缺乏清晰的流程”以 37.9% 比例位列第一,與其不相上下的是 37.8% 開發者認為會嚴重影響工作效率的“分散注意力的工作環境”。

對此,位元組跳動移動技術專家石延龍認為,對知識密集型的研發工作而言,定義清晰的協作流程理應是團隊合作順利、高效產出的最重要因素。他建議,經驗豐富的開發者可在專案管理上增加投入,以此提高整個團隊協作效率;對於流程不暢的團隊管理者,可考慮建設或引入優秀的 DevOps,將流程規範工具化,可以極大優化專案協作;而部分不想走管理的技術同學,也可以考慮做 DevOps 研發以提高團隊效率。

圖5 影響工作效率排行

除了流程不清嚴重影響工作效率,“通勤時間”也令 22.6% 的開發者感到頭疼,而疫情之下衍生出的遠端辦公給了這部分開發者另一個選擇。目前 Google、Facebook(現 Meta)等國外網際網路企業均支援遠端辦公,國內 46% 的受訪者表示自己所在公司也同樣支援。但總體來說,國內開發者遠端辦公的頻率不是很高,很多情況下只是一種應急方案,只有 4% 的開發者表示他們完全遠端。

圖6 開發者對遠端辦公的態度

程式設計師薪酬篇:高薪之下首選一線/新一線城市,可以考慮“大小周”

“高薪”,一直都是程式設計師群體的標籤之一,近幾年其薪資水平更是在逐漸拔高。去年,44.5% 的開發者月薪 8001-17000 元,如今這一資料已增至 49.2%,同時薪資在 17001-30000 元的程式設計師比例也由 16.2% 增至 20.5%。

圖7 2020年開發者月薪分佈情況

圖8 2021年開發者月薪分佈情況

報告資料顯示,過去一年中,超過六成開發者表示工資有所上漲,甚至漲幅在 11% 以上還佔據了 21%。但儘管行業整體薪資水平在逐步提升,依舊有 34% 的開發者表示工資沒有發生任何變化。

圖9 開發者月薪增長情況

在遍地男性的開發者圈中,女性開發者薪資是否會與男性一致?答:有一定差異,但差距不大。在月薪超過 1.7 萬元的區間中,男性開發者佔比為 29%,而女性開發者中也有 20% 的人拿著同樣薪資待遇。甚至在 8 千至 1.7 萬元薪資範圍內,女性開發者的佔比還略高於男性開發者。

圖10 不同性別的開發者月薪佔比

導致薪資水平不同的除了性別,還有開發者所處地域、每週工作時長、受教育程度、所在行業和工齡等重要因素。

所處地域

地域對於薪資水平而言是一個重要影響因素。根據資料顯示,月薪高於 1.7 萬元的開發者中,近三成來自北京——依舊遙遙領先於其他地區(去年該資料為 30%)。其次便是廣東和上海,同等薪資水平下差距不大,分別佔比 18% 和 17%。

圖11 各地區月薪高於1.7萬開發者佔比Top 10

如果聚焦到具體高薪人數佔比,北京和上海也佔據絕對優勢:近半數開發者薪資均在 1.7 萬以上,反觀其它地區該薪資水平僅佔兩成左右。

圖12 月薪高於1.7萬在各地區中人數佔比

或許是北上廣深及其他新一線城市的整體薪資水平遠高於其他地區,也或許是其中匯聚了產學研界較好的資源與機會等,近 70% 的國內開發者還是喜歡聚集在一線/新一線城市。

圖13 開發者工作城市傾向

尤其是北京和廣東,光這兩個省市的開發者佔比就能達到全國總數的 28.1%。另外值得一提的是,2020 年廣東以擁有全國 16% 的開發者位列全國第一,而如今這一寶座已由北京以 14.2% 的佔比拿下。

圖14 開發者地域分佈(省、自治區、直轄市、特別行政區)Top15

每週工作時長

去年,網際網路行業率先掀起一股“反內卷”熱潮,位元組跳動、快手等大廠先後宣佈取消“大小周”,騰訊光子工作室更是推出“強制不加班雙休”的規定,許多程式設計師對此歡呼道:內卷時代終結了。可發薪日的到賬通知卻令部分程式設計師感到“破防”。

報告資料顯示,按照每週 40 小時標準工時工作的程式設計師中,僅有 20% 的人薪資高於 1.7 萬元;而工作時長在 72-84 小時的程式設計師中,收入超過 1.7 萬元的近一半。

圖15 每週不同工作時長開發者薪資分佈

正所謂“魚和熊掌不可兼得”,雖然標準工時下很難拿到高薪,但依舊有三成程式設計師選擇每週只工作 40 小時,他們也很少對工時有所不滿。相比之下,工作時間越長,開發者的不滿意度越高,例如每週工作 72-84 小時的程式設計師中,就有 55% 的人對工時不滿。

圖16 開發者工作時長

圖17 開發者對工作時長滿意度

人各有志,對於以上兩種生活方式,程式設計師也有著各自的見解:有 23% 的開發者表示,為了高報酬寧願“大小周”;但也有 41% 的開發者表示更注重身心舒暢,不想要“大小周”;另外還有 36% 的受訪者表示可以考慮。

圖18 開發者對大小周的態度

受教育程度

從資料上來看,學歷越高,高收入群體的佔比也就相對較高。例如學歷為碩士研究生的開發者中,薪資達到 1.7 萬元以上的就有 55%。

圖19 不同教育背景開發者的薪資分佈情況

除了以上幾點因素,開發者工齡和所在行業對薪資也有所影響:開發者薪資普遍會隨著工齡而增長,如工作 11-15 年的開發者中,薪資在 1.7 萬元以上的佔比超過 60%;金融行業的高收入群體佔比最高,其中 91% 的開發者月薪超過 8 千元。

程式設計師工具篇:Python 最受歡迎,雲 IDE 崛起

在與程式設計師息息相關的程式語言方面,根據資料顯示,使用 Java 的開發者數量正在逐年降低:與去年 50% 的使用者量相比,今年 Java 開發者人數降至 40%——這一點也印證了 TIOBE 程式語言排行榜中 Java 流行度逐漸下降這一現象。

反觀 Python。隨著近年來資料探勘和 AI 等領域蓬勃發展,Python 憑藉其在資料分析、機器學習、Web 開發、測試等多個領域的出色發揮,市場佔比大幅提高:去年 Python 還與 Java 相差 21%,今年已將這一差距縮小至 9.9%。甚至還有 27.3% 的開發者表示,如果有機會,希望能在未來把程式語言遷移到 Python。

圖20 程式語言使用排行(調查項為多選)

在程式設計師最討厭的程式語言中,佔比 37% 的組合語言排名第一,畢竟面向機器的程式設計語言不僅難以理解,對習慣了高階語言的開發者來說也難以程式設計。

圖21 開發者最討厭的語言排行(調查項為多選)

Web 框架方面,Vue.js 依舊穩居第一,但值得注意的是:Vue.js 使用者從去年不到 30% 的佔比已增至 38.6%。可見隨著 Vue 3.0 的普及,程式設計師圈中愈發流行用 Vue.js 進行 Web 開發。

圖22 Web框架使用排行(調查項為多選)

開源吞噬世界,與此同時開源工具正在吞噬開發者。資料顯示,過去一年有 37.9% 的開發者在使用開源技術框架 Node.js,而作為谷歌開源的 TensorFlow 和 Facebook(現 Meta)主力支援的PyTorch,這二者的使用佔比也在緩慢上升。

圖23 技術框架使用排行(調查項為多選)

作為速度快、輕量級且功能強大的跨平臺工具,Visual Studio Code 也深受開發者喜愛,約 39% 的開發者表示會在日常工作中使用它。

圖24 開發環境使用排行(調查項為多選)

雲 IDE 是近幾年程式設計師圈中的新潮流,也是今年報告中新增的一個調查項。對於這一新興平臺,石延龍認為雲 IDE 可能是在 Cloud Native 熱潮下,業內對研發工具上雲的一種追求。尤其是去年 GitHub 正式推出 Codespaces 功能,令許多開發者切實感受到了雲 IDE 能夠帶來的收益:在瀏覽器中即可實現從寫程式碼、編譯、測試、除錯到部署的完整開發體驗,一切執行在雲端,支援多人協作,不受本地資源限制,無限的擴充套件場景等等。

在此趨勢下,許多開發者開始在日常開發中嘗試用雲 IDE 作為補充,其中 43% 的人使用 Visual Studio Online。遺憾的是,也因為雲 IDE 過於“新”,超過六成開發者表示沒用過雲 IDE。

圖25 雲IDE使用情況(調查項為多選)

低程式碼也是近些年的熱詞之一,不過與其話題性相反的是,僅有 3 成左右的開發者表示曾在工作中使用過低程式碼開發平臺:APICloud 最受歡迎,其次是阿里宜搭

針對這一資料,石延龍分析道,目前的低程式碼/無程式碼平臺還有限制,如應用場景少,靈活度低,互動複雜等等。但究其原理便可得知:想要做到低程式碼/無程式碼,需要將資料結構化,將控制流結構化,然後再建設可操作這些資料和控制流的互動邏輯,最終讓使用者通過互動生成自己的控制流,進而控制自己的資料。儘管目前資料和控制流的結構化方法和可結構化的資料和控制流都還有限,但很多人在不斷努力者增加這些選擇。石延龍暢想道:“也許,未來開發者的工作,就是使用人工智慧技術,為擴充套件 NoCode 的場景列舉值而寫 Code,讓所有場景的使用者都 NoCode。”

圖26 低程式碼平臺使用情況(調查項為多選)

疫情之下,遠端協作顯得格外重要,有超過一半的開發者將 GitHub 作為研發協作管理工具,其次是佔比 26.3% 的 GitLab。

然而不論是框架、語言還是工具的選擇,都需要在合適的作業系統中實現。儘管蘋果推出的自研 M1 系列晶片使 Mac 的效能更加強悍,但在國內開發者圈中,Windows 作業系統依舊是的主流:超過 7 成開發者日常使用 Windows 作業系統,Linux 作為服務端開發的主要作業系統,其使用量也達到近 16%,而使用 macOS 的開發者則不足 10%。

圖27 作業系統使用排行

程式設計師“升級”篇:跳槽不治本,技能提升才是王道

為了尋求更高的職級和更好的待遇,程式設計師普遍會採用三種方式:一是學習熱點技術(75%),二是崗位晉升(67%),三是跳槽(47%)。

圖28 開發者提升自己事業的方式

這三種方式中,在外界看來跳槽似乎是 IT 行業中很常見的現象,但如今資料證明事實並非如此:28% 的開發者表示並沒有跳槽經歷,甚至三年至十年才跳槽一次的開發者佔比為 35%。

圖29 開發者跳槽頻率分佈

另外一種“升級”方式是學習熱點技術。工作之外的閒暇時光是許多開發者提升技能的重要時間,因此有 96% 的開發者每週都會保證一定的學習時間,學習 1-5 小時/周的佔據 42%,其次便是每週學習 6-10 小時的開發者人群,佔比 29%。在這之中,僅有 4% 的受訪者表示沒有時間去充電學習。

圖30 開發者學習時長佔比

具體怎麼學?作為網際網路的弄潮兒,程式設計師群體最為常見的學習路徑便是參加線上課程。在汲取新知識面前,57% 的開發者會選擇參加線上學習課程,同時有 48% 的開發者更傾向於通過自學來掌握一個新的程式語言、框架或工具。

圖31 開發者持續學習路徑排名(調查項為多選)

學會解決工作或學習中遇到的問題也是程式設計師必備技能之一。資料顯示,近四成開發者遇到問題後會去百度查詢解決方案,其次還有 36% 的開發者選擇前往 CSDN 尋求幫助。

圖32 遇到問題時的處理方式

然而隨著年齡增長,多數程式設計師都會在自身技術得到充實後,面臨一個艱難的抉擇:堅持技術崗 vs. 轉為管理崗。有人感慨“技術和體力跟不上了,只能做管理”,也有人呼籲“堅持自己的技術才是根本”。面對這一難題,33.8% 的開發者選擇會堅持技術崗直到退休。但也有 51.9% 的開發者想成為一名管理者。

圖33 開發者是否想成為一名管理者

最後,對於這份中國開發者現狀調查報告的解讀就到這裡了。之後我們將陸續揭曉圍繞中國開發者開源、基礎軟體、雲原生這三大主題的調查報告,敬請期待。

本文來自微信公眾號“CSDN”(ID:CSDNnews)