go语言 2021年调查结果发布,涵盖各个方面!

go语言 2021年调查结果发布!调查时间1个月共收到11840份反馈,75%的受访者在工作中使用go,满意度很高,81% 的受访者对 Go 项目的长期方向充满信心

go语言 2021年调查结果发布,涵盖各个方面!

特别感谢社区对我们提供了这么棒的反馈

2021年,我们在10月26日至11月16日期间进行了开发者调查,共收到了 11840 份反馈——这是我们在过去的6年时间里收到的反馈最好的一次!

亮点

  • 大多数反馈与往年一致。 例如,对 Go 的满意度仍然很高,达到 92%,75% 的受访者在工作中使用 Go。
  • 今年,我们使用 Go VS Code 插件对一些参与者进行了随机抽样,这导致对调查的结果发生了一些变化。
  • 缺少关键库、语言特性和基础设施是使用 Go 最常见的障碍。 (注意:本调查在 Go 1.18 发布之前进行,泛型是报告最多的缺失功能,排行第一)
  • 受访者希望优先改进调试和依赖管理。
  • 使用模块时的最大挑战涉及版本控制、使用私有存储库和多模块工作流。 (注意:此调查是在 Go 1.18 之前运行的,该版本引入了解决许多这些问题的工作空间)。
  • 81% 的受访者对 Go 项目的长期方向充满信心。

行业调查

我们的人口统计数据逐年保持稳定(参见 2020 年结果)。 与前几年一致,Go 主要用于科技行业。 70% 的受访者是软件开发人员,少数从事 IT 或 DevOps 工作,76% 的受访者表示他们在工作中使用 Go 编程。

受访者所在行业的条形图
条形图显示 Go 在工作中比在工作之外使用更多
使用 API/RPC 服务和 CLI 应用程序最常见的 Go 使用条形图
企业类型
  • 大多数受访者将他们的组织描述为企业或中小型企业,大约四分之一的受访者将他们的组织描述为初创公司。 咨询公司和公共机构要少得多。
  • 绝大多数受访者在少于 10 人的团队中工作。超过一半 (55%) 的受访者每天在工作中使用 Go。 受访者在工作之余使用 Go 的频率较低。
企业是最常见响应的组织类型的条形图
团队规模的条形图,其中 2 到 5 是最常见的规模
在工作中使用 Go 的频率与在工作之外使用 Go 的频率比较,在工作中使用 Go 最常见的是每天,而在工作之外使用 Go 的频率较低,最常见的是每周
性别

在调查中性别认同也有帮助的不同声音,因为它让我们在社区中来了解我们的性别并获得更多的我们。因为我们制定不同的性别政策。今年,我们可以有更多我们的性别认同,让男女有不同的性别认同问题。

条形图显示受访者的性别认同,其中 92% 的受访者认定为男性
辅助技术

今年我们再次发现大约 8% 的受访者正在使用某种形式的辅助技术。 大多数挑战涉及在 Go 相关网站或其代码编辑器中需要更高对比度的主题和更大的字体大小; 我们计划在今年晚些时候根据网站反馈采取行动。 在为 Go 生态系统做出贡献时,我们都应该牢记这些可访问性需求。

Go遇到的挑战

今年我们修改了我们的问题,以针对没有采用 Go 的实际案例以及原因。 首先,我们询问受访者是否在去年使用另一种语言对 Go 进行了评估。 43% 的受访者表示,他们曾评估过切换到 Go、从 Go 或在没有先前建立的语言时采用 Go。 这些评估中有 80% 主要是出于商业原因。

图表显示了去年使用另一种语言评估围棋的受访者比例

我们预计 Go 最常见的用例将是评估 Go 的最常见的预期用途。 API/RPC 服务是迄今为止最常见的用途,但令人惊讶的是,数据处理是第二常见的预期用例。

图表显示了他们考虑使用 Go 的那种应用程序

在评估 Go 的受访者中,75% 的人最终使用了 Go。 (当然,由于几乎所有调查对象都报告使用 Go,我们可能没有收到评估 Go 并决定不使用它的开发人员的消息。)

图表显示使用 Go 的人与使用当前语言或选择其他语言的人的比例

评估过的那些人,我们使用了解了哪些但阻止了他们去,哪些是对的。

对于那些评估过 Go 但没有使用它的人,我们随后询问了哪些挑战阻止了他们使用 Go,哪些是主要障碍。

图表显示使用 Go 的障碍

我们从这些结果中得到的图片支持了之前的发现,即缺少功能和缺乏生态系统/库支持是 Go 采用的最重要的技术障碍。

我们询问了受访者缺少哪些特性或库的更多细节,发现泛型是最常见的关键缺失特性——我们预计在 Go 1.18 中引入泛型之后,这将成为一个不那么重要的障碍。下一个最常见的缺失功能与 Go 的类型系统有关。在进行其他更改之前,我们希望了解引入泛型如何影响或解决围绕 Go 类型系统的潜在需求。目前,我们将收集有关这些需求的上下文的更多信息,并可能在未来探索满足这些需求的不同方法,例如通过工具、库或更改类型系统。

至于缺少的库,对于哪些添加可以解除对希望采用 Go 的最大比例的人的阻碍,目前还没有明确的共识。这将需要额外的探索。

那么,当受访者没有选择 Go 时,他们选用了什么?

受访者使用哪些语言而不是 Go 的图表

Rust、Python 和 Java 是最常见的选择。 Rust 和 Go 具有互补的功能集,因此当 Go 不能满足项目的功能需求时,Rust 可能是一个不错的选择。 使用 Python 的主要原因是缺少库和现有的基础设施支持,因此 Python 的大型包生态系统可能会导致难以切换到 Go。 同样,使用 Java 的最常见原因是因为 Go 缺少一些功能,这可能会通过在 1.18 版本中引入泛型来缓解。

满意度和优先级

让我们看看 Go 做得好的地方以及可以改进的地方。

总体满意度从非常不满意到非常满意 5 分制

社区态度的逐年趋势出现了轻微波动。 那些使用 Go 不到 3 个月的人往往不太可能同意这些说法。 越来越多的受访者发现 Go 对其公司的成功至关重要。

在工作中使用 Go 的态度
社区对 Go 项目方向的欢迎和信心的态度

优先级

过去几年,我们要求受访者对特定领域的满意度以及这些领域对他们的重要性进行评分; 我们使用这些信息来确定对受访者很重要但他们不满意的领域。 然而,这些领域中的大多数在重要性和满意度方面仅显示出微小的差异。

与满意度相比的重要性散点图显示大多数区域具有高满意度,并且二进制大小不如其他区域重要

今年,我们引入了一个新问题,以探索确定特定领域工作优先级的替代方法。 “假设你有 10 个 GopherCoins 可用于改进使用 Go 的以下方面。 你将如何分配你的硬币?” 获得更多 GopherCoin 的两个突出领域是依赖管理(使用模块)和诊断错误,我们将在 2022 年投入资源。

用于改善每个区域的硬币总和
使用模块时遇到的挑战

最常见的与模块相关的挑战是跨多个模块工作(19% 的受访者),其次是关于版本控制的评论(包括对提交稳定的 v1 API 的恐惧)。 与版本控制相关,9% 的回复讨论了版本管理或更新依赖项。 排在前 5 名的挑战是围绕私有存储库(尤其包括使用 GitLab 进行身份验证)和记住不同的 go mod 命令以及理解它们的错误消息。

学习GO

今年我们采用了一种新的结构来探索不同级别的围棋经验之间的相对生产力。 绝大多数受访者 (88%) 同意他们经常达到高水平的生产力,85% 同意他们在使用 Go 编写时通常能够达到流畅状态。 协议的比例随着 Go 经验的增加而增加。

图表显示了同意他们觉得使用 Go 富有成效并且可以在使用 Go 编写时达到流畅状态的受访者比例
我们应该在哪些领域提供更多的指导?

一半的受访者希望获得有关性能优化和项目目录结构最佳实践的更多指导。 毫不奇怪,新的 调查者(使用 Go 不到 1 年)比更有经验的 调查者 需要更多的指导,尽管两组的顶级领域是一致的。 值得注意的是,新的 调查者 比更有经验的 调查者 要求更多的并发指导。

图表显示受访者在哪些领域需要更多关于最佳实践的指导
开发人员在什么地方学习GO语言?

大约一半的受访者在工作中学习了一门新语言,但几乎同样多的人 (45%) 在学校或工作之外学习。 受访者最常(90%)报告单独学习。 在那些说他们在工作中学习的人中,可能有机会集体学习,84% 的人是单独学习而不是集体学习。

图表显示一半的受访者在工作中学习了一门新语言,而 45% 的受访者在学校或工作之外学习了一门新语言
图表显示 90% 的受访者独自学习了上一门新语言

许多资源都强调了良好文档的重要性,但现场指导也是语言学习特别有用的资源。

图表显示哪些资源对学习新的编程语言最有帮助,其中阅读参考文档和书面教程最有用
开发者工具和实践

与往年一样,绝大多数受访者表示在 Linux (63%) 和 macOS (55%) 系统上使用 Go。 随着时间的推移,主要在 Linux 上开发的受访者比例似乎略有下降。

2019 年至 2021 年的主要操作系统
目标平台

超过 90% 的受访者瞄准 Linux! 尽管在 macOS 上开发的受访者多于 Windows,但他们更经常部署到 Windows 而不是 macOS。

图表显示了受访者在哪些平台上部署了他们的 Go 代码
模糊测试

大多数受访者不熟悉模糊测试或仍然认为自己不熟悉模糊测试。 基于这一发现,我们计划

  • 确保 Go 的 fuzzing 文档除了解释 Go 中 fuzzing 的细节之外,还解释了 fuzzing 的概念。
  • 设计输出和错误消息是可操作的,以帮助不熟悉 fuzzing 的开发人员应用 它成功了。
图表显示使用过模糊测试的受访者比例
云计算

Go 在设计时考虑了现代分布式计算,我们希望继续改善开发人员使用 Go 构建云服务的体验。 今年,将 Go 程序部署到全球三大云提供商(亚马逊网络服务、谷歌云平台和微软 Azure)的受访者比例基本保持不变,而自有或公司拥有的服务器的本地部署继续减少。

用于部署 Go 程序的云提供商的条形图,其中 AWS 最常见,占 44%

部署到 AWS 的受访者看到部署到托管 Kubernetes 平台的人数有所增加,现在有 35% 的受访者部署到三大云提供商中的任何一个。 所有这些云提供商都看到将 Go 程序部署到 VM 的用户比例有所下降。

每个提供商使用的服务比例的条形图
今年的变化

去年我们引入了模块化调查设计,这样我们就可以在不延长调查时间的情况下提出更多问题。今年我们继续进行模块化设计,尽管一些问题被取消,其他问题被添加或修改。没有受访者看到调查中的所有问题。此外,一些问题的样本量可能要小得多,因为它们是根据之前的问题有选择地提出的。

今年调查最显着的变化是我们招募参与者的方式。前几年,我们通过 Go 博客宣布了这项调查,并在 Twitter、Reddit 或 Hacker News 等各种社交渠道上进行了调查。今年,除了传统渠道外,我们还使用 VS Code Go 插件随机选择用户,提示他们是否愿意参与调查。这创建了一个随机样本,我们用来比较来自传统渠道的自选受访者,并帮助确定自选偏见的潜在影响。

每个来源的受访者比例

我们几乎三分之一的受访者都是通过这种方式获得的,因此他们的回答有可能对我们今年看到的回复产生重大影响。 我们在这两组之间看到的一些主要区别是:

更多新样本

随机选择的样本中有更高比例的新 调查者 (使用 Go 不到一年的人)。 可能是新的 调查者 不太喜欢 Go 生态系统或社交渠道,因此他们更有可能在 IDE 中看到广告中的调查,而不是通过其他方式找到它。 不管是什么原因,很高兴听到来自 Go 社区的更广泛的部分。

随机抽样组与自选组不同经验水平的受访者比例比较
更多 VS Code 用户

在使用 VS Code 插件的调查中,有 91% 的受访者在使用 Go 时更喜欢使用 VS Code,这并不奇怪。 因此,今年我们看到了对 VS Code 更高的编辑器偏好。 当我们排除随机样本时,结果与去年没有统计学差异,所以我们知道这是我们样本变化的结果,而不是整体偏好的结果。 同样,VS Code 用户也比其他受访者更有可能在 Windows 上进行开发,因此我们看到今年对 Windows 的偏好略有增加。 我们还看到在 VS Code 编辑器使用中常见的某些开发人员技术的使用发生了轻微变化。

每个样本组中编辑受访者更喜欢的分组条形图
分组条形图显示受访者在使用 Go 编写时使用了哪些技术
不同的源

随机选择的样本不太可能将GO博客等社交渠道列为回答GO相关问题的主要资源之一,因此他们可能不太可能看到这些渠道上的调查广告。

显示受访者在使用 Go 编写时使用的主要资源的条形图
结论

感谢您与我们一起回顾 2021 年开发者调查的结果! 重申一下,一些关键要点:

  • 由于我们的样本变化,我们的大部分同比指标保持稳定。
  • 对 Go 的满意度仍然很高!四分之三的受访者在工作中使用 Go,许多人每天都在使用 Go,因此帮助您完成工作是重中之重。
  • 我们将优先改进调试和依赖管理工作流程。
  • 我们将继续努力使 Go 成为各种 调查者 的包容性社区。

了解开发人员的经验和挑战有助于我们衡量我们的进步并指导 Go 的未来。 再次感谢为本次调查做出贡献的所有人——没有你们,我们无法完成。 我们希望明年再见!