冲击年薪百万前,11大编程语言薪资排行榜你了解吗
编程语言有很多,但并非每一种的需求或工资都相同。人工智能和机器学习走热,让 Python 从众多编程语言中脱颖而出。
本文将综合各种信源,比较不同编程语言在美国市场的相关薪资水平、人气和前景,为你提供一些参考,大量统计数据袭来,你准备好了吗?
有这样一个问题,使用空格和使用 Tab 的程序员谁挣得更多?你别说,还真有人做了统计:
图1:根据 2017 年 Developer Survey 调查 12,426 名全职开发人员
由上图可知,使用空格(红线)的人薪资比使用 Tab 的更多,使用空格的开发人员,工资中位数为 59,140 美元,而使用 Tab 的开发人员的工资中位数为 43,750 美元。
使用空格的程序员比使用 Tab 的挣更多!
上面这个调查 Developer Survey [1]是面向全球进行的,而且不同的国家之间开发人员对空格和 Tab 的偏好差距并没那么大——实际上,根据这份调查,不同国家和地区的程序员使用两者的情况差不太多。
图2:不同国家和地区开发人员对空格、Tab 的偏好差距并不太大
2017 年 Developer Survey 调查了 12,426 名全职开发人员,来自美国、印度、英国、德国、加拿大和其他地区。红条、绿条和蓝条分别表示更爱用空格、Tab 和两者差不多。
那么,收入之间的差距可能来自于这些开发人员所使用的编程语言,比如说,移动端开发人员更喜欢使用 Tab,而 DevOps 开发人员更常使用空格。
于是,Developer Survey 调查又统计了开发人员的工作种类(比如是前端开发还是图形设计)和他们使用的语言,薪资情况如下:
图3:使用 Tab 的开发人员的薪资中位水平
这是个有趣的结果,但并不是决定性的。但是,有一个不可否认的事实——编程语言的种类有很多,并非每一种的需求或工资都相同。
在本文中,你将看到几种主要编程语言的:
工作机会。
Github 流程程度及变化。
编程语言介绍(为想要学习编程的读者准备)。
薪资排行 & 工作机会
在美国,软件工作岗位在线招聘数量从 2007 年到 2012 年增长了 31%,比总体工作岗位增速快了 3 倍。
美国劳工统计局估计,软件开发人员的工作从 2012 年到 2022 年将以 22% 的增幅继续增长。这里有个数字,2016 年 5 月,软件应用程序开发员薪资的中位数为 100,080 美元。
使用国外招聘网站 Indeed.com 上招聘广告的数据,我们可以将编程语言的薪资水平划分为 9 档:
基于这个结果,Ruby/Ruby on Rails 看起来会让你挣得最多,而 Python,C++,iOS 和 JavaScript 也是体面的选择。如果薪资是你的主要关注点,么也许 C,PHP 和 SQL 不是最理想的选择……
平均薪资水平可能会受诸如需求(有多少招聘职位)、供应(有多少开发人员了解语言)和经验(资深开发人员自然挣得比初级开发人员多)等许多因素的影响,我们有必要深入了解这些因素,然后才下定论。
工作需求
根据你熟悉的编程语言找到工作的可能性有多大?以下是来自 Indeed.com 的工作趋势:
可以看到,C,SQL,Java 和 JavaScript 在招聘启事中经常被提到,而 C#,C++ 和 Python 也是表现不错的语言。
另一方面,如果你的目标是在创业公司工作,那么可能 Indeed.com 的工作趋势不是你应该参考的最佳指标。我们找到了 AngelList 网站,这里有更多美国初创公司发布的职位,来看看基于 AngelList 的软件开发人员需要的编程技巧:
再一次地,JavaScript 高居榜首。但是,美国创业公司似乎更喜欢 Python 和 Java,对这两者的需求超过了 Ruby(两年前 Ruby 最受欢迎),PHP,C 或 C#。
供应情况
我们再来看开发人员这边,根据网站 Codementor 的数据(Codementor 是一个比较大的程序员交流网站,用户在注册时会填写自己使用的语言,因此数据在一定程度上可以反映开发人员掌握的编程语言):
当然,这个结果并不能准确反映实际市场的情况,但可以作为参考。例如,虽然移动应用业务已经蓬勃发展了一段时间,但 Objective-C 专家仍然很少。由于 Objective-C 开发人员供应不足,他们的薪资自然相对更高。
另一方面,PHP 在劳动力中的供应量很大,因此雇主有更多的选择,在薪资方面议价能力更强。同时,市场对 PHP 开发人员的需求也不如 Java,SQL 或 JavaScript 那么多。 因此,PHP 开发人员普遍收入较少。这个情况也体现在了我们文章一开始的那张图里面(参见图2)。
JavaScript 是个很特殊的例子。尽管供应量最大,但 JavaScript 开发人员并不处于薪水层的底线。
薪资范围
现在,了解每种语言的需求和供应情况,我们再来看看根据招聘广告的薪资信息,你能得到的潜在工资。下面的数据来自 gooroo.io,根据每条招聘启事给出的薪酬范围取了平均数:
懂 Ruby,C++ 或 Java 的开发人员看上去起始工资更高。Python 和 Ruby 开发人员的薪资潜力最大,这可能意味着好的 Ruby/Python 开发人员市场缺口相对较大。
更多人转而使用 Python
看各大语言前景,以及 Github 过去 16 年编程语言迁徙:更多人转而使用 Python。
接下来,我们可以看看各种编程语言的前景。
一种编程语言将来的发展前景如何?首先,这在很大程度上取决于其社区的发展,因为新鲜血液/采用率是使语言受欢迎的保障。因此,让我们来看看人们最感兴趣的语言是什么:
图4:根据谷歌搜索,2016 年使用 Python 的兴趣大增
其次,Github 的项目数量能够从一定程度上体现出语言的流行程度。
其中,星级超过 1000 的项目排行如下:
同时,我们还需要注意——开发人员或许有过这样的体验,在挣扎完成第 N 个艰难晦涩的项目后,心想:“我可以用这种语言做这件事,但为什么不换种语言更加愉快地工作呢?”
分析了 4500 万 GitHub 用户、393 种不同的语言以及 10 TB 的源代码后,Waren Long 在博客 source{d} 发表博文,用详尽的数据和科学的方法展现了过去 16 年 Github 用户编程语言的大变迁(也就是从一种语言换到另一种语言的情况)。
使用 5 种最流行的语言(Java,C,C ++,PHP,Ruby)其中一种的开发人员,最有可能用切换到 Python,平均有 24% 的机率。
再来看一个更直观的图:
过去 16 年,Python 和 Java 逐渐取代了 C 语言。
篇幅有限,我们这里就直接看结果了。要知道更详细的信息,可以访问参考资料 3。
编程语言介绍
Python 在 2014 年成为美国高校入门课程最受欢迎语言,最后,为了想要学习编程语言的读者,我们简要介绍一下各种编程语言。
动态语言(Dynamic Languages)
动态语言通常更容易让初学者学习,因为它们灵活而有趣。你可以从头开始快速构建一个应用程序,需要的代码数量较少,并且没有硬性规则。
由于动态语言通常是非常高级(high level)的语言,所以你会花更少的时间纠结细节,更多的时间学习编程概念,这也是动态类型的语言受初学者欢迎的一个原因,初学者一般都会因能够构建事物和快速看到结果得到反馈而受到鼓舞。
JavaScript
不要与 Java 混淆了,JavaScript 是主要用于前端开发的客户端脚本语言。JavaScript 在所有浏览器中都兼容,用于创建交互式 Web 应用程序,通常是通过诸如 jQuery 和前端框架(比如 AngularJS,Ember.js,React 等)的库来创建。
JavaScript 也可以通过 Node.js 平台用作服务器端语言。过去两年来,Node.js 开发社区已经有了很大的发展,现在你可以在这里找到很多资源。你还可以通过使用诸如 phonegap 这样的框架,用 JavaScript 构建混合移动应用程序。
Facebook 的 React Native 能让你使用 JavaScript 构建本地移动应用程序。不过,JavaScript 的难度很高,因为它是无类型的语言,因此很难调试。也有静态类型的版本,比如 Microsoft的 TypeScript 或 JSX,在 React 上使用。
Ruby
有了 Ruby,开发人员可以很开心地工作。Ruby 的流行得益于 Ruby on Rails 框架,Ruby 与英语很类似,而 Rails 框架(是全栈 Web 框架)有“开箱即用”的工具,让开发工作变得简单。因此,很多人会建议你首先学习 Ruby。
Ruby 主要用于后端开发,一些常用大网站,比如 Airbnb,Shopify,Bloomberg,Hulu,Slideshare 都是使用 Ruby on Rails 构建的。
Python
Python 是另一种强烈推荐初学者的学习语言,Python 也是美国顶尖大学最受欢迎的入门级介绍语言。开发人员使用 Python 构建桌面应用程序和网络应用程序,Python 也是数据挖掘的好工具。
此外,Python 在科学计算,数据分析和生物信息学的学术界尤其受欢迎。Google,Dropbox,Pinterest,Instagram,Reddit,BitTorrent,Civilization IV 等都是用 Python 构建的。
不仅如此,Python 从 2014 年起就成为美国顶级高校入门级课程教学语言(Introductory Teaching Language):
下面是部分美国顶级高校计算机相关课程使用编程语言列表:
图5:美国顶级高校入门级课程使用编程语言的情况
在这里仅列出了部分高校,更完整的表单参见参考资料 4 的网页。
PHP
PHP 是一种服务器端脚本语言,通常被认为是对初学者友好的。理解 PHP 代码要做什么比较容易,因此 PHP 很容易学。
大多数网站都是用 PHP 构建的,因为这种语言是专门针对网络的。Facebook,维基百科,Yahoo!, Tumblr,Wordpress 等都是用 PHP 构建的。
静态语言
使用静态类型的语言构建的应用程序有更高的可扩展性、稳定性和可维护性。静态语言在通过类型检查查找错误时一般更严格,并且需要更多的代码来构建一个原型。游戏引擎、移动应用和企业级后端通常使用静态类型的语言构建。
Java
作为通用语言,Java 用于构建 Android 应用程序、桌面应用程序和游戏。Java也常用作企业级后端开发的服务器端语言——90% 的财富 500 强公司使用 Java。
此外,用于存储和处理大数据的 Hadoop 是基于 Java 的流行框架,Yahoo,Facebook 和 Amazon Web Services 等企业都在用 Hadoop。
C
C 常用于编程系统软件,是操作系统的通用语言(lingua franca)。C 几乎影响了本文中提到的所有编程语言,尤其是 Objective-C 和 C++。所以,如果你知道 C 语言的话,你可能更容易学习其他流行的语言。
由于 C 语言需要用更复杂的代码来执行简单的任务,所以初学者如果把 C 语言作为第一语言往往很难保持动力。但是,从长远看,C 语言的知识肯定对你程序员的工作有所帮助。
Objective-C
Objective-C 是建立在 C 语言之上的一层,因此是静态的。话虽这么说,Objective-C 也可以用于动态打字。
Apple 的 Swift 是一种静态语言,与 Objective-C 兼容,但它的静态类型使其更有弹性。Swift 受 Python 启发而来,旨在为新手轻松编写程序,旨在修复 Objective-C 的一些问题。
C++
C++ 是基于 C 语言的一种强大的语言,专为编程系统软件而设计,但也被用于构建游戏/游戏引擎,桌面应用程序,移动应用程序和网络应用程序。
C++ 功能强大且速度很快,Facebook 用 C++ 已经开发出了好几个高性能、高可靠性的组件。许多软件都用 C++ 构建,包括 Adobe Systems,Amazon,Paypal,Chrome 等。与 C 语言类似,C++ 通常被认为不太好让初学者自己学习。
所以,如果你决定学习 C++ 作为你的第一个编程语言,建议与人讨论或找一个导师。
C#
C# 用于微软的 .NET 框架,主要在Microsoft Windows 上运行。C# 用于 Web 开发、游戏开发和一般 Microsoft 开发。
此外,Xamarin 一直在开发一个名为 Mono 的开源项目,该项目旨在将 C# 移植到其他平台,为 Linux 开发人员带来更好的开发工具。最近,你还可以使用 C# 通过 Xamarin 为 iOS 和 Android 构建原生手机应用。
其他
SQL(“Sequel”)或结构化查询语言,是用于与数据库通信的查询语言。虽然 SQL 不能用于构建应用程序,但它用于管理使用关系数据库管理系统(RDMS)的应用程序中的数据。
数据分析咨询请扫描二维码
《Python数据分析极简入门》 第2节 7 Pandas分组聚合 分组聚合(group by)顾名思义就是分2步: 先分组:根据某列数据的值进行 ...
2024-11-25数据分析需要学习的内容非常广泛,涵盖了从理论知识到实际技能的多个方面。以下是数据分析所需学习的主要内容: 数学和统计学 ...
2024-11-24数据分析师需要具备一系列多方面的技能和能力,以应对复杂的数据分析任务和业务需求。以下是数据分析师所需的主要能力: 统计 ...
2024-11-24数据分析师需要学习的课程内容非常广泛,涵盖了从基础理论到实际应用的多个方面。以下是根据我搜索到的资料整理出的数据分析师需 ...
2024-11-24《Python数据分析极简入门》 第2节 6 Pandas合并连接 在pandas中,有多种方法可以合并和拼接数据。常见的方法包括append()、conc ...
2024-11-24《Python数据分析极简入门》 第2节 5 Pandas数学计算 importpandasaspdd=np.array([[81,&n ...
2024-11-23数据分析涉及多个方面的学习,包括理论知识和实践技能。以下是数据分析需要学习的主要方面: 基础知识: 数据分析的基本概念 ...
2024-11-22数据分析适合在多个单位工作,包括但不限于以下领域: 金融行业:金融行业对数据分析人才的需求非常大,数据分析师可以从事经 ...
2024-11-22数据分析是一种涉及从大量数据中提取有用信息和洞察力的过程。其工作内容主要包括以下几个方面: 数据收集与整理:数据分析师 ...
2024-11-22数据分析师需要掌握多种技能,以确保能够有效地处理和分析数据,并为业务决策提供支持。以下是数据分析师需要掌握的主要技能: ...
2024-11-22数据开发和数据分析是两个密切相关但又有所区别的领域。以下是它们的主要区别: 定义和目标: 数据开发:数据开发涉及数据的 ...
2024-11-22数据架构师是负责设计和管理企业数据架构的关键角色,其职责涵盖了多个方面,包括数据治理、数据模型设计、数据仓库构建、数据安 ...
2024-11-22数据分析师需要具备一系列技能,以确保能够有效地处理、分析和解释数据,从而支持决策制定。以下是数据分析师所需的关键技能: ...
2024-11-22数据分析师需要具备一系列技能,以确保能够有效地处理、分析和解释数据,从而支持决策制定。以下是数据分析师所需的关键技能: ...
2024-11-22数据分析师需要具备一系列的技能和能力,以确保能够有效地处理、分析和解释数据,从而支持业务决策。以下是数据分析师所需的主要 ...
2024-11-22需求持续增长 - 未来数据分析师需求将持续上升,企业对数据驱动决策的依赖加深。 - 预测到2025年,中国将需要高达220万的数据人 ...
2024-11-22《Python数据分析极简入门》 第2节 4 Pandas条件查询 在pandas中,可以使用条件筛选来选择满足特定条件的数据 importpanda ...
2024-11-22数据分析师的工作内容涉及多个方面,主要包括数据的收集、整理、分析和可视化,以支持商业决策和问题解决。以下是数据分析师的一 ...
2024-11-21数据分析师必须掌握的技能可以从多个方面进行归纳和总结。以下是数据分析师需要具备的主要技能: 统计学基础:数据分析师需要 ...
2024-11-21数据分析入门的难易程度因人而异,总体来看,入门并不算特别困难,但需要一定的学习和实践积累。 入门难度:数据分析入门相对 ...
2024-11-21