StackOverflow的年度开发者调查是面向全球开发者的规模最大、最全面的调查,每年的调查内容会涵盖开发人员最喜欢的技术以及工作偏好等内容。今年是StackOverflow连续第九年进行开发者调查,吸引了将近9w名开发人员参加。
作为全世界最流行,最顶级的技术问答社区,StackOverflow的开发者调查具有相当的权威性。今年的调查中有不少亮点,还有很多“万万没想到”,比如Rust才是最受喜爱的编程语言,但Python增长最快,已经超过Java在开发者最喜爱的编程语言榜中排名第二;中国的开发者最乐观,他们认为现在的人会比父母辈拥有更好的生活;学术研究工作者的薪酬较低,对工作的满意度也最低,积极寻找新的工作机会主动性也较强。
以下是本次调查报告的一些主要结果:
Rust是最受喜爱的编程语言,Python则是增长最快的。今年Python超过Java在开发者最喜爱的编程语言榜中排名第二。
超过一半的受访者在十六岁时编写了第一行代码,但这种情况因国家和性别而异。
DevOps和SRE专家是薪酬最高、经验最丰富、对工作最满意的人员,并且他们正在寻找寻找面向更底层业务的新工作。
中国的开发者最乐观,他们认为现在的人会比父母辈拥有更好的生活。法国和德国等西欧国家的开发者对未来最悲观。
在考虑阻碍生产力时,不同类型的开发者有不同的挑战。男性认为非开发工作有挑战,而女性受访者更多地认为不良的工作环境会对她们造成阻碍。
一半开发者是全栈开发人员
80%的人编程是爱好
许多开发者是在工作之外编写代码。大约80%的受访者表示他们将编程作为业余爱好。个人其他身份的职责可能减少对编程的参与度:有孩子或其他人需要照顾的开发人员不太可能将编码作为一种爱好,女性受访者也不太可能将自己的代码视为业余爱好。
近一半的开发者编程经验不足10年
大多数开发者的编程经验不到5年,近一半的受访者表示自己的开发经验少于10年。
超一半开发者在16岁时写下了第一行代码
无论是网页制作还是HelloWorld,总体而言有超过一半的受访者在十六岁时编写了第一行代码,但这其中差异很大。与印度和巴西相比,澳大利亚和英国等国家的平均初始编程年龄要早两年。这其中也有性别的差异:女性编写第一行代码的平均年龄要晚于男性。
90%的开发者为男性
总体来看,90%的受访者都是男性。在美国,印度和英国等地区,学生中的女性开发者比例高于专业开发者中的女性比例。
75%的专业开发者年龄小于35岁
调查结果显示,75%的专业开发者年龄小于35岁。
年龄、经历和国家的关系
70%开发者自认为能力高于平均水平
近70%的受访者表示他们的能力高于平均水平,而不到10%的受访者认为他们的能力低于平均水平。
男性比女性更为认可自己的能力。
10年经验的开发者对能力更自信
初级开发人员对自己的能力评估较为保守,认为自己的能力达不到平均水平,而且这种影响在有了10年经验后才会好转。初级开发人员中存在冒名顶替综合症:普遍的自我怀疑,有不安全感以及害怕被欺骗。受访者中,男性比女性群体更加自信。
业余生活
这是StackOverflow连续第二年询问受访者是否有孩子或其他家属要照顾,近40%的受访者表示有,数据比去年增加。
那些表示没有家属要照顾的开发者平均年龄较小,经验较少。超过60%的10年+经验的开发者有子女或其他家属。
开发者在使用什么社交媒体
在开发者群体中,Reddit和YouTube排第一和第二。但是在现实生活中,Facebook是全球最受欢迎的社交媒体,而reddit在全球排名中甚至没进前10。
最受欢迎的编程语言
编程语言、脚本语言和markup语言:
JavaScript连续第7年蝉联最常用的编程语言,但Python的排名再次上升,略微超过Java。Python是当今增长最快的主要编程语言。
Web框架
jQuery是这些Web框架中使用最广泛的。相比起Angular,今年更多的开发人员在使用React.js。
其他框架、库和工具
Node.js是最常用的。越来越多的开发人员在使用.NET而不是.NETCore,深度学习框架中,TensorFlow比Torch/PyTorch更受欢迎。
数据库
MySQL蝉联最常用的数据库第一名。PostgreSQL第二,SQLServer第三。
最喜爱和最想学的语言
Rust连续第四年成为受访者中最受欢迎的编程语言,紧随其后的是Python,这是当今发展最快的主要语言。这意味着,按比例,更多开发人员希望继续使用这些语言而不是其他语言。
VBA和Objective-C是今年最可怕的语言。最可怕的意味着目前使用这些技术的开发人员中有很大一部分表示没有兴趣继续这样做。
React.JS和Vue.JS是开发者最喜爱和最想学的框架。Drupal和jQuery是最可怕的框架。
.NETCore和Torch/PyTorch在各自的生态系统(分别为.NET和Tensorflow)中的使用率都低于其他对标产品,但更受开发人员的喜爱。Chef和Cordova则当选这一类别中最可怕的工具。
Redis连续第三年成为最受欢迎的数据库,这意味着与其他数据库相比,更多开发人员希望继续使用Redis。Couchbase和Oracle是最可怕的数据库,MongoDB连续第三年成为开发者最想使用的数据库。
最受欢迎的开发环境
VisualStudioCode是今年开发者环境工具中占主导地位。开发人员类型和角色在工具选择方面存在差异,但VisualStudioCode是所有类型开发者的首选。为移动应用编写代码的开发人员更有可能选择AndroidStudio和Xcode。Vim是DevOps和SRE开发者的流行选择,数据科学家更有可能在IPython/Jupyter、PyCharm和RStudio环境中工作。
开发者主要操作系统
约一半受访者选择Windows操作系统,剩下的人的选择MacOS和Linux各占一半。
容器使用
当被问及他们如何使用Docker或OpenContainerInitiative等容器技术时,大约一半的受访者表示他们没有使用任何此类技术。那些使用容器的人最常将其用于开发工作。
组织如何使用区块链技术?
我们调查的大多数受访者表示,他们的组织没有使用或实施区块链技术,报告显示区块链最常见用途不在于货币。另外,表示其组织正在使用区块链技术最多的是印度开发人员。
开发者对区块链技术的看法
当被问及他们对区块链技术的基本看法时,我们调查的受访者对其广泛的用途持乐观态度。然而,持乐观态度的人主要集中在年轻、经验不足的开发人员。受访者越有经验,就越有可能表示区块链技术是对资源的不负责任的滥用。
技术之间有什么关系?
就业状况
超过90%的专业开发者至少有兼职工作,全职工作的开发者占比最大,为73.9%,而专业开发者全职工作的占比更大,为84.2%。
就业地理分布
公司类型
行业
软件开发人员在技术领域内外的各种行业中工作。在我们今年列出的行业选项中,更多的专业开发人员表示,他们从事通用软件开发(未另行规定)、IT和金融/银行业务。在咨询、政府和非营利组织等行业工作的开发人员拥有多年的专业编程经验,而从事Web开发或SaaS工作的开发人员整体编程经验的中位年数约为开发者整体编程经验的一半。
公司规模
开发人员在各种规模的公司工作,小型企业到大型企业组织都有。与包括欧洲在内的世界其他地区相比,美国更多的软件开发人员在大公司工作。开发人员越有经验,他们就越有可能在一家大公司工作。平均而言,每增加一年的专业编码经验,组织规模增加30人。
职业价值观
正如我们在前几年发现的那样,开发人员对他们的职业生涯往往比对现在的工作更满意。工程经理和高级工程主管、SRE和DevOps专家对工作的满意度最高。工作满意度最低的开发人员包括学术研究人员、教育工作者、科学家和设计师。
开发者对管理者的信心
工程管理是一门技术学科,它影响开发人员和他们每天所做的工作。幸运的是,超过80%的受访者对他们的管理者了解他们在做什么比较或非常有信心。
开发者需要成为经理赚更多钱吗?
当谈到他们对把工程管理作为职业的看法时,有一半的受访者认为他们不一定需要成为人事管理来继续涨薪。
开发者未来想转向管理层吗?
受访者对自己的职业规划存在分歧,没有单一的回应占主导地位。那些说自己不想成为管理者的开发人员专业编程经验是那些想要成为管理者的开发者的两倍。目前对转向管理层感兴趣的开发人员可能走上这条职业道路,或者有些人会改变他们的想法!
求职状态
只有15%的受访者正在积极寻找工作,但近四分之四的开发人员有兴趣了解新的就业机会。
求职状态地理分布
谁在积极找工作?
在专业开发人员中,那些担任高级工程主管、DevOps专家和SRE的人找工作的积极性最低。在学术界和数据科学家(我们知道经常重叠的类别)工作的开发人员正在找工作的占比最高。
开发者距上一次换工作多久了?
超过一半受访者表示距上一次换工作在两年之内;软件开发者换工作是常态。
面试经历
我们还询问受访者是否曾被要求在面试中解FizzBuzz,近15%的受访者表示有过这种经历。
更新简历状态
当被问及他们最后一次更新简历时,我们的受访者大多表示开始找新工作是动机。那些重新进入劳动市场的人表示,原因包括其他领域的职业变化、从军队退休,以及全职照顾孩子。
最重要的工作因素
总体上来说,选择工作时,语言、框架和其他技术是开发者最优先考虑的因素,其次是办公室环境和企业文化。
开发者远程工作的频率?
大约12%的受访者表示他们是全职工作,比两年前的数字略有增加。全职远程工作的开发人员的专业编程经验平均比从未远程工作的人大60%。每个月少于1次远程办公的开发者占比最大,为43%。
开发者的工作构成
产出最大的挑战
当被问及他们对生产力的最大挑战是什么时,开发人员最常见的回应包括分散注意力的工作环境、会议和与开发无关的工作。性别少数群体受访者不太可能表示负责非开发工作对他们来说是一个问题,而是不良的工作环境。
开源软件的质量
很少有受访者认为OSS(开源软件)比专有或闭源软件差,但是认为OSS通常质量更高和认为两种类型软件质量相当的人占比大致相同。不出所料,为开源做贡献的开发人员更有可能表示OSS质量更高。
你会把代码评审作为工作的一部分吗?
你的公司进行单元测试吗?
工作满意度和单元测试的关联
我们询问受访者他们的组织是否进行开发单元测试,他们绝大多数赞成单元测试,无论目前是否在进行测试。事实上,进行单元测试的公司的开发人员工作满意度也略高。
编程时来点音乐集中精神
网络显示56,643个回复中最常出现的词汇;较大的点表示使用频次更大,较重的连接线表示更常一起使用的词。
当被问及什么音乐类型或艺术家更能帮助他们集中注意力时,受访者的回答包括各种各样的音乐,如古典音乐、电子游戏或电影配乐,比我们知道的更多种类的重金属音乐,以及没有歌词或人声的音乐。还有少部分受访者表示他们更喜欢安静的环境以集中注意力。
不同开发者类型的薪资
工程经理、SRE、DevOps专家和数据科学家/工程师薪水最高。从印度到欧洲再到美国,全球平均收入最高的岗位非常一致。
不同开发者类型的薪水和经验
不同语言的薪酬和经验
出现在该图表中蓝线上方,使用Clojure、Scala、Go、Rust和R语言的开发人员,在相同的经验条件下获得更多报酬。然而,使用蓝线下方语言的开发人员,如PHP、汇编和VBA,即使有多年的经验,报酬也更少。此图表中圆圈的大小表示与其他开发人员相比,使用该语言的开发人员数量。