本报告是 JetBrains 开展的第四次年度开发者生态系统调查的汇总结果。2020 年初接受调查的 19,696 位开发者的反馈帮助我们确定了工具、技术、编程语言和开发领域许多其他激动人心的方面的最新趋势。
是最受欢迎的主要编程语言。
是最常用的整体编程语言。
是开发者开发的最常见应用程序类型。
是最受欢迎的平台。
是开发者计划采用或迁移到的前 3 大语言。
在过去 12 个月中使用的语言榜单中超过 Java。它是研究最多的语言。在过去 12 个月中,30% 的受访者开始或继续学习 Python,高于去年的百分比。
包括任何编程语言的应用,无论是职业还是个人用途
该问题仅向开发桌面系统平台的开发者显示。
移动
移动开发问题仅向为移动设备开发的受访者展示。
您为哪种(哪些)移动操作系统开发应用程序?
原生工具仍是最受欢迎的移动开发解决方案。有三分之二的移动开发者使用它们。此外,一半的移动开发者使用跨平台技术或框架。在这些框架中,React Native 仍然最受青睐,42% 的移动开发者使用它。
您使用哪种(哪些)跨平台移动框架?
这个问题仅向使用跨平台技术或框架的开发者展示。
Flutter 的受欢迎程度在过去一年增加,它的份额上升了 9%。在同一期间,Cordova、Ionic 和 Xamarin 的份额差不多都下降了 10%。
您在目前开发的移动应用中使用以下哪些组件?
这个问题仅向目前开发移动应用的受访者展示。
此部分中的问题向在“您参与哪些类型的活动?”问题中选择“数据分析”、“数据工程”或“机器学习”,或在“不论职位级别,以下哪项最符合您的工作角色?”中选择“数据分析师/数据工程师/数据科学家”的受访者显示。
您可以从他们的回答中发现,其中许多人在工作中都不使用任何大数据工具。
大多数数据分析都不使用任何特定的平台
今年,我们添加了“生活方式”这个新部分。开发者收到了与其生活习惯、信息获取模式和慈善活动有关的问题。受访者可以选择是否完成此部分,最终大约三分之二的人填写了此部分问卷。
一天的开始
大多数开发者都在午前开始工作,并且闹钟可以轻松叫醒他们。
您通常什么时间开始一天的工作?
您早上是否会将闹钟延后?
您每周花在日常工作(或主要活动)上的编程时间有多少小时?
您花在个人编程或者与日常工作或主要活动无关的编外项目上的时间是多少?
开发者对个人数据收集十分担忧。对于信息源,他们使用社区论坛、社交网络和新闻网站。他们中的大多数人都有 GitHub 帐户。大多数开发者都阅读有关个人智能手机的专业资料。一半的受访开发者不相信人工智能。只有 16% 的人持有一些加密货币,65% 的人更喜欢使用笔记本电脑 。
仅有 11% 的受访开发者不关心个人数据收集。但在关心个人数据收集的开发者中,仅有一半采取措施来确保他们的数据保持私密。
活动参与
绝大多数开发者参加会议是为了获取新知识。开发者以相同的频率参加不同类型的活动:会议、聚会、用户组等。本地聚会是最受欢迎的活动类型,35% 的开发者参加过这种类型的活动。
您参加会议的原因是什么?
在 2018 年和 2019 年,您多久参加一次以下各类活动?
您是否参加本地聚会?
大多数开发者都没有宠物,但在有宠物的开发者中,养狗和养猫的人平分秋色。开发者没有区分工作和爱好。事实上,大多数受访者都有相同的爱好,即编程。接近 60% 的开发者在空闲时间练习编程。
最多选择 3 项
慈善捐赠
一半的受访者向慈善组织捐赠。最受欢迎的慈善捐赠动机是渴望让世界和社区变得更好。在参与任何类型慈善活动的人当中,大多数人不定期捐赠并去做志愿者。大多数开发者都关心环境,帮助儿童并与社会不平等斗争。
您是否以任何方式为慈善事业作贡献?
激励您做志愿者、贡献自己的时间和金钱和支持慈善活动的原因是什么?
您参与什么慈善活动?
在您的慈善活动中,哪些领域对您最重要?
最多选择 3 项
团队和公司
贵公司或组织有多少人?
贵公司从事何种开发?
您的项目团队中有多少人?
您在团队中使用什么敏捷软件开发框架?
您是否进行结对编程?
您的团队分布情况如何?
这些问题仅向选择 JavaScript、TypeScript 或 CoffeeScript 作为其三种主要编程语言中首选语言的开发者展示。
TypeScript 的受欢迎程度过去几年一直在稳步增加。2017 年,它被 12% 的开发者积极使用,是 1% 开发者的主要语言,2020 年,这两个数字分别上升到 28% 和 12%。
Angular 主要由 TypeScript 开发者使用(占该语言开发者的 42%),相比之下,只有 17% 的 JavaScript 开发者使用它。
React 仍是最受欢迎的框架。此外,它的份额在过去一年上升了 10%。与此同时,Vue.js 的份额在过去一年则下降了 7%,但它仍占据第三的位置,落后于 Express,但差距不大。
请注意,CoffeeScript 已被排除,因为选择它的受访者人数很少。
只有使用单元测试的受访者回答了这个问题。
CSS 样式表语言是 JavaScript 开发者最青睐的选择,而在 TypeScript 开发者中,最受欢迎的则是 SCSS 方式,所占份额为 59%。
34% 的受访者更喜欢将其项目组织到单存储库 (Monorepo) 中。不过,不同的语言之间存在差异:对于 TypeScript 用户,这个比例是 45%,而对于 JavaScript 用户,这个比例仅为 30%。
超过 34,000 人参与了《2020 开发者生态系统调查》。本报告基于 18 个国家/地区的 19,696 位开发者的回复,并按以下几段中介绍的多个条件进行加权。报告中的每一个图表都基于不少于 300 位受访者的数据进行构建。
减轻回复负担
为了减少调查长度并减轻回复负担,某些部分向受访者随机显示。有六个随机部分,每位受访者仅能看到其中的两个:
1. 持续集成、问题跟踪和 VCS
2. 测试
3. DevOps 和托管
4. 静态分析、开源等。
5. 教育
6. 跨平台和微服务
例如,如果受访者选择“测试人员/QA 工程师”或“DevOps 工程师/基础结构开发者”作为他们的工作角色,他们必然会收到一个与其工作角色有关的明确部分,以及一个随机选择的其他部分。
受访者定位
为了邀请潜在的受访者参与调查,我们利用了 Twitter 广告、Facebook 广告、Instagram、Quora、Vkontakte、Codefund、百度和 JetBrains 自己的沟通渠道。
在广告活动中,我们运用了两个定位波。第一个定位波针对特定的国家/地区,而第二个定位波针对很少使用的编程语言以减小与编程语言相对应的部分中的方差。我们以 Ruby、Scala、Rust、Swift 和 Objective-C 为目标。我们还请求受访者将调查链接共享给同行。
国家/地区
我们从阿根廷、白俄罗斯、巴西、加拿大、中国、法国、德国、印度、日本、墨西哥、波兰、俄罗斯、韩国、西班牙、土耳其、乌克兰、英国和美国收集了足够大的样本。我们将样本视为当前开发者生态系统的代表,因为全球约 70% 的开发者都在这 18 个国家/地区。
为了尽可能减少对非英语受访者的潜在偏差,调查还以其他 8 种语言提供:中文、法语、德语、日语、韩语、葡萄牙语、西班牙语和土耳其语。
减小样本偏倚
为了最大程度减小偏差,本报告基于根据来自 Twitter 广告、Facebook 广告、Instagram、Quora、Vkontakte、Codefund、百度广告和受访者推荐的回复进行加权的数据。
我们单独考虑了每位受访者的来源以根据加权程序生成结果。我们进行了三个阶段的加权,以期获得偏差更小的全球开发者群体概况。
在第一阶段,我们汇总了在针对不同的国家/地区时收集的受访者数据,然后对这些数据应用了我们对每个国家/地区的专业开发者数量的预估。
首先,我们获取了通过在 18 个目标/国家地区的各种社交网络上发布的广告参加调查的专业开发者和在职学生的调查数据,以及来自同行推荐的开发者数据。然后,我们按照这 18 个国家/地区的预估专业开发者人数,对这些回复进行加权。这样确保了受访者分布与我们对每个国家/地区的专业开发者人数的预估相对应。
在第二阶段,我们将每个国家/地区的学生和失业受访者(通过相同的外部广告活动参与)比例强制为 17%。我们这样做是为了确保与上一年的方法保持一致,因为这是我们唯一可用的数量预估。
因此,我们从外部源中获得了 10,116 份回复,它们按国家/地区和就业状况进行加权。
第三个阶段相当复杂,包括通过求解方程组进行的计算。我们利用了这些加权后的 10,116 位受访者。对于每个国家/地区的开发者,除了他们的就业状况外,我们还计算了 30 多种编程语言各自的份额,以及回答“我目前使用 JetBrains 产品”和“我从未听说过 JetBrains 或其任何产品”的受访者比例。这些数字成为方程中的常量。
下一步是再添加其他来源的两个回复组:JetBrains 内部沟通渠道(例如 JetBrains 社交网络帐号和我们的研究小组)和针对特定编程语言用户的社交网络广告活动。这带来了额外 9,580 位受访者,我们对他们进行加权以确保所有这些份额都相同。
我们设计了一个包括 30 多个线性方程和不等式的系统,这些方程和不等式描述了以下信息:
受访者的加权系数(例如,样本中的 Pierre 代表了法国 180 位软件开发者的平均情况)。
他们回复的特定值(Pierre 使用 C++,他是一名全职开发者,之前从未听说过 JetBrains)。
在受访者中的必要比率(例如,27% 的开发者在过去 12 个月中使用过 C++,等等)。
为了使用加权系数的最小方差(非常重要!)求解此方程组,我们使用了 Goldfarb 和 Idnani 的对偶方法(1982,1983),这种方法帮助我们为受访者校核了最优的各个权重系数。
挥之不去的偏倚
尽管采取了这些措施,可能仍存在一些偏倚,因为平均而言,JetBrains 用户可能更愿意完成调查。
此外,我们的社区生态系统也在发展,尽管我们进行了加权和处理,仍可能存在一些数据波动。例如,由于我们源数据中的 Kotlin/JVM 偏倚,为 JVM 编译应用程序的 Kotlin 用户的份额在我们的数据中出现增长,但 Kotlin 语言的整体份额没有变化。
JetBrains全家桶系列新版激活服务
长按小商店二维码查看
如果对你有帮助,还可以在看、留言、转发,这是对作者最大的帮助
点击阅读原文查看更多细分编程语言调查结果