这是一份公开报告,只要注明数据来源即可使用其内容。
调查方法
受访者的范围
超过 47,000 人参与了《2021 开发者生态系统调查》。本报告基于 183 个国家/地区的 31,743 位开发者的回复,数据按以下几段中介绍的多个条件进行加权。
数据清理流程
我们使用了部分回复,排除受访者离开调查前尚未回答其主要编程语言相关问题的情况。我们还应用了一组识别和排除可疑回复的标准。以下是我们检查的一些指标:
- 填写过快的调查。
- 来自相同 IP 地址的调查,以及回复极其相似的调查。根据 Szymkiewicz-Simpson 重叠系数,如果两份回复的相同性超过 75%,我们将保留回答问题较多的回复。
- 答案相互矛盾的调查,例如,“18-20 岁”和“16 年以上的专业经验”。
- 几乎所有多选题都只选择了一个选项的调查。
- 如果同一个电子邮件地址提交了多份调查,我们将保留最完整的那份调查。
减轻回复负担
为了减少调查长度并减轻回复负担,某些部分向受访者随机显示。有七个随机部分,每位受访者仅能看到其中的两个:
- 持续集成、问题跟踪和 VCS
- 测试
- DevOps 和托管
- 静态分析、开源等。
- 教育
- 跨平台和微服务
- 通讯工具
例如,如果受访者选择“测试人员/QA 工程师”或“DevOps 工程师/基础架构开发者”作为他们的工作角色,他们必然会收到一个与其工作角色有关的明确部分,以及一个随机选择的其他部分。
尽管我们采取了多种措施减少受访者需要完成的工作,同时力求涵盖尽可能多的研究主题,但我们发现,受访者平均花在调查上的时间仍然超过了我们合理要求的时间。我们将在明年修改调查结构,以期改善调查体验。
受访者定位
为了邀请潜在受访者参与调查,我们使用了 Twitter 广告、Facebook 广告、Instagram、Quora、VK 和 JetBrains 自己的沟通渠道。我们还在一些用户小组和技术社区渠道发布了链接,并建议受访者与同行分享调查链接。
国家/地区
今年我们改变了定位标准并扩大了地理覆盖范围。我们收集了来自世界各地的回复,受访者分布于 6 个区域,排除了前几年研究中针对的 18 个国家。
我们从 23 个地理实体收集了足够大的样本。这些实体包括 17 个国家,约占全球所有开发者的 70%:阿根廷、白俄罗斯、巴西、加拿大、中国、法国、德国、印度、日本、墨西哥、俄罗斯、韩国、西班牙、土耳其、乌克兰、 英国、美国。其余国家分布在 6 个区域:
- 非洲、中东和中亚
- 上面未列出的欧洲国家
- 东南亚和大洋洲、澳大利亚和新西兰
- 中南美洲
- 东欧、巴尔干半岛和高加索地区
- 北欧和比荷卢联盟
对于每个地理区域(加拿大和日本除外),我们都从外部来源(如广告)收集了至少 300 份回复。在部分地区,我们从一些国家(例如尼泊尔和肯尼亚)收到异常的大量回复。为了确保更具代表性的分布,其中部分回复被排除在分析之外。
本地化
为了尽可能减少对非英语受访者的潜在偏差,调查还以其他 9 种语言提供:中文、法语、德语、日语、韩语、葡萄牙语、俄语、西班牙语和土耳其语。
减小样本偏倚
为了尽量减少偏差,报告数据由来自 Twitter 广告、Facebook 广告、Instagram、Quora、VK 和受访者推荐的回复进行加权处理。我们单独考虑了每个受访者的来源,根据加权程序生成结果。我们进行了三个阶段的加权,以减少全球开发者群体的偏差。
第一加权阶段:23 个区域的专业开发者数量
在第一阶段,我们汇总了在针对不同的国家/地区时收集的回复,然后对这些数据应用了我们对每个国家/地区的专业开发者数量的预估。
我们获取了通过在 23 个区域的各种社交网络上发布的广告参加调查的专业开发者和在职学生的调查数据,以及来自同行推荐的开发者数据。然后,我们按照这 23 个区域的预估专业开发者人数,对这些回复进行加权。这样确保了受访者分布与我们对每个国家的专业开发者人数的预估相对应。
第二加权阶段:在职和失业开发者的比例
在第二阶段,我们将每个国家的学生和失业受访者(通过相同的外部广告活动参与)比例强制为 17%。我们这样做是为了确保与上一年的方法保持一致,因为这是我们唯一可用的数量预估。
因此,我们从外部源中获得了 19,281 份回复,它们按国家和就业状况进行加权。
第三加权阶段:就业状况、编程语言、JetBrains 产品使用
第三个阶段相当复杂,包括通过求解方程组进行的计算。我们利用了这些加权后的 19,281 位受访者。对于每个国家/地区的开发者,除了他们的就业状况外,我们还计算了 30 多种编程语言各自的份额,以及回答“我目前使用 JetBrains 产品”和“我从未听说过 JetBrains 或其任何产品”的受访者比例。这些数字成为方程中的常量。
下一步是再添加其他来源的两个回复组:JetBrains 内部沟通渠道(例如 JetBrains 社交网络帐号和我们的研究小组)和针对特定编程语言用户的社交网络广告活动。这带来了额外 12,462 位受访者,我们对他们进行加权以确保所有这些份额都相同。
求解一个包括 30 多个线性方程和不等式的系统
我们设计了一个包括 30 多个线性方程和不等式的系统,这些方程和不等式描述了以下信息:
- 受访者的加权系数(例如,样本中的 Fiona 代表了法国 180 位软件开发者的平均情况)。
- 他们回复的特定值(Pierre 使用 C++,他是一名全职开发者,之前从未听说过 JetBrains)。
- 在受访者中的必要比率(例如,27% 的开发者在过去 12 个月中使用过 C++,等等)。
为了使用加权系数的最小方差(非常重要!)求解此方程组,我们使用了 Goldfarb 和 Idnani 的对偶方法(1982,1983),这种方法帮助我们为受访者校核了最优的各个权重系数。
挥之不去的偏倚
尽管采取了这些措施,可能仍存在一些偏倚,因为平均而言,JetBrains 用户可能更愿意完成调查。
此外,我们的社区生态系统也在发展,尽管我们进行了加权和处理,仍可能存在一些数据波动。例如,由于我们源数据中的 Kotlin/JVM 偏倚,为 JVM 编译应用程序的 Kotlin 用户的份额在我们的数据中出现增长,但 Kotlin 语言的整体份额没有变化。
未来,我们将继续更新和改进加权方法。敬请期待《2022 开发者生态系统调查》!
感谢您的参与!
我们真诚地希望您能发现我们的报告有用。与您的朋友和同事分享这份报告。
加入 JetBrains Tech Insights Lab
如果您有任何疑问或建议,请发送电子邮件至 surveys@jetbrains.com。