《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 编程。

14be1162e3fa7c152d6c233993784e40.png df66f4a9aba02db505af1e9ed20cbfed.png 1c7f916e8832bbd158cb60ee6d40013f.png

2021 年的一些新人口统计数据:

  • 大多数受访者将他们的组织描述为企业或中小型企业,约四分之一的人将他们的组织描述为初创企业。咨询公司和公共机构的情况要少得多。

  • 绝大多数受访者在不到 10 人的团队中工作。

  • 超过一半(55%)的受访者每天在工作中使用 Go。受访者在工作之外使用 Go 的频率较低。

89cfc27157149357c4c51c41f6d70492.png eb885df2cf68bf27e44883cdb73210ff.png 00fece9c89f6eddd0d5bc72e78dbe4ef.png

Go 应用面临的挑战

我们问受访者在过去一年中是否评估过使用其他语言来替代 Go。43% 的受访者表示,他们曾评估过切换到 Go,或者在之前没有既定语言的情况下采用 Go。

这些评估中的 80% 主要是出于商业原因。

b46dd41fb0f3a6450142dde0479bbf90.png

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

7ff3a10cd779e5cde829c43de167aab1.png

在那些评估了 Go 的受访者中,有 75% 最终使用了Go。(当然,由于几乎所有的调查对象都报告说在使用 Go,我们很可能没有听到那些评估过 Go 但决定不使用它的开发者的声音)。

1d1887850bc60518ae2e8d4c253b8169.png

对于那些评估了 Go 但没有使用 Go 的人,我们接着问他们有哪些挑战阻碍了他们使用 Go,其中哪个是主要障碍。

4dc75989ceead867dbda08c367cf4b10.png

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

我们询问了更多关于受访者缺少哪些功能或库的细节,发现泛型是最常见的关键性缺失功能 -- 我们希望在 Go1.18 引入泛型之后,这将成为一个不那么重要的障碍。接下来最常见的缺失功能是与 Go 的类型系统有关的。

我们希望在做出更多改变之前,看看引入泛型会如何影响或解决围绕 Go 类型系统的潜在需求。

目前,我们将收集更多关于这些需求背景的信息,并可能在未来探索不同的方式来满足这些需求,例如通过工具、库或对类型系统的修改。

至于缺失的库,对于增加什么样的库可以解开最大比例的想采用Go的人的障碍,并没有明确的共识。这需要进一步的探索。

那么,当受访者不选择 Go 时,他们用什么来代替呢?

4c6055fd7fb74f9ae5a7240f74cb67dd.png

Rust、Python 和 Java 是最常见的选择。

Rust 和 Go 有互补的功能集,所以当 Go 不能满足项目的功能需求时,Rust 可能是一个不错的选择。

使用 Python 的主要原因是缺少库和现有的基础设施支持,所以 Python 的大型软件包生态系统可能会使其难以转换为 Go。

同样地,使用 Java 的最常见的原因是 Go 的功能缺失,这可能会因为 1.18 版本中引入泛型而得到缓解。

Go 满意度和优先级

让我们看看 Go 在哪些方面做得好,哪些方面可以改进。

与去年一致,92% 的受访者表示他们在过去一年中对 Go 的使用非常满意或比较满意。

4116284b240d1cbdcc4cbde47d1272ea.png

今年,我们引入了一个新的问题,以探索在特定领域中确定工作优先次序的其他方法。

问题:"假设你有 10 个 GopherCoins 可以用来改善围棋工作的以下方面。你会如何分配你的硬币?"

突出的两个领域是依赖性管理(使用模块)和诊断错误,这些领域我们将在 2022 年投入资源。

98f6dccbd7de109db95c1267b548ad21.png

在 Go 依赖管理上,最常见的挑战是:

  • 在多个模块之间工作(19% 的受访者)。

  • 是关于版本的评论(包括对承诺稳定的 V1 版 API 的恐惧)。

与版本有关,9% 的答复讨论了版本管理或更新依赖关系。排在前五位的是关于私有仓库的挑战(包括对 GitLab 的认证)和记住不同的 go mod 命令以及理解它们的错误信息。

开发者工具和实践

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

d965938d1ab99e2902682a5f3c3258bf.png

在使用 VSCode 插件进行调查的受访者中,有 91% 的受访者在使用 Go 时更喜欢使用 VSCode。

f734e7bb58ca4074e48a3f5bfd40fc03.png

目标(部署)平台

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

cd359894f5335fa324b86cc96084028a.png

总结

整体回顾我们 2021 年的开发者调查结果 重申一下,一些关键的收获。

  • 我们的大多数同比指标保持稳定,大多数变化是由于我们的样本变化。

  • 对 Go 的满意程度仍然很高!

  • 四分之三的受访者在工作中使用 Go,许多人每天都在使用Go,所以帮助你完成工作是首要任务。

  • 我们将优先考虑对调试和依赖性管理工作流程的改进。

  • 我们将继续努力,使 Go 成为各种 Gophers 的包容性社区。

简单来讲,就是欣欣向荣,大部分人对 Go 都比较满意。

最大矛盾点是泛型和依赖管理。泛型已在 Go1.18 已经释出,依赖管理持续在改进,也会加大对调试工具的优化。

推荐阅读

参考资料

[1]

Go Developer Survey 2021 Results: https://go.dev/blog/survey2021-results

关注煎鱼,获取业内第一手消息和知识 👇

731d6052fbc1b19f312693c886b713e8.png

7c716d2d6f9072351d1c0b539aac3879.png

你好,我是煎鱼,出版过 Go 畅销书《Go 语言编程之旅》,再到获得 GOP(Go 领域最有观点专家)荣誉,点击蓝字查看我的出书之路

日常分享高质量文章,输出 Go 面试、工作经验、架构设计,加微信拉读者交流群,和大家交流!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值