go语言 2021年调查结果发布,涵盖各个方面!
go语言 2021年调查结果发布!调查时间1个月共收到11840份反馈,75%的受访者在工作中使用go,满意度很高,81% 的受访者对 Go 项目的长期方向充满信心
特别感谢社区对我们提供了这么棒的反馈
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 编程。
企业类型
- 大多数受访者将他们的组织描述为企业或中小型企业,大约四分之一的受访者将他们的组织描述为初创公司。 咨询公司和公共机构要少得多。
- 绝大多数受访者在少于 10 人的团队中工作。超过一半 (55%) 的受访者每天在工作中使用 Go。 受访者在工作之余使用 Go 的频率较低。
性别
在调查中性别认同也有帮助的不同声音,因为它让我们在社区中来了解我们的性别并获得更多的我们。因为我们制定不同的性别政策。今年,我们可以有更多我们的性别认同,让男女有不同的性别认同问题。
辅助技术
今年我们再次发现大约 8% 的受访者正在使用某种形式的辅助技术。 大多数挑战涉及在 Go 相关网站或其代码编辑器中需要更高对比度的主题和更大的字体大小; 我们计划在今年晚些时候根据网站反馈采取行动。 在为 Go 生态系统做出贡献时,我们都应该牢记这些可访问性需求。
Go遇到的挑战
今年我们修改了我们的问题,以针对没有采用 Go 的实际案例以及原因。 首先,我们询问受访者是否在去年使用另一种语言对 Go 进行了评估。 43% 的受访者表示,他们曾评估过切换到 Go、从 Go 或在没有先前建立的语言时采用 Go。 这些评估中有 80% 主要是出于商业原因。
我们预计 Go 最常见的用例将是评估 Go 的最常见的预期用途。 API/RPC 服务是迄今为止最常见的用途,但令人惊讶的是,数据处理是第二常见的预期用例。
在评估 Go 的受访者中,75% 的人最终使用了 Go。 (当然,由于几乎所有调查对象都报告使用 Go,我们可能没有收到评估 Go 并决定不使用它的开发人员的消息。)
评估过的那些人,我们使用了解了哪些但阻止了他们去,哪些是对的。
对于那些评估过 Go 但没有使用它的人,我们随后询问了哪些挑战阻止了他们使用 Go,哪些是主要障碍。
我们从这些结果中得到的图片支持了之前的发现,即缺少功能和缺乏生态系统/库支持是 Go 采用的最重要的技术障碍。
我们询问了受访者缺少哪些特性或库的更多细节,发现泛型是最常见的关键缺失特性——我们预计在 Go 1.18 中引入泛型之后,这将成为一个不那么重要的障碍。下一个最常见的缺失功能与 Go 的类型系统有关。在进行其他更改之前,我们希望了解引入泛型如何影响或解决围绕 Go 类型系统的潜在需求。目前,我们将收集有关这些需求的上下文的更多信息,并可能在未来探索满足这些需求的不同方法,例如通过工具、库或更改类型系统。
至于缺少的库,对于哪些添加可以解除对希望采用 Go 的最大比例的人的阻碍,目前还没有明确的共识。这将需要额外的探索。
那么,当受访者没有选择 Go 时,他们选用了什么?
Rust、Python 和 Java 是最常见的选择。 Rust 和 Go 具有互补的功能集,因此当 Go 不能满足项目的功能需求时,Rust 可能是一个不错的选择。 使用 Python 的主要原因是缺少库和现有的基础设施支持,因此 Python 的大型包生态系统可能会导致难以切换到 Go。 同样,使用 Java 的最常见原因是因为 Go 缺少一些功能,这可能会通过在 1.18 版本中引入泛型来缓解。
满意度和优先级
让我们看看 Go 做得好的地方以及可以改进的地方。
社区态度的逐年趋势出现了轻微波动。 那些使用 Go 不到 3 个月的人往往不太可能同意这些说法。 越来越多的受访者发现 Go 对其公司的成功至关重要。
优先级
过去几年,我们要求受访者对特定领域的满意度以及这些领域对他们的重要性进行评分; 我们使用这些信息来确定对受访者很重要但他们不满意的领域。 然而,这些领域中的大多数在重要性和满意度方面仅显示出微小的差异。
今年,我们引入了一个新问题,以探索确定特定领域工作优先级的替代方法。 “假设你有 10 个 GopherCoins 可用于改进使用 Go 的以下方面。 你将如何分配你的硬币?” 获得更多 GopherCoin 的两个突出领域是依赖管理(使用模块)和诊断错误,我们将在 2022 年投入资源。
使用模块时遇到的挑战
最常见的与模块相关的挑战是跨多个模块工作(19% 的受访者),其次是关于版本控制的评论(包括对提交稳定的 v1 API 的恐惧)。 与版本控制相关,9% 的回复讨论了版本管理或更新依赖项。 排在前 5 名的挑战是围绕私有存储库(尤其包括使用 GitLab 进行身份验证)和记住不同的 go mod 命令以及理解它们的错误消息。
学习GO
今年我们采用了一种新的结构来探索不同级别的围棋经验之间的相对生产力。 绝大多数受访者 (88%) 同意他们经常达到高水平的生产力,85% 同意他们在使用 Go 编写时通常能够达到流畅状态。 协议的比例随着 Go 经验的增加而增加。
我们应该在哪些领域提供更多的指导?
一半的受访者希望获得有关性能优化和项目目录结构最佳实践的更多指导。 毫不奇怪,新的 调查者(使用 Go 不到 1 年)比更有经验的 调查者 需要更多的指导,尽管两组的顶级领域是一致的。 值得注意的是,新的 调查者 比更有经验的 调查者 要求更多的并发指导。
开发人员在什么地方学习GO语言?
大约一半的受访者在工作中学习了一门新语言,但几乎同样多的人 (45%) 在学校或工作之外学习。 受访者最常(90%)报告单独学习。 在那些说他们在工作中学习的人中,可能有机会集体学习,84% 的人是单独学习而不是集体学习。
许多资源都强调了良好文档的重要性,但现场指导也是语言学习特别有用的资源。
开发者工具和实践
与往年一样,绝大多数受访者表示在 Linux (63%) 和 macOS (55%) 系统上使用 Go。 随着时间的推移,主要在 Linux 上开发的受访者比例似乎略有下降。
目标平台
超过 90% 的受访者瞄准 Linux! 尽管在 macOS 上开发的受访者多于 Windows,但他们更经常部署到 Windows 而不是 macOS。
模糊测试
大多数受访者不熟悉模糊测试或仍然认为自己不熟悉模糊测试。 基于这一发现,我们计划
- 确保 Go 的 fuzzing 文档除了解释 Go 中 fuzzing 的细节之外,还解释了 fuzzing 的概念。
- 设计输出和错误消息是可操作的,以帮助不熟悉 fuzzing 的开发人员应用 它成功了。
云计算
Go 在设计时考虑了现代分布式计算,我们希望继续改善开发人员使用 Go 构建云服务的体验。 今年,将 Go 程序部署到全球三大云提供商(亚马逊网络服务、谷歌云平台和微软 Azure)的受访者比例基本保持不变,而自有或公司拥有的服务器的本地部署继续减少。
部署到 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相关问题的主要资源之一,因此他们可能不太可能看到这些渠道上的调查广告。
结论
感谢您与我们一起回顾 2021 年开发者调查的结果! 重申一下,一些关键要点:
- 由于我们的样本变化,我们的大部分同比指标保持稳定。
- 对 Go 的满意度仍然很高!四分之三的受访者在工作中使用 Go,许多人每天都在使用 Go,因此帮助您完成工作是重中之重。
- 我们将优先改进调试和依赖管理工作流程。
- 我们将继续努力使 Go 成为各种 调查者 的包容性社区。
了解开发人员的经验和挑战有助于我们衡量我们的进步并指导 Go 的未来。 再次感谢为本次调查做出贡献的所有人——没有你们,我们无法完成。 我们希望明年再见!