大数据|《2021 年 Go 官方开发者调查报告》

大家好,我是煎鱼。
每年 Go 官方都会组织进行一次 Go 开发者的调查,上年也不除外。不过调查完,收集了资料后就不见人影了...不然是社区和某时间的朋友们都会问我在哪里可以看到。
这不,最近官方终于发布了《Go Developer Survey 2021 Results[1]》,我直接翻译了(有删减,仅展示重点内容),大家可以看看,了解下 Go 的社区行情发展。
Go 开发者调查结果 亮点

  • 大多数答复与往年一致。例如,对 Go 的满意度仍然很高,达到 92%,75% 的受访者在工作中使用 Go。
  • 今年,我们使用 Go VSCode 插件对一些参与者进行了随机抽样,这导致了对调查作出回应的人发生了一些变化。
  • 缺少关键库、语言功能和基础设施是使用 Go 的最常见障碍。(注:这项调查是在 Go1.18 发布之前进行的,其中泛型是报告中最缺的第一大功能)
  • 受访者希望优先改善调试和依赖性管理。
  • 在使用模块时,最大的挑战是版本管理、使用私有仓库和多模块工作流程。(注意:这项调查是在Go 1.18之前进行的,Go 1.18引入了工作空间,解决了许多这些问题)。
  • 81% 的受访者对 Go 项目的长期发展方向有信心。
我们听了谁的声音?
我们的人口统计数据逐年保持稳定(见 2020 年的结果)。与往年一致,Go主要用于科技行业。70% 的受访者是软件开发人员,少数是 IT 或 DevOps,76% 的受访者表示他们在工作中用 Go 编程。
大数据|《2021 年 Go 官方开发者调查报告》
文章图片
大数据|《2021 年 Go 官方开发者调查报告》
文章图片
大数据|《2021 年 Go 官方开发者调查报告》
文章图片
2021 年的一些新人口统计数据:
  • 大多数受访者将他们的组织描述为企业或中小型企业,约四分之一的人将他们的组织描述为初创企业。咨询公司和公共机构的情况要少得多。
  • 绝大多数受访者在不到 10 人的团队中工作。
  • 超过一半(55%)的受访者每天在工作中使用 Go。受访者在工作之外使用 Go 的频率较低。
大数据|《2021 年 Go 官方开发者调查报告》
文章图片
大数据|《2021 年 Go 官方开发者调查报告》
文章图片
大数据|《2021 年 Go 官方开发者调查报告》
文章图片
Go 应用面临的挑战
我们问受访者在过去一年中是否评估过使用其他语言来替代 Go。43% 的受访者表示,他们曾评估过切换到 Go,或者在之前没有既定语言的情况下采用 Go。
这些评估中的 80% 主要是出于商业原因。
大数据|《2021 年 Go 官方开发者调查报告》
文章图片
我们预计 Go 最常见的用例将是评估 Go 的人最常见的预期用途。到目前为止,API/RPC 服务是最常见的用途,但令人惊讶的是,数据处理是第二常见的预期用例。
大数据|《2021 年 Go 官方开发者调查报告》
文章图片
在那些评估了 Go 的受访者中,有 75% 最终使用了Go。(当然,由于几乎所有的调查对象都报告说在使用 Go,我们很可能没有听到那些评估过 Go 但决定不使用它的开发者的声音)。
大数据|《2021 年 Go 官方开发者调查报告》
文章图片
对于那些评估了 Go 但没有使用 Go 的人,我们接着问他们有哪些挑战阻碍了他们使用 Go,其中哪个是主要障碍。
大数据|《2021 年 Go 官方开发者调查报告》
文章图片
我们从这些结果中得到的情况支持了之前的发现,即缺少功能和缺乏生态系统/库支持是采用Go的最重要的技术障碍。
我们询问了更多关于受访者缺少哪些功能或库的细节,发现泛型是最常见的关键性缺失功能 -- 我们希望在 Go1.18 引入泛型之后,这将成为一个不那么重要的障碍。接下来最常见的缺失功能是与 Go 的类型系统有关的。
我们希望在做出更多改变之前,看看引入泛型会如何影响或解决围绕 Go 类型系统的潜在需求。
目前,我们将收集更多关于这些需求背景的信息,并可能在未来探索不同的方式来满足这些需求,例如通过工具、库或对类型系统的修改。
至于缺失的库,对于增加什么样的库可以解开最大比例的想采用Go的人的障碍,并没有明确的共识。这需要进一步的探索。
那么,当受访者不选择 Go 时,他们用什么来代替呢?
大数据|《2021 年 Go 官方开发者调查报告》
文章图片
Rust、Python 和 Java 是最常见的选择。
Rust 和 Go 有互补的功能集,所以当 Go 不能满足项目的功能需求时,Rust 可能是一个不错的选择。
使用 Python 的主要原因是缺少库和现有的基础设施支持,所以 Python 的大型软件包生态系统可能会使其难以转换为 Go。
同样地,使用 Java 的最常见的原因是 Go 的功能缺失,这可能会因为 1.18 版本中引入泛型而得到缓解。
Go 满意度和优先级
让我们看看 Go 在哪些方面做得好,哪些方面可以改进。
与去年一致,92% 的受访者表示他们在过去一年中对 Go 的使用非常满意或比较满意。
大数据|《2021 年 Go 官方开发者调查报告》
文章图片
今年,我们引入了一个新的问题,以探索在特定领域中确定工作优先次序的其他方法。
问题:"假设你有 10 个 GopherCoins 可以用来改善围棋工作的以下方面。你会如何分配你的硬币?"
突出的两个领域是依赖性管理(使用模块)和诊断错误,这些领域我们将在 2022 年投入资源。
大数据|《2021 年 Go 官方开发者调查报告》
文章图片
在 Go 依赖管理上,最常见的挑战是:
  • 在多个模块之间工作(19% 的受访者)。
  • 是关于版本的评论(包括对承诺稳定的 V1 版 API 的恐惧)。
与版本有关,9% 的答复讨论了版本管理或更新依赖关系。排在前五位的是关于私有仓库的挑战(包括对 GitLab 的认证)和记住不同的 go mod 命令以及理解它们的错误信息。
开发者工具和实践
与往年一样,绝大部分调查对象表示在 Linux(63%)和 macOS(55%)系统上使用 Go。随着时间的推移,主要在 Linux 上开发的受访者的比例似乎略有下降的趋势。
大数据|《2021 年 Go 官方开发者调查报告》
文章图片
在使用 VSCode 插件进行调查的受访者中,有 91% 的受访者在使用 Go 时更喜欢使用 VSCode。
大数据|《2021 年 Go 官方开发者调查报告》
文章图片
目标(部署)平台
超过 90% 的受访者以 Linux 为目标! 尽管在 macOS 上开发的受访者比 Windows多,但他们更经常部署到 Windows 而不是 macOS。
大数据|《2021 年 Go 官方开发者调查报告》
文章图片
总结 整体回顾我们 2021 年的开发者调查结果 重申一下,一些关键的收获。
  • 我们的大多数同比指标保持稳定,大多数变化是由于我们的样本变化。
  • 对 Go 的满意程度仍然很高!
  • 四分之三的受访者在工作中使用 Go,许多人每天都在使用Go,所以帮助你完成工作是首要任务。
  • 我们将优先考虑对调试和依赖性管理工作流程的改进。
  • 我们将继续努力,使 Go 成为各种 Gophers 的包容性社区。
简单来讲,就是欣欣向荣,大部分人对 Go 都比较满意。
最大矛盾点是泛型和依赖管理。泛型已在 Go1.18 已经释出,依赖管理持续在改进,也会加大对调试工具的优化。
推荐阅读
  • 为什么 Go 语言能在中国这么火?
  • 好物分享:快速找到 Goroutine 泄露的地方
参考资料
[1]
Go Developer Survey 2021 Results: https://go.dev/blog/survey2021-results
关注煎鱼,获取业内第一手消息和知识
大数据|《2021 年 Go 官方开发者调查报告》
文章图片

大数据|《2021 年 Go 官方开发者调查报告》
文章图片

你好,我是煎鱼,出版过 Go 畅销书《Go 语言编程之旅》,再到获得 GOP(Go 领域最有观点专家)荣誉,点击蓝字查看我的出书之路。
【大数据|《2021 年 Go 官方开发者调查报告》】日常分享高质量文章,输出 Go 面试、工作经验、架构设计,加微信拉读者交流群,和大家交流!

    推荐阅读