近日,Stack Overflow《 2020 年开发人员调查》报告出炉,这是 Stack Overflow 开展对开发人员年度调查的第 10 年,可以说是见证软件行业巨变与更迭的十年。
该报告基于对来自全球 186 个国家的 65000 名软件开发人员的调查得出。调查于 2020 年 2 月 5 日至 2 月 28 日进行。
报告亮点:
在全球范围内,使用 Perl,Scala 和 Go 的开发人员薪水最高,中位数约为 $ 75k。有趣的是,Perl 也是最令开发者生畏的语言之一。
技术经理、SRE、DevOps 专家和数据工程师往往会获得较高的薪水。其中技术经理的薪水 9.2 万美元,是所有岗位中收入最高的人群,而学术研究员的薪水为 4.1 万美元,是所有岗位中收入最低的人群。
Rust 连续第 5 年蝉联最受喜爱的技术榜首;
JavaScript 连续八年保持其最普遍使用的编程语言榜首,Python 略高于 Java 排名第四。
35 岁以下的开发者占比 72.1%,超过 54% 的开发人员在 16 岁之前写出了他们的第一行代码。
超过 75% 的开发人员至少偶尔加班,每个季度加班一到两天。25% 的人每周加班 1-2 天或更多,仅有 10.% 的开发者从来不加班。
70% 的受访开发人员表示更高的薪水是他们跳槽的最主要原因。
开发者简介
绝大多数受访者表示,他们是专业开发人员,有的人将编程作为工作的一部分,有的是为此类职业做准备的学生。
国家分布
接受调查的开发者来自全球,其中来自美国(19.49%)、印度(13.12%)、英国(6.09%)、德国(6.08%)的开发人员居多,来自中国的开发人员占比 0.57%;
开发者角色
开发人员类型
受访者中,占比前五的为后端开发人员、全栈开发人员、和前端开发人员,桌面或企业应用程序开发人员,移动开发人员,分别占比为 55.2%、54.9;37.1%,23.9%,19.2% 。
热爱编程
很多开发人员在工作之外编写代码,约 78% 的受访者表示,他们将编程作为爱好 / 兴趣。
经 验
开发经验
参与该调查的所有受访者中,拥有 5-9 年开发经验的开发人员占比最高,为 30%,其次是拥有 10-14 年开发经验的开发人员,占比为 20.1%,编程经验少于 5 年的开发人员占比 17%。
在专业开发人员中,拥有 5-9 年开发经验的开发人员占比最高,为 29.2%,其次是拥有 10-14 年开发经验的开发人员,占比为 22.7%,编程经验少于 5 年的开发人员占比 10.5%。
多年专业编程经验
65% 的受访者表示,从事专业编程的时间不到 10 年,其中少于 5 年的占比 39.6%,5-9 年的占比为 26.8%。此外,编程经验在 10-14 年的占比 14.7%,15-19 年的占比 7.6%。
按开发人员类型划分的专业编程经验年限
技术主管和工程经理往往拥有最专业的编码经验,高级主管 / 副总裁级别的开发人员平均拥有 16.5 年开发经验。
在各个参与者角色中,最有经验的开发人员往往是系统管理员、数据库管理员和创建桌面和嵌入式应用程序的开发人员,分别拥有 13.8 年、10.8 年和 10.8 年开发经验。
web 开发人员、学术研究人员和数据科学家的编程经验比较少,原因可能与教授 web 开发的编程训练营的激增,以及从学术界进入该领域的数据科学家的数量有关。
编写第一行代码
在所有的受访者中,超过 54% 的人在 16 岁之前写出了他们的第一行代码,在 20 多岁时编写第一行代码的人占了 13%。
按国家来看,巴西和印度等国的受访者比波兰和德国等国的开发者晚了两年才开始编写代码,波兰和德国等国的开发者平均从 15 岁开始编写代码。
按性别来看,男性开发者开始编程的时间比较早,他们最早在 15 岁是写出了第一行代码,而女性开发者则要晚 2 年,在 17 岁时开始写代码。
教育
受教育程度
在所有受访者中,约有 75%的人完成了至少相当于学士学位或更高学位的课程,其中,获得学士学位的开发人员占比 46.2%,有 22.8% 的受访开发人员获得了硕士学位。
在专业开发人员中,获得高学历的比重增加,有近一半的人获得了学士学位,获得硕士学位的开发人员占比 25.5%。
本科专业背景
在具有大学本科背景且具备编程经验的受访者中,62%的人拥有计算机科学、计算机工程或软件工程学位,有另一个工程领域学位的人占比不到 10%。
很有意思的是,还有不少受访者拥有与商务相关的学位或人文,社会科学或美术研究领域的学位,分别占比 2.7%、1.8% 和 1.4%。
在专业开发人员中,拥有计算机科学,计算机工程或软件工程学位占比 62.6%,有另一个工程领域学位的人占比 9.3%。
正规教育的重要性
在所有受访者中,约 85%的专业开发人员认为正规教育至少在某种程度上很重要,其中,认为其相当重要的占比 26%,有 9.8 的人认为其至关重要。有 16%的人认为其根本不重要或没有必要。
在专业开发人员中,认为其重要的比例与来自所有受访者的反馈结果基本一致。
圈层
种族与民族:
在所有受访者中,具有白色或者欧洲血统的人占比最高,为 68.3%,其次分别是南亚,西班牙裔或拉丁裔,占比为 10.4% 和 7.6%。来自东亚 的人占到了 4.6%。
在专业开发人员中,70.7% 的人具有白色或者欧洲血统,南亚人占比 9.6%,西班牙或者拉丁占到了 7.8%,有 4.2% 的人来自东亚。
性别:
当按国家查看性别认同时,可分析出女性专业开发人员的参与率。
女性开发者占美国开发者的 11.8%,在加拿大,这一比例为 11%,在英国,也有近 11% 的女性开发者。在德国,巴西和波兰等国家,女性开发者的参与率比较低。
在所有受访者中和专业开发人员中,男性开发者的比例均高于女性开发者,比例超过 91%。
开发人员的角色和性别:
基本上,在所有类别的开发人员中,男性的比例均远远大于女性。担任数据科学家或学术研究人员的开发人员中,男性是女性 10 倍,担任系统管理员或 DevOps 专家的开发人员中,男性的比例更高,是女性的 25-30 倍。
女性开发人员通常担任前端、设计师,数据科学家、数据分析师,测试开发人员,科学家和教育工作者的岗位。
经验与性别
如果以性别的维度分析与开发经验年限之间的关系,可以看出一些男性和女性开发人员间的差异,拥有 5-9 年开发经验的男性开发人员占比 29.2%,而女性占比 34.7%;有 15.4% 的男性开发人员编程经验少于 5 年,而女性这一比例为 25.2%;开发经验在 10-14 年的男性占比 20.5%,女性占 18.1%。
值得注意的是,数据还表明,女性离开高科技职位的比例要高于男性。在拥有 34 年 -50 年以上开发经验的受访者中,女性的开发者数量一直低于男性。
心理 / 身体健康状况:
在受访者中,将近 15%的人表示自己患有某种类型的焦虑、情绪或情绪障碍。有 2%的受访者表示自己存在自闭症等心理问题。
有近 2% 的受访者有失明 / 难以看清难以听清 / 行走困难、无法打字等身体方面的疾病。
年龄
在所有受访者中,35 岁以下的人占比 72.1%,其中 25-29 岁的人占比最高,为 26.5%,20-24 岁的开发者次之,占比为 20.3%。
在专业开发者中,35 岁以下的开发者占比 69.2%,其中,其中 25-29 岁的人占比最高,为 29.5%,30-34 岁的开发者次之,占比为 21.9%,20-24 岁的开发者占比 16.6%。
不同国家开发人员的年龄和经验
美国、英国、加拿大、荷兰、法国等国家的开发人员年龄普遍偏大,平均年龄大于 30 岁。
上述北美、欧洲国家的开发人员在编程经验上也更丰富,平均编程经验在 13 年以上。此外,澳大利亚开发者的平均编程年限最高,为 16.9 年。
技 术
最普遍使用的技术
编程,脚本和标记语言类
毫无意外,JavaScript 连续八年保持其最普遍使用的编程语言榜首。Python 略高于 Java 排名第四。此外,TypeScript 在常用性方面高于 C,Ruby 在 2017 年曾一度跻身该榜单的前十名,但如今有所下降,被 Go 和 Kotlin 等超越。
Web 框架类
如果专注于 Web 框架,我们可以看到 jQuery 仍然是普遍使用的,但它的受欢迎程度正在逐年下降,按照这个情况,未来可能会被 React.js 和 Angular 超过。
其他框架,库和工具
根据结果,Node.js 连续两年位居榜首,超过半数的受访者选择了它。今年,一些数据科学和机器学习方面的技术明显引起了开发者的注意,比如 Pandas、TensorFlow 等,相较于这二者,Torch/PyTorch 的情况并不是很乐观。
数据库类
这一项的结果基本与前几年类似,MySQL 高居榜首,其次是 PostgreSQL 和 Microsoft SQL Server。值得一提的是可能是 Firebase,今年超过了 Elasticsearch。
平台类
Linux 和 Windows 在最常用的平台上一直保持着前两名的位置,均获得了半数以上的受访者支持。随着云原生技术的盛行,我们也看到了 Docker、Kubernetes 之类的技术正在逐年上升。
最喜欢、最令人生畏和想要学习的
连续五年,Rust 一直是最受喜爱的编程语言。并且支持者甚多。在前不久 Rust 社区发布的年度调查报告中,使用 Rust 最多的用户是程序员 / 软件工程师,其次是系统架构师。而最多应用 Rust 的领域是后端 Web 应用程序。
根据调查结果,43% 的 Rust 项目代码量在 1000-10000 行,代码量超过 10000 行的项目也在逐年增加,从 2016 年的 8.9% 增长到 2017 年的 16%,再到 2018 年的 23%,在这次 2019 年调查报告中已经增长到了 34%。
此外,与去年相比,TypeScript 超越 Python 位居第二。Go 从去年的第 10 位上升到今年的第 5 位。
VBA、Objective C 和 Perl 在最令人生畏的语言中占据头把交椅,使用这些语言的开发人员比例并不低,但对于继续使用这些编程语言并不感兴趣。
如果查看开发人员不使用但想学习的技术,Python 连续第四年位居榜首,JavaScript、Go 和 TypeScript 不相上下,Rust 也有一些提升。
Web 框架类
ASP.NET Core 是最受欢迎的 Web 框架,击败了 React.js 和 Vue.js。参与调查的新秀 Gatsby 已排在第 5 位,受到 60%的受访者喜爱。
尽管使用者不少,但 Angular.js 依旧被认为是最令人生畏的,其次是 Drupal、jQuery。而 Raect.js 是开发者最想要学习的编程语言,并且优势非常明显,其次是 Vue.js 和 Angular。
其他框架,库和工具类
.NET Core 和 Torch / PyTorch 仍然是其他其余框架,库和工具中最受欢迎的工具,其次是 Flutter 和 Pandas;DevOps 工具中的 Chef 和 Puppet 是最令人生畏的工具前两名;Node.js、Tensorflow 是开发者最想要学习的框架。
数据库类
在这个领域,Redis 仍然深受开发者喜爱,其次是 PostgreSQL 和 Elasticsearch。意料之中,IBM DB2 和 Oracle 是最令人生畏的数据库,而 MongoDB 仍然是开发人员最想学习的技术。
平台类
Linux 仍然是最受开发者喜爱的平台,Docker 和 Kubernetes 分别排名第二和第三,后两者也是开发人员最想学习的平台,这表明了云原生技术的兴起。Wordpress 仍然是最令人生畏的,其次是 IBM Cloud 或 Watson。
开发环境和工具
开发人员的主要操作系统
几乎一半的受访者使用 Windows 作为其主要操作系统,MacOS 和 Linux 系统的使用人数接近,分别为 27.5%、26.6%。
协作工具
在调查中,将近 82%的人使用 GitHub 作为协作工具,而超过一半的人使用 Slack。
研究工具
在研究新工具时,超过四分之三的受访者喜欢通过免费试用开始整个过程。通过与认识的开发人员交流也很重要,超过 60%的开发人员会这么做,另也有部分人员会通过 Stack Overflow 社区解决问题。
薪酬较高的技术
在全球范围内,使用 Perl,Scala 和 Go 的受访者薪水最高,中位数约为 $ 75k。有趣的是,Perl 也是最令开发者生畏的语言之一。因此,高昂的薪水可能也是因为该领域的开发人员数量匮乏。
技术生态之间的联系
不同的技术之间可能都存在着某种联系,比如大量 Web 开发技术通过 SQL 连接到微软技术生态中,以及云相关的一些技术通过 Linux 连接到数据科学 / 机器学习的生态中。
学习与解决问题
技术处在不断更新迭代的过程中,技术人同样如此,大多数受访者至少每隔几个月或一年就要学习一次新技术,这反映了创新是如何迅速发生的,并且开发人员正在不断学习以保持技能更新。
当受访者遇到问题时,几乎 90%的人会访问 Stack Overflow 来解决。
工作
就业情况
在所有受访者中,全职开发者占比 70.9%,学生开发者占比 12.2%。而在专业开发者中,全职开发者占比 82.8%,自由开发者和兼职开发者分别占比 9.5% 和 3.1%,也就是说,92%以上的专业开发者的就业状况至少是兼职。
按地域划分的就业情况
美国 78.6% 的开发者为全职开发者,8.9% 的开发者为学生,另外有 6.3% 的开发者为独立承包商、自由开发者。印度 73.1% 的开发者为全职开发者,16% 的开发者为学生,另外有 4.9% 的开发者为独立承包商、自由开发者。英国、德国、加拿大的全职开发者占比均在 70% 以上,印度的学生开发者比例明显更高。
加 班
今年的报告中首次对受访者的加班状况进行了调查,据调查结果显示,26.7% 的受访者每月会有 1-2 天加班时间,但不是每周都会加班。值得一提的是,有 25.5% 的受访者表示会经常加班,每星期都会有 1-2 天甚至更长的时间处于加班状态,仅有 10.9% 的开发者从来不加班。
公司规模
开发者们选择入职的公司规模大小不一,其中 45.7% 的公司为员工不足百人的小型公司,29.3% 的公司为员工千人级以上的大公司。
开发者如何看待他们的工作
从整体上看,开发者对他们的工作还是比较满意的,63.1% 的受访者表示对他们的工作较为满意,8.3% 的受访者则对他们的工作极为不满。
求职状态
57.6% 的受访者表示他们并没有主动寻求跳槽机会,但是也愿意接受新的机会,25.1% 的受访者对于新的工作机会并不感兴趣,也有 17.3% 的受访者在积极寻找工作机会。
哪些人在积极寻求跳槽机会?
如果按职位职能划分数据,则超过 20%的学术研究员、数据科学家或机器学习专家以及数据 / 业务分析师在积极寻找新的工作机会,其中,学术研究员是对其工作满意度最低、最渴望跳槽的人群。
跳槽因素
今年的报告中,我们首次对开发者的跳槽原因进行了探究。在众多跳槽因素中,70% 的受访者表示更高的薪水成为了他们跳槽的最主要原因,想要使用新技术成为仅次于薪水的第二大跳槽原因,其他驱使他们跳槽的因素还包括对新机会的好奇、成长 / 升职空间、更好地平衡工作和生活占比等。
求职时如何了解一家公司
在问到受访者如何了解一家公司时,得到了一些不同的答案。69.6% 的受访者表示他们会通过查看 Glassdoor 和 Blind 等第三方网站上的评论来侧面了解公司。也有不少受访者表示会通过阅读公司资料(包括公司博客和视频)来了解公司。另外也有相当一部分人群会通过个人关系网、朋友或家人来了解公司。
影响开发者选择工作的因素
受访者选择工作时最先考虑的三大因素分别是:
工作中需要用到的技能(51.3%);
办公环境和公司文化(44.5%);
办公时间的灵活性(43.9%);
有趣的是,受访者认为选择工作时最不重要的因素分别时公司的资金状况(11.9%)、将入职的部门或团队(11.8%)以及公司的多样性(6.9%)。
但是,如果按照性别划分,选择工作时各项因素的重要性则有所不同。其中,男性受访者择业时最看重的三大因素与全体受访者调查结果一致,而 48.3% 的女性受访者则认为公司文化是最重要的因素之一,工作时间的灵活性次之。
薪 水
从全球受访者中可以看出,技术经理、SRE、DevOps 专家和数据工程师往往会获得较高的薪水。其中技术经理的薪水 9.2 万美元,是所有岗位中收入最高的人群,而学术研究员的薪水为 4.1 万美元,是所有岗位中收入最低的人群。此外,从报告中可以看出,美国受访者的整体薪资水平要高于全球受访者的薪资水平,美国收入最高的三个岗位分别是技术经理、SRE 和数据科学家。
开发者薪水和经验
从调查结果可以看出,具有更多经验的开发者往往会要求更高的薪水。在相同工作经验的情况下,数据工程师、SRE 和 DevOps 专家的薪水要比其他岗位高得多,而设计师、移动开发者和教育工作者的薪水往往低得多。
开发者使用的语言与薪资和经验的关系
不同开发者使用的编程语言对其年薪也有所影响。对于大多数语言来说,薪水和编程经验之间的关系是线性的。但是,在编程经验相等的情况下,使用 Scala、Ruby 和 Go 语言的开发者获得的薪资要高于其他语言使用者,而这些语言通常都被收入较高的数据科学家们使用。
开发者每周工作时间
在全球范围内,超过 75%的开发人员每周工作时间少于 45 小时。在按照岗位划分时,高级主管、技术经理和产品经理的工作时间往往更长。在按照国家划分时,美国受方者的每周工作时间高于加拿大、发国、印度等国家。
查看报告原文请参见: