Go 开发者 2020 调查报告

未匹配的标注

本文为官方 Go Blog 的中文翻译,详见 翻译说明

Alice Merrick
2021 年 3 月 9 日

感谢您的回应!

在 2020 年,我们又有了很大的收获,有 9,648 份回复,大约与 2019 年一样多。感谢你们投入时间为社区提供这些关于你们使用 Go!的经验的见解。

新的模块化调查设计

你可能注意到有些问题的样本量("n=")比其他问题小。这是因为有些问题是向所有人展示的,而有些问题只向随机的受访者子集展示。

亮点

我们从谁那里听到的?

人口统计学问题帮助我们区分哪些同比差异可能是由回应调查的人的变化与情绪或行为的变化造成的。由于我们的人口统计学与去年相似,我们可以有理由相信,其他同比变化主要不是由于人口统计学的变化。

例如,从2019年到2020年,组织规模、开发人员经验和行业的分布基本保持不变。

2019年至2020年组织规模条形图,其中大多数员工少于1000人
2019年至2020年专业经验条形图,大多数人有3至10年的经验
2019年至2020年组织行业条形图,大多数是技术行业

几乎一半(48%)的受访者使用 Go 的时间不到两年。在2020年,我们从使用 Go 不到一年的人那里得到的答复较少。
使用Go的年限柱状图

大多数人说他们在工作中(76%)和在工作之外(62%)使用 Go。在工作中使用 Go 的受访者比例每年都有上升的趋势。

在工作中或工作之外使用围棋的柱状图

今年我们引入了一个关于主要工作职责的新问题。我们发现70%的受访者的主要职责是开发软件和应用程序,但也有相当一部分人(10%)是设计IT系统和架构。

主要工作职责

与往年一样,我们发现大多数受访者并不经常为Go开源项目做贡献,75%的人表示他们 「不经常」或 「从不」 这样做。

从2017年到2020年,受访者对用Go编写的开源项目的贡献频率,其中每年的结果基本相同,只有7%的人每天贡献

开发者工具和实践

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

2017年至2020年的主要操作系统

第一次,编辑器的偏好似乎已经稳定下来。VS Code 仍然是最受欢迎的编辑器(41%),GoLand 位居第二(35%)。这些编辑器加起来占了回复的76%,其他的偏好并没有像前几年那样继续减少。

2017至2020年的编辑偏好

今年,我们要求受访者按照如果他们有100个 「GopherCoins」(一种虚构的货币),他们假设会花多少钱来优先考虑对编辑器的改进。每个受访者获得的 GopherCoins 的平均数量最高。一半的受访者给了前4个功能(代码完成、代码导航、编辑器性能和重构)10个或更多硬币。

每个受访者平均花费的 GopherCoins 数量的条形图

大多数受访者(63%)花了10-30%的时间进行重构,这表明这是一项常见的任务,我们要研究如何改进它。这也解释了为什么重构支持是资助最多的编辑器改进之一。

! 花在重构上的时间柱状图

去年我们询问了具体的开发者技术,发现几乎 90% 的受访者都在使用文本记录进行调试,所以今年我们增加了一个后续问题来了解原因。结果显示,43% 的人使用它是因为它允许他们在不同的语言中使用相同的调试策略,42% 的人喜欢使用文本日志而不是其他调试技术。然而,27% 的人不知道如何开始使用 Go 的调试工具,24% 的人从未尝试过使用 Go 的调试工具,因此在可发现性、可用性和文档方面有机会改善调试器工具。此外,由于四分之一的受访者从未尝试过使用调试工具,所以痛点可能被低估了。

对 Go 的感情

今年,我们首次询问了总体满意度。92% 的受访者表示他们在过去一年中对 Go 的使用非常满意或比较满意。

总体满意度条形图,从非常不满意到非常满意的5分制

这是我们第三年询问 "你是否会推荐......" Net Promoter Score(NPS)问题。今年我们的 NPS 结果是61分( 68% 的 "促进者 "减去 6% 的 "反对者"),在统计上与2019年和2018年没有变化。

推广者、被动者和反对者的堆积条形图

与往年类似,91% 的受访者表示他们更愿意在下一个新项目中使用 Go。89% 的人说 Go 对他们的团队来说效果不错。今年,我们看到同意 Go 对他们公司的成功至关重要的受访者从2019年的 59% 增加到2020年的 66%。在5000 名或更多员工的组织工作的受访者不太可能同意(63%),而在较小的组织工作的受访者则更可能同意(73%)。

我更愿意在我的下一个项目中使用 Go,Go 对我的团队来说运作良好,89%,以及 Go 对我公司的成功至关重要等语句的同意率条形图

和去年一样,我们要求受访者根据满意度和重要性对 Go 开发的具体领域进行评分。对使用云服务、调试和使用模块(去年被强调为改进机会的领域)的满意度有所提高,而大多数重要性得分保持不变。我们还引入了几个新的主题。API 和网络框架。我们看到,网络框架的满意度低于其他领域(64%)。对于大多数当前用户来说,它并不那么重要(只有 28% 的受访者说它非常重要或至关重要),但对于未来的 Go 开发者来说,它可能是一个缺失的关键功能。

2019年至2020年对Go各方面的满意度条形图,显示对构建速度、可靠性和使用并发性的满意度最高,对 web 框架的满意度最低

81% 的受访者说他们使用 Go 感到非常有成效。大型组织的受访者比小型组织的受访者更有可能感到非常有成效。

堆叠的生产力感知条形图,从并非全部到极高的生产力的5点刻度

我们从轶事中得知,使用 Go 很容易迅速提高工作效率。我们问那些觉得至少有一点生产力的受访者,他们花了多长时间来提高生产力。93% 的人说他们花了不到一年的时间,大多数人在3个月内就觉得有了成效。

感受到生产力之前的时间长度柱状图

尽管与去年差不多,同意 "我在 Go 界感到受欢迎 "这一说法的受访者比例似乎随着时间的推移呈下降趋势,或者至少没有像其他领域那样保持上升趋势。

我们还看到,认为 Go 项目领导层了解其需求的受访者比例(63%)也在逐年大幅上升。

所有这些结果都显示出一种模式,即从两年左右开始,较高的认同度与 Go 经验的增加相关。换句话说,受访者使用 Go 的时间越长,他们就越有可能同意这些陈述的内容。

条形图显示了我对围棋社区的欢迎程度,我对 Go 领导层有信心,我觉得自己可以做出贡献,Go 项目的领导层了解我的需求,以及我对 Go 项目的贡献过程很清楚

我们提出了一个开放性的文本问题,即我们可以做些什么来使 Go 社区更受欢迎,最常见的建议(21%)与不同形式的或改进/增加的学习资源和文件有关。

改善围棋社区欢迎度的建议条形图

使用Go的工作

构建 API/RPC 服务(74%)和CLI(65%)仍然是Go的最常见用途。与去年相比,我们没有看到任何重大变化,当时我们在选项的排序中引入了随机化。(在2019年之前,列表开头的选项被选中的比例过高)。我们还按组织规模进行了细分,发现受访者在大型企业或小型组织中使用 Go 的情况类似,但大型组织在使用 Go 进行网络服务返回HTML的可能性较小。

2019年至2020年 Go 用例柱状图,包括API或RPC服务、CLI、框架、Web服务、自动化、代理和守护程序、数据处理、GUI、游戏和移动应用

今年,我们现在对受访者在家里和在工作中用 Go 写的哪种软件有了更好的了解。尽管返回 HTML 的网络服务是第四大最常见的用例,但这是由于与工作无关的使用。与返回HTML 的网络服务相比,更多的受访者将 Go 用于自动化/脚本、代理和守护程序,以及工作中的数据处理。在最不常见的用途(桌面/GUI 应用程序、游戏和移动应用程序)中,有更大比例是在工作之外编写的。

工作中、工作外或两者都有的使用案例比例的堆积条形图

另一个新问题是问受访者对每个用例的满意程度。CLI 的满意度最高,85% 的受访者表示他们对使用 Go 的 CLI 非常满意、中等满意或略微满意。Go 的常见用途往往有更高的满意度,但满意度和受欢迎程度并不完全对应。例如,代理和守护进程的满意度排名第二,但其使用率却排名第六。

每个用例的满意度条形图

额外的后续问题探讨了不同的使用情况,例如,受访者用他们的 CLI 针对哪些平台。鉴于开发者对 Linux 和 macOS 的高使用率以及 Linux 云计算的高使用率,看到 Linux(93%)和 macOS(59%)的高度代表性并不令人惊讶,但即使是 Windows 也被几乎三分之一的 CLI 开发者所瞄准。

CLI 所针对的平台柱状图

仔细观察 Go 的数据处理,发现 Kafka 是唯一被广泛采用的引擎,但大多数受访者表示,他们使用 Go 的时候有一个自定义的数据处理引擎。

使用 Go 进行数据处理的人所使用的数据处理引擎的柱状图

我们还询问了受访者使用 Go 的较大领域。到目前为止,最常见的领域是网页开发(68%),但其他常见的领域包括数据库(46%)、DevOps(42%)网络编程(41%)和系统编程(40%)。

正在使用Go的工作种类柱状图

与去年类似,我们发现 76% 的受访者评估当前的 Go 版本用于生产,但今年我们改进了时间尺度,发现 60% 的人在新版本发布前或发布后两个月内开始评估。这凸显了平台即服务提供者快速支持新的稳定版 Go 的重要性。

受访者开始评估新Go版本的时间条形图

模块

今年,我们发现 Go 模块几乎被普遍采用,而只使用模块进行包管理的受访者比例也有显著增加。96% 的受访者表示他们正在使用模块进行包管理,比去年的 89% 要高。87%的受访者说他们只使用*模块进行包管理,高于去年的 71%。同时,对其他软件包管理工具的使用有所减少。

Go软件包管理所用方法的柱状图

对模块的满意度也比去年有所提高。77% 的受访者表示,他们对模块非常满意、中度满意或略微满意,而2019年的比例为 68%。

对使用模块的满意度的堆积条形图,从非常不满意到非常满意的7分制

官方文件

大多数受访者表示,他们对官方文档感到很纠结。62% 的受访者努力寻找足够的信息来完全实现他们应用程序的某项功能,超过三分之一的受访者在开始使用他们以前没有做过的东西时感到很费劲。

使用 Go 官方文档的困难的柱状图

官方文档中最有问题的领域是使用模块和CLI开发,20% 的受访者认为模块文档稍有帮助或完全没有帮助,16% 的人认为围绕CLI开发的文档有帮助。

堆积在一起的条形图显示了特定领域的文档的有用性,包括使用模块、CLI 工具开发、错误处理、网络服务开发、数据访问、并发和文件输入/输出,评分标准为5分,从完全没有帮助到非常有帮助

Go 在云端

Go 的设计考虑到了现代分布式计算,我们希望继续改善开发者使用 Go 构建云服务的体验。

  • 全球三大云计算供应商(亚马逊网络服务、谷歌云平台和微软Azure)在调查对象中的使用率持续上升,而其他大多数供应商的使用比例每年都在减少。特别是Azure,从7%大幅增加到12%。
  • 作为最常见的部署目标,在自家或公司拥有的服务器上进行的内部部署继续减少。

用于部署 Go 程序的云供应商柱状图,其中 AWS 是最常见的,占 44%

部署到 AWS 和 Azure 的受访者在部署到受管理的 Kubernetes 平台方面出现了增长,现在分别为 40% 和 54%。Azure 在将 Go 程序部署到虚拟机上的用户比例大幅下降,而容器的使用则从 18% 增长到 25%。同时,GCP(已经有很高比例的受访者报告管理型 Kubernetes 的使用)在部署到无服务器的云端运行方面有一些增长,从10% 到17%。

每个供应商正在使用的服务比例的柱状图

总的来说,大多数受访者对在所有三个主要云供应商上使用Go感到满意,这些数字在统计上与去年持平。受访者对 AWS(82%满意)和 GCP(80%)的Go开发的满意程度相似。Azure 的满意度较低(58%的满意度),自由文本回复经常提到需要改进 Azure 的Go SDK和 Go 对 Azure 函数的支持。

在AWS、GCP和Azure上使用Go的满意度堆积条形图

痛点

受访者说他们无法更多使用 Go 的首要原因仍然是在用另一种语言进行项目工作(54%),在喜欢使用另一种语言的团队中工作(34%),以及 Go 本身缺乏关键功能(26%)。

今年我们引入了一个新的选项,「我已经在所有我想使用的地方使用 Go」,这样受访者就可以选择不做那些不妨碍他们使用 Go 的选择。这大大降低了所有其他选项的选择率,但并没有改变它们的相对排序。我们还引入了一个 「Go 缺乏关键框架」的选项。

如果我们只看选择不使用 Go 的原因的受访者,我们可以更好地了解同比的趋势。在另一种语言的现有项目中工作以及项目/团队/领导对另一种语言的偏好随着时间的推移而减少。

阻碍受访者更多使用Go的原因柱状图

在 26% 的受访者表示 Go 缺乏他们需要的语言功能中,88% 的人选择泛型作为关键的缺失功能。其他重要的缺失功能是更好的错误处理(58%)、空值安全(44%)、函数式编程功能(42%)和更强大/扩展的类型系统(41%)。

明确地说,这些数字是来自于那些说如果 Go 不缺少他们需要的一个或多个关键功能,他们就会更多地使用 Go 的受访者,而不是整个调查对象。从这个角度来看,18% 的受访者因为缺乏泛型而无法使用 Go。

缺少关键功能的柱状图

受访者在使用 Go 时报告的最大挑战还是 Go 缺乏泛型(18%),而模块/包管理和学习曲线/最佳实践/文档方面的问题都是 13%。

受访者使用 Go 时面临的最大挑战柱状图

Go社区

今年,我们询问了受访者在回答与 Go有关的问题时的前5个资源。去年我们只问了前三名,所以结果没有直接的可比性,不过,StackOverflow 仍然是最受欢迎的资源,占65%。阅读源代码(57%)仍然是另一个受欢迎的资源,而对 godoc.org 的依赖(39%)则明显减少。软件包发现网站 pkg.go.dev 是今年新上榜的,是 32% 的受访者的首要资源。使用 pkg.go.dev 的受访者更有可能同意他们能够快速找到他们需要的Go 软件包/库。91%的 pkg.go.dev 用户与82%的其他用户相比。

受访者用于回答 Go 相关问题的前5个资源柱状图

多年来,不参加任何 Go 相关活动的受访者比例一直呈上升趋势。由于 Covid-19 的原因,今年我们修改了围 Go 活动的问题,发现超过四分之一的受访者比往年花更多时间在网上 Go 渠道,14%的人参加了虚拟围棋聚会,是去年的两倍。64% 参加过虚拟活动的人说这是他们第一次参加虚拟活动。

受访者参与在线渠道和活动的柱状图

我们发现 12% 的受访者认同传统上代表性不足的群体(如种族、性别认同等),与2019 年相同,2% 的人认同女性,比 2019 年少(3%)。与不认同代表不足群体的人相比,认同代表不足群体的受访者对 "我觉得自己在 Go 界很受欢迎 "这一说法的不认同率更高(10%对4%)。这些问题使我们能够衡量社区的多样性,并强调外联和发展的机会。

代表不足群体的条形图 ! 认同为女性的条形图 ! 代表不足群体的欢迎程度条形图

我们今年增加了一个关于辅助技术使用的问题,发现 8% 的受访者正在使用某种形式的辅助技术。最常使用的辅助技术是对比度或颜色设置(2%)。这很好地提醒了我们有无障碍需求的用户,有助于推动我们在 Go 团队管理的网站上的一些设计决策。

辅助技术使用情况的条形图

Go 团队重视多样性和包容性,这不仅仅是做正确的事情,而是因为不同的声音可以照亮我们的盲点,最终使所有用户受益。我们询问敏感信息的方式,包括个性和传统上代表性不足的群体,已经根据数据隐私法规进行了改变,我们希望在未来使这些问题,特别是围绕个性多样性的问题,更具包容性。

结语

感谢你和我们一起回顾 2020 年开发者调查的结果! 了解开发者的经验和挑战有助于我们衡量我们的进展,并指导 Go 的未来。再次感谢所有为这次调查做出贡献的人--没有你们,我们不可能做到这一点。我们希望明年再见到你!

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/go-blog/go-deve...

译文地址:https://learnku.com/docs/go-blog/go-deve...

上一篇 下一篇
Summer
贡献者:3
讨论数量: 0
发起讨论 只看当前版本


暂无话题~