編程語言有很多,但并非每一種的需求或工資都相同。人工智能和機器學習走熱,讓 Python 從眾多編程語言中脫穎而出。本文將綜合各種信源,比較不同編程語言在美國市場的相關薪資水平、人氣和前景,為你提供一些參考。大量統(tǒng)計數(shù)據(jù)襲來,你準備好了嗎?
有這樣一個問題,使用空格和使用 Tab 的程序員誰掙得更多?
你別說,還真有人做了統(tǒng)計:
圖1:根據(jù) 2017 年 Developer Survey 調查 12,426 名全職開發(fā)人員的結果,使用空格(紅線)的人薪資比使用 Tab 的更多。來源:stackoverflow.blog
由上圖可知,使用空格的開發(fā)人員,工資中位數(shù)為 59,140 美元,而使用Tab的開發(fā)人員的工資中位數(shù)為 43,750 美元。
使用空格的程序員比使用 Tab 的掙更多!
上面這個調查 Developer Survey [1]是面向全球進行的,而且不同的國家之間開發(fā)人員對空格和 Tab 的偏好差距并沒那么大——實際上,根據(jù)這份調查,不同國家和地區(qū)的程序員使用兩者的情況差不太多。
圖2:不同國家和地區(qū)開發(fā)人員對空格、Tab 的偏好差距并不太大。2017 年 Developer Survey 調查了 12,426 名全職開發(fā)人員,來自美國、印度、英國、德國、加拿大和其他地區(qū)。紅條、綠條和藍條分別表示更愛用空格、Tab 和兩者差不多。來源:stackoverflow.blog
那么,收入之間的差距可能來自于這些開發(fā)人員所使用的編程語言,比如說,移動端開發(fā)人員更喜歡使用 Tab,而 DevOps 開發(fā)人員更常使用空格。
于是,Developer Survey 調查又統(tǒng)計了開發(fā)人員的工作種類(比如是前端開發(fā)還是圖形設計)和他們使用的語言,薪資情況如下:
圖3:使用 Tab 的開發(fā)人員的薪資中位水平。來源:stackoverflow.blog
這是個有趣的結果,但并不是決定性的。但是,有一個不可否認的事實——編程語言的種類有很多,并非每一種的需求或工資都相同。本文將綜合各種信源,比較與不同編程語言在美國市場的相關薪資水平、人氣和前景,為你提供一些參考。
在本文中,你將看到幾種主要編程語言的:
工作機會
Github 流程程度及變化
編程語言介紹(為想要學習編程的讀者準備)
薪資排行 & 工作機會:Python 既有實力亦有潛力
在美國,軟件工作崗位在線招聘數(shù)量從 2007 年到 2012 年增長了 31%,比總體工作崗位增速快了 3 倍。美國勞工統(tǒng)計局估計,軟件開發(fā)人員的工作從 2012 年到 2022 年將以 22% 的增幅繼續(xù)增長。這里有個數(shù)字,2016 年 5 月,軟件應用程序開發(fā)員薪資的中位數(shù)為 100,080 美元。
使用國外招聘網(wǎng)站 Indeed.com 上招聘廣告的數(shù)據(jù),我們可以將編程語言的薪資水平劃分為 9 檔:
基于這個結果,Ruby/Ruby on Rails 看起來會讓你掙得最多,而 Python,C ,iOS 和 JavaScript 也是體面的選擇。如果薪資是你的主要關注點,那么也許 C,PHP 和 SQL 不是最理想的選擇……
平均薪資水平可能會受諸如需求(有多少招聘職位)、供應(有多少開發(fā)人員了解語言)和經(jīng)驗(資深開發(fā)人員自然掙得比初級開發(fā)人員多)等許多因素的影響,我們有必要深入了解這些因素,然后才下定論。
1. 工作需求
根據(jù)你熟悉的編程語言找到工作的可能性有多大?以下是來自 Indeed.com 的工作趨勢:
可以看到,C,SQL,Java 和 JavaScript 在招聘啟事中經(jīng)常被提到,而 C#,C 和 Python 也是表現(xiàn)不錯的語言。
另一方面,如果你的目標是在創(chuàng)業(yè)公司工作,那么可能 Indeed.com 的工作趨勢不是你應該參考的最佳指標。我們找到了 AngelList 網(wǎng)站,這里有更多美國初創(chuàng)公司發(fā)布的職位,來看看基于 AngelList 的軟件開發(fā)人員需要的編程技巧:
再一次地,JavaScript 高居榜首。但是,美國創(chuàng)業(yè)公司似乎更喜歡 Python 和 Java,對這兩者的需求超過了 Ruby(兩年前 Ruby 最受歡迎),PHP,C 或 C#。
2. 供應情況
我們再來看開發(fā)人員這邊,根據(jù)網(wǎng)站 Codementor 的數(shù)據(jù)(Codementor 是一個比較大的程序員交流網(wǎng)站,用戶在注冊時會填寫自己使用的語言,因此數(shù)據(jù)在一定程度上可以反映開發(fā)人員掌握的編程語言):
當然,這個結果并不能準確反映實際市場的情況,但可以作為參考。例如,雖然移動應用業(yè)務已經(jīng)蓬勃發(fā)展了一段時間,但 Objective-C 專家仍然很少。由于 Objective-C 開發(fā)人員供應不足,他們的薪資自然相對更高。
另一方面,PHP 在勞動力中的供應量很大,因此雇主有更多的選擇,在薪資方面議價能力更強。同時,市場對 PHP 開發(fā)人員的需求也不如 Java,SQL 或 JavaScript 那么多。 因此,PHP 開發(fā)人員普遍收入較少。這個情況也體現(xiàn)在了我們文章一開始的那張圖里面(參見圖2)。
JavaScript 是個很特殊的例子。盡管供應量最大,但 JavaScript 開發(fā)人員并不處于薪水層的底線。
3. 薪資范圍
現(xiàn)在,了解每種語言的需求和供應情況,我們再來看看根據(jù)招聘廣告的薪資信息,你能得到的潛在工資。下面的數(shù)據(jù)來自 gooroo.io,根據(jù)每條招聘啟事給出的薪酬范圍取了平均數(shù):
懂 Ruby,C 或 Java 的開發(fā)人員看上去起始工資更高。Python 和 Ruby 開發(fā)人員的薪資潛力最大,這可能意味著好的 Ruby/Python 開發(fā)人員市場缺口相對較大。
看各大語言前景,以及 Github 過去 16 年編程語言遷徙:更多人轉而使用 Python
接下來我們可以看看各種編程語言的前景。
一種編程語言將來的發(fā)展前景如何?首先,這在很大程度上取決于其社區(qū)的發(fā)展,因為新鮮血液/采用率是使語言受歡迎的保障。因此,讓我們來看看人們最感興趣的語言是什么:
圖4:根據(jù)谷歌搜索,2016 年使用 Python 的興趣大增。
其次,Github 的項目數(shù)量能夠從一定程度上體現(xiàn)出語言的流行程度。
其中,星級超過 1000 的項目排行如下:
同時,我們還需要注意——開發(fā)人員或許有過這樣的體驗,在掙扎完成第 N 個艱難晦澀的項目后,心想:“我可以用這種語言做這件事,但為什么不換種語言更加愉快地工作呢?”
分析了 4500 萬 GitHub 用戶、393 種不同的語言以及 10 TB 的源代碼后,Waren Long 在博客 sourcefu8ihs5fyo3 發(fā)表博文,用詳盡的數(shù)據(jù)和科學的方法展現(xiàn)了過去 16 年 Github 用戶編程語言的大變遷(也就是從一種語言換到另一種語言的情況)。
使用 5 種最流行的語言(Java,C,C ,PHP,Ruby)其中一種的開發(fā)人員,最有可能用切換到 Python,平均 24% 的機率。
再來看一個更直觀的圖:
過去 16 年,Python 和 Java 逐漸取代了 C 語言。
篇幅有限,我們這里就直接看結果了。要知道更詳細的信息,可以訪問參考資料 3。
編程語言介紹:Python 在 2014 年成為美國高校入門課程最受歡迎語言
最后,為了想要學習編程語言的讀者,我們簡要介紹一下各種編程語言。
1. 動態(tài)語言(Dynamic Languages)
動態(tài)語言通常更容易讓初學者學習,因為它們靈活而有趣。你可以從頭開始快速構建一個應用程序,需要的代碼數(shù)量較少,并且沒有硬性規(guī)則。由于動態(tài)語言通常是非常高級(high level)的語言,所以你會花更少的時間糾結細節(jié),更多的時間學習編程概念,這也是動態(tài)類型的語言受初學者歡迎的一個原因,初學者一般都會因能夠構建事物和快速看到結果得到反饋而鼓舞。
JavaScript
不要與 Java 混淆了,JavaScript 是主要用于前端開發(fā)的客戶端腳本語言。JavaScript 在所有瀏覽器中都兼容,用于創(chuàng)建交互式 Web 應用程序,通常是通過諸如 jQuery 和前端框架(比如 AngularJS,Ember.js,React 等)的庫來創(chuàng)建。JavaScript 也可以通過 Node.js 平臺用作服務器端語言。過去兩年來,Node.js 開發(fā)社區(qū)已經(jīng)有了很大的發(fā)展,現(xiàn)在你可以在這里找到很多資源。你還可以通過使用諸如 phonegap 這樣的框架,用 JavaScript 構建混合移動應用程序。Facebook 的 React Native 能讓你使用 JavaScript 構建本地移動應用程序。不過,JavaScript 的難度很高,因為它是無類型的語言,因此很難調試。也有靜態(tài)類型的版本,比如 Microsoft的 TypeScript 或 JSX,在 React 上使用。
Ruby
有了 Ruby,開發(fā)人員可以很開心地工作。Ruby 的流行得益于 Ruby on Rails 框架,Ruby 與英語很類似,而 Rails 框架(是全棧 Web 框架)有“開箱即用”的工具,讓開發(fā)工作變得簡單。因此,很多人會建議你首先學習 Ruby。Ruby 主要用于后端開發(fā),一些常用大網(wǎng)站,比如 Airbnb,Shopify,Bloomberg,Hulu,Slideshare 都是使用 Ruby on Rails 構建的。
Python
Python 是另一種強烈推薦初學者學習的語言,Python 也是美國頂尖大學最受歡迎的入門級介紹語言。開發(fā)人員使用 Python 構建桌面應用程序和網(wǎng)絡應用程序,Python 也是數(shù)據(jù)挖掘的好工具。此外,Python 在科學計算,數(shù)據(jù)分析和生物信息學的學術界尤其受歡迎。Google,Dropbox,Pinterest,Instagram,Reddit,BitTorrent,Civilization IV 等都是用 Python 構建的。
不僅如此,Python 從 2014 年起就成為美國頂級高校入門級課程教學語言(Introductory Teaching Language):
下面是部分美國頂級高校計算機相關課程使用編程語言列表:
圖4:美國頂級高校入門級課程使用編程語言的情況。在這里僅列出了部分高校,更完整的表單參見參考資料 4 的網(wǎng)頁。
PHP
PHP 是一種服務器端腳本語言,通常被認為是初學者友好的。要理解 PHP 代碼要做什么比較容易,因此 PHP 很容易學。大多數(shù)網(wǎng)站都是用 PHP 構建的,因為這種語言是專門針對網(wǎng)絡的。Facebook,維基百科,Yahoo!, Tumblr,Wordpress 等都是用 PHP 構建的。
2. 靜態(tài)語言
使用靜態(tài)類型的語言構建的應用程序有更高的可擴展性、穩(wěn)定性和可維護性。靜態(tài)語言在通過類型檢查查找錯誤時一般更嚴格,并且需要更多的代碼來構建一個原型。游戲引擎、移動應用和企業(yè)級后端通常使用靜態(tài)類型的語言構建。
Java
作為通用語言,Java 用于構建 Android 應用程序、桌面應用程序和游戲。Java也常用作企業(yè)級后端開發(fā)的服務器端語言——90% 的財富 500 強公司使用 Java。此外,用于存儲和處理大數(shù)據(jù)的 Hadoop 是基于 Java 的流行框架,Yahoo,F(xiàn)acebook 和 Amazon Web Services 等企業(yè)都在用 Hadoop。
C
C 常用于編程系統(tǒng)軟件,是操作系統(tǒng)的通用語言(lingua franca)。C 幾乎影響了本文中提到的所有編程語言,尤其是 Objective-C 和 C 。所以,如果你知道 C 語言的話,你可能更容易學習其他流行的語言。由于 C 語言需要用更復雜的代碼來執(zhí)行簡單的任務,所以初學者如果把 C 語言作為第一語言往往很難保持動力。但是,從長遠看,C 語言的知識肯定對你程序員的工作有所幫助。
Objective-C
Objective-C 是建立在 C 語言之上的一層,因此是靜態(tài)的。話雖這么說,Objective-C 也可以用于動態(tài)打字。Apple 的 Swift 是一種靜態(tài)語言,與 Objective-C 兼容,但它的靜態(tài)類型使其更有彈性。Swift 受 Python 啟發(fā)而來,旨在為新手輕松編寫和修復 Objective-C 的一些問題。
C
C 是基于 C 語言的一種強大的語言,專為編程系統(tǒng)軟件而設計,但也被用于構建游戲/游戲引擎,桌面應用程序,移動應用程序和網(wǎng)絡應用程序。C 功能強大且速度很快,F(xiàn)acebook 用 C 已經(jīng)開發(fā)出了好幾個高性能、高可靠性的組件。許多軟件都用 C 構建,包括 Adobe Systems,Amazon,Paypal,Chrome 等。與 C 語言類似,C 通常被認為不太好讓初學者自己學習。所以,如果你決定學習 C 作為你的第一個編程語言,建議與人討論或找一個導師。
C#
C# 用于微軟的 .NET 框架,主要在Microsoft Windows 上運行。C# 用于 Web 開發(fā)、游戲開發(fā)和一般 Microsoft 開發(fā)。此外,Xamarin 一直在開發(fā)一個名為 Mono 的開源項目,該項目旨在將 C# 移植到其他平臺,為 Linux 開發(fā)人員帶來更好的開發(fā)工具。最近,你還可以使用 C# 通過 Xamarin 為 iOS 和 Android構 建原生手機應用。
3. 其他
SQL
SQL(“Sequel”)或結構化查詢語言,是用于與數(shù)據(jù)庫通信的查詢語言。雖然 SQL 不能用于構建應用程序,但它用于管理使用關系數(shù)據(jù)庫管理系統(tǒng)(RDMS)的應用程序中的數(shù)據(jù)。
參考資料:
1. https://stackoverflow.blog/2017/06/15/developers-use-spaces-make-money-use-tabs/
2. https://www.codementor.io/codementorteam/beginner-programming-language-job-salary-community-7s26wmbm6
3. https://blog.sourced.tech/post/language_migrations/
4. https://cacm.acm.org/blogs/blog-cacm/176450-python-is-now-the-most-popular-introductory-teaching-language-at-top-u-s-universities/fulltext
目前數(shù)據(jù)君的數(shù)據(jù)圈只能通過我邀請才能進,收費298永久,本來昨天漲到598,許多人找我,所以新平臺未上市先,先298吧