Go 2021 年度官方开发者调查结果
Alice Merrick
2022年4月19日
非常感谢社区的惊人反应!
我们在 2021 年 10 月 26 日至 11 月 16 日进行了 Go 开发者调查,一共收到了 11,840 份回复—这是我们开展调查的 6 年中参与人数最多的一次!感谢受访者花时间为社区提供 Go 使用体验的见解。
重点
- 大多数答复与往年一致。例如,对 Go 的满意度仍在很高的水平 ,达到92% ,75% 的受访者在工作中使用到了 Go。
- 今年我们随机抽样 了使用 Go VS Code 插件的受访者,这是受访者的一个变化。
- 缺少关键库、语言特性和基础设施是 使用 Go 最普遍的障碍。(注意:这次调查是在 Go 1.18 版本发布之前进行的,泛型是缺失的语言特性中提及最多的)
- 受访者希望 优先改进 调试功能和依赖管理。
- 使用模块时的最大挑战 涉及版本控制,使用私有仓库和多模块工作流。(注意:这次调查是在 Go 1.18 版本发布之前进行的,此版本引入了解决这些问题的工作空间)
- 81% 的受访者 对 Go 项目的前景充满了信心。
我们从谁那里听到的?
我们的使用人口统计数据每年都相当稳定(参见 2020 年结果)。与前几年一致,Go 主要用于科技行业。 70% 的受访者是软件开发者,少数从事 IT 或 DevOps 工作,76% 的受访者表示他们在工作中使用 Go 编程。
2021受访者的统计数据:
- 大多数受访者在大型公司或中小型企业就职,大约四分之一的受访者在初创公司工作。咨询公司和公共机构则要少得多。
- 绝大多数受访者在少于 10 人的团队工作。
- 超过半数 (55%)的受访者每天使用 Go。受访者很少在工作之外使用 Go。
性别认同
我们在调查中询问关于性别认同的问题,因为这能让我们了解调查结果代表的是谁,并为衡量社区包容性增加了一个维度。Go 团队重视多样性和包容性,不仅因为这是正确的策略,而且因为不同的声音对我们做出更好的决策是有价值的。今年我们重新设置了性别认同问题以增进包容性。被确定是女性的比例与往年大致相同(2%)。 随机抽样组 的结果也是如此,这表明结果不限于抽样。
辅助技术
今年我们再一次发现大约 8% 的受访者正在使用某些形式的辅助技术。大多数问题涉及 Go 相关的网站或者在其代码编辑器,他们需要更高对比度的主题和更大的字体;因此我们计划在今年晚些时候据此做一些改变。在为 Go 生态做出贡献的同时,我们应该牢记可访问性的需求。
进一步了解采用Go所面临的挑战
针对那些没有采用 Go 的案例以及原因,今年我们修改了问题。首先,我们询问受访者是否在去年评估过 Go 和其他语言。43% 的受访者表示他们曾经考虑过在没有特定语言的场景下是否采用 Go 或是迁移到 Go。这些评估中 80% 主要是出于商业因素。
我们预计 Go 最普遍的使用场景将是评估 Go 的评估者最常见的用途。 API/RPC 服务是最常见的使用场景,但令人惊讶的是,数据处理是第二常见的场景。
在这些评估者中, 75% 最终选择了 Go。(当然,我们知道几乎所有受访者都反馈使用了 Go, 可能并没有收集到那些评估过但没有采用 Go 的开发者的反馈。)
对于那些评估了 Go 但没有使用的受访者,我们随后询问了哪些问题组织了他们使用 Go,主要的障碍因素。
我们从调查结果中得出的图表证实了之前的发现,即功能缺失以及缺少健壮的生态系统/库是目前采用 Go 最大的顾虑。
我们询问了受访者更多相关细节,发现泛型是最关键性的特性缺失 — 我们预计在 Go 1.18 中引入泛型之后这将不是那么重大的使用障碍。另一个普遍的功能缺失则是有关 Go 的类型系统。我们想知道在作出进一步改变之前,泛型的引入是否可以减少或者解决 Go 类型系统的潜在需求。目前,我们将收集更多相关信息,并且在未来探索不同的方式以满足这些需求,比如通过工具、库或者类型系统的修改。
至于库的缺失问题,添加哪些库才能消除哪些想要采用 Go 的开发者的顾虑,还没有一个明确的共识。这需要进一步的探讨。
那么当受访者没有采用 Go 时,他们使用什么作为替代呢?
Rust、Python 和 Java 是最常见的选择。Rust 和 Go 有互补的功能集,所以 当 Go 不能满足项目需求时 Rust 可能是一个不错的选择。使用 Python 的主要原因是 Go 目前缺失大量的库和基础设施支持,Python 丰富的包生态使得切换到 Go 是有一定困难的。类似地,使用 Java 最常见的原因也是 Go 的特性缺失,或许 1.18 版本泛型的引入这个问题会有所缓解。
Go 的满意度和优先级
让我们看看 Go 可圈可点的地方和可以改进之处。
与去年一致,92% 的受访者表示他们在过去一年对于 Go 的使用或多或少是满意的。
社区的态度每年略有波动。使用 Go 不到 3 个月的开发者往往不认同 Go 对其公司至关重要的说法。但越来越多的受访者是认同此说法的。
优先级
过去几年我们让受访者对特定领域的满意度以及重要性进行评分;我们使用这些信息去确认对他们重要但并不满意的领域。然而,大多数领域在重要性和满意度两个维度仅仅显示出了细小的差异性。
今年我们引入了一个新问题,来探讨在特定领域工作优先级的替代方法。“假设你有 10 个 GopherCoin 可用于改进 Go 的以下方面,你将如何使用呢?”获得最多的 GopherCoin 的两个领域是依赖管理(使用模块)和错误诊断,我们将在 2022 年投入资源以改进这两个部分。
使用模块时的问题
最常见的关于模块的问题是跨多个模块的工作(19% 的受访者),其次是版本控制(包括对提交稳定版本 v1 API 的恐惧)。与版本控制相关, 9% 的回复提及了版本管理和更新。排名前 5 的问题是关乎私有库(特别是 GitLab 的鉴权)和记住不同的 go mod
命令及对应的错误信息。
Go 的学习
今年我们采用了一种新的结构来探索不同级别的 Go 经验的相对效率。绝大多数受访者(88%)认同他们能达到较高的效率,85% 的受访者认同他们经常能流畅地使用 Go 进行工作。认同的比例随着 Go 使用经验的增长而上升。
我们应该在哪些领域引入最佳实践帮助文档?
半数的受访者希望得到的最佳实践文档是关于性能优化和项目目录结构。不出意料,新的 Gopher (使用 Go 不到 1 年)比更有经验的 Gopher 需要更多的指导,尽管两组的顶部区域是一直的。值得注意的是,新的 Gopher 比有经验的 Gopher 需要更多指导是并发相关的。
开发者如何学习一门新的语言?
大约一般的受访者是在工作中学习一门新语言,而几乎同样多的开发者(45%)在学校或工作之外进行学习。受访者(90%)经常是独自学习。那些在工作中学习的开发者时有在几个团队中学习的机会,但 84% 的开发者是独自学习。
许多顶级资源都强调了优秀文档的重要性,但现场指导在语言学习过程中也是特别有用的。
开发者的工具和实践
与往年一样,绝大多数受访者表示在 Linux(63%)和 macOS(55%)系统上使用 Go 进行开发。随着时间的推移,主要在 Linux 上开发的受访者比例似乎略有下降。
部署平台
超过 90% 的受访者部署的平台是 Linux。即使在 macOS 系统开发的受访者要比 Windows 的要多,但他们更多是部署目标是 Windows 而不是 macOS。
模糊测试
大多数受访者是不熟悉模糊测试,或者仍然认为在模糊测试方面他们还是新手。基于这个发现,我们计划:
1)确保 Go 的模糊测试文档除了描述模糊测试的细节之外,增加测试模糊测试概念介绍。
2)将输出和错误信息设计成可操作的,以帮助不熟悉模糊测试的开发者成功地将其应用到程序中。
云计算
Go 在设计时就考虑了现代分布式计算的思想,我们希望继续优化开发者使用 Go 构建云服务的体验。今年将 Go 部署到全球最大的三个云服务商(亚马逊 AWS、谷歌云平台、微软Azure)的受访者比例与往年基本一致,而私有化部署比例继续下降。
部署到 AWS 的受访者发现托管到 Kubernetes 平台的人数有所增加,在部署到三大云服务商中的比例是 35%。部署 Go 程序到 VM 的比例在所有服务商中均有下降。
今年的变化
去年,我们引入了模块化设计以便在不延长调查时间的情况下询问更多的问题。今年我们延续了这个设计,其中一些问题已停止使用,而其他问题被添加了或是修改了。没有受访者看到调查中的所有问题。此外,因为某些问题是根据前面的问题答案而有选择性地显示,题量要比往年更少。
今年调查中最显著的变化是招募参与者的方式。往年我们会通过 Go 博客公布调查,并在 Twitter、Reddit 或 Hacker News 等各个社交渠道上发布。今年,除了这些传统渠道以外,我们还使用了 VS Code 插件,通过提示是否愿意参与调查来随机选择用户。这个渠道产生了一个随机样本,我们用这个样本来比较来自传统渠道的受访者,并帮助我们确定自选偏差的潜在影响。
几乎三分之一的受访者都是通过这种方式获得的,所以这些参与者的回复会对我们看到的结果产生巨大的影响。我们在这两组之间能看到一些关键的区别是:
更多新的 Gopher
这些随机样本中有更高的比例的 Gopher 新手(使用 Go 不到一年)。Gopher 新手可能是更少从 Go 生态和社交渠道中看到调查,而更可能在 IDE 中看到调查。但不管何种原因,我们非常开心能听到更广泛的来自 Go 社区的声音。
更多 VS Code 用户
毫不意外, 在使用 VS Code 插件进行调查的受访者中,91% 更喜欢使用 VS Code 进行开发。因此,我们看到了对 VS Code 编辑器更高的偏爱。当我们排除随机组,结果与去年没太大差异,因此我们知道这是样本变化的结果,而不是整体偏好的差异。类似地, VS Code 用户比其他受访者更可能在 Windows 上开发,所以我们看到今年对 Windows 的偏好也有所增长。我们还看到 VS Code 使用中某些开发者对技术的使用发生了轻微的变化。
不同资源
随机选择的样本不太可能将 Go 博客等社交渠道列为回答 Go 相关问题的主要资源之一,因此他们可能不太可能看到这些渠道上的调查广告。
结论
感谢您与我们一起回顾 2021 年开发者调查!重申一下关键要点:
- 大多数指标保持稳定,大的改变来源于样本的变化。
- Go 的满意度仍然很高!
- 四分之三的受访者在工作中使用 Go,许多人每天都在使用 Go,因此帮助完成工作是重中之重。
- 我们将优先改进调试和依赖管理工作流程。
- 我们将继续努力使 Go 社区成为一个包容各种 Gopher 的社区。
了解开发者的经验和挑战有助于我们衡量我们的进展,并指导 Go 的未来发展方向。再次感谢为本次调查做出贡献的所有人——没有你们,我们是无法完成这些工作的。希望我们明年再见!
本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。
推荐文章: