红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

2021 年度 Go 开发者调查

  • 2022-05-05
  • 本文字数:4028 字

    阅读完需:约 13 分钟

2021年度Go开发者调查

本文最初发布于 Go 开发博客。

本文重点

收到了哪些人的反馈?

调查的人口统计学特征每年都相当稳定(见2020年的结果)。与往年一样,Go 主要用于科技行业。70%的受访者是软件开发人员,少数是 IT 或 DevOps 人员,76%的受访者表示他们在工作中使用 Go 编程。






2021 年一些新的统计学特征:

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

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

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





性别认同

我们在调查中加入了性别认同,因为那可以让我们知道结果代表谁,并增加一个衡量社区包容性的维度。Go 团队很重视多样性和包容性,不仅因为这是正确的事情,还因为多样化的声音有助于我们做出更好的决策。今年,我们重新表述了性别认同问题,使其更有包容性。女性认同比例与前些年大致相同(2%)。在随机抽样组中也是如此,表明这不仅仅是由于抽样。


辅助技术

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

进一步了解 Go 采用方面的挑战

今年,针对一些没有采用 Go 的实际案例,为了了解原因,我们修改了问题。首先,我们询问受访者去年是否对使用 Go 之外的其他语言进行了评估。44%的受访者表示,他们评估过切换到 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 的主要原因是 Go 缺少库和基础设施支持,而 Python 庞大的包生态系统可能会增加切换到 Go 的难度。类似地,使用 Java 来替代 Go 的最常见的原因是 Go 缺少一些特性,而 1.18 版本中引入的泛型可能会缓解这种情况。

Go 的使用满意度和相关工作优先级

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

 

与去年一样,92%的受访者表示他们在过去的一年里对 Go 非常满意或有些满意。



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




相关工作优先级

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



今年,我们提出了一个新问题,探索以其他方式对具体领域的工作进行优先级排序。“假设你有 10 个 GopherCoin 用来从以下方面改进 Go。你会怎么分配你的币?”得币最多的两个领域是依赖管理(使用模块)和 Bug 诊断。2022 年,我们将在这两个领域投入资源。



模块使用方面的挑战

在与模块相关的挑战中,最常见的是跨多个模块工作(19%的受访者),其次是关于版本控制(包括对提交到稳定的 v1 API 感到不安)。关于版本控制,9%的回复讨论了版本管理或更新依赖。排名前 5 的挑战还有私有库(特别是使用 GitLab 认证)、记住不同的go mod命令以及理解它们的错误信息。

Go 语言学习

今年,我们采用了一个新的结构来探索不同经验层次的 Go 开发人员的相对生产力。绝大多数受访者(88%)认可他们经常能达到高水平的生产力,85%的人认可他们在用 Go 编码时经常能达到“心流状态”。随着 Go 语言编程经验的增加,认可的比例也会增加。



我们应该从哪个方面改进最佳实践文档?

一半的受访者希望在性能优化和项目目录结构方面获得更多有关最佳实践的指导。不出所料,尽管两组排名靠前的领域一致,但新手(使用 Go 不到一年)比经验丰富的老手需要的指导更多。值得注意的是,与经验更为丰富的老手相比,新手需要更多的并发指导。



开发人员如何学习一门新语言?

大约一半的受访者在工作中学习新语言,但几乎同样多的人(45%)在学校或工作之外学习。回复最多的学习方式是(90%)独自学习。在那些回复说在工作中学习的人中(可能有机会参与团体学习),84%的人是独自学习,而不是参与团体学习。




许多顶级资源都强调了良好文档的重要性,但实时指导对语言学习来说也特别有用。



开发工具和实践

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

目标平台

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

Fuzzing 测试

大多数受访者不熟悉 Fuzzing,或者认为自己还是个 Fuzzing 新手。基于这一发现,我们计划:(1)确保 Go Fuzzing 的文档清楚阐释了相关概念及具体细节;(2)设计可执行的输出和错误信息,帮助刚接触 Fuzzing 的开发人员成功应用。

云计算

Go 是在现代分布式计算的基础上设计出来的,我们希望继续改善使用 Go 构建云服务的开发体验。今年,在全球三大云服务提供商(亚马逊云科技、谷歌云平台和微软 Azure)部署 Go 程序的受访者比例保持不变,而在本地或公司自有服务器上部署的比例继续下降。

在部署到 AWS 的受访者中,部署到托管 Kubernetes 平台的人数有所增加,在目前向三大云提供商部署的受访者中占 35%。在所有这些云提供商那里,在虚拟机上部署 Go 程序的用户比例都有所下降。

今年有哪些变化?

去年,我们引入了一个模块化调查设计,以便可以在不延长调查的情况下问更多的问题。今年,我们沿用了模块化设计,不过有些问题去掉了,也增加或修改了一些问题。没有受访者看到调查中的所有问题。此外,有些问题的样本量可能要小很多,因为它们是根据前一个问题有选择性地提出的。

 

在今年的调查中,最大的变化是我们招募参与者的方式。前几年,我们通过 Go 博客宣布了这项调查,并在 Twitter、Reddit 或 Hacker News 等各种社交渠道上发布。今年,除了传统的渠道之外,我们还使用 VS Code Go 插件随机选择用户,向他们显示一条提示信息,询问他们是否愿意参与调查。这形成了一个随机样本,我们用它与来自传统渠道的自我选择的受访者进行对比,并帮助识别自我选择偏的潜在影响。

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



Go 开发人员增加

在随机抽取的样本中,新手(使用 Go 不到一年的人)比例更高。这可能是因为新手参与 Go 生态系统或社交渠道还比较少,所以他们更有可能在 IDE 中看到调查信息,而不是通过其他途径。不管什么原因,能听到更多 Go 界人士的意见是件好事。

VS Code 用户增加

一点也不奇怪,从 VS Code 插件获得信息并参与调查的受访者中,91%的人喜欢使用 VS Code 进行 Go 编程。因此我们看到,在编辑器偏好方面,VS Code 占比要高得多。排除随机样本后,结果与去年就没有统计学上的差异了,所以我们知道,这是我们样本变化的结果,而不是整体偏好。同样,VS Code 用户也比其他受访者更倾向于在 Windows 上开发,所以我们看到,今年对 Windows 的偏好略有增加。我们还看到,在 VS Code 的使用人群中,某些开发技术的使用也有轻微的变化。



参与途径不同

随机抽取的受访者不太可能将 Go 博客等社交渠道作为回答相关问题的首要途径,因此,他们也就不太可能在这些渠道上看到调查信息。

小结

感谢你和我们一起回顾 2021 年 Go 开发者调查结果。重申一下本次调查的一些关键收获:

  • 大部分指标同比保持稳定,大部分变化是因为样本的变化。

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

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

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

  • 我们将继续努力,使 Go 成为适合各类 Go 开发人员的包容性社区。

了解开发者的体验和挑战有助于我们评估自己的进展,并指导 Go 的未来发展。再次感谢所有为本次调查做出贡献的人——没有你们,我们不可能做到这一点。希望明年还可以见到你!

 

查看英文原文:Go Developer Survey 2021 Results

2022-05-05 18:212263

评论

发布
暂无评论
发现更多内容

深度学习应用篇-计算机视觉-图像分类[2]:LeNet、AlexNet、VGG、GoogleNet、DarkNet模型结构、实现、模型特点详细介绍

汀丶人工智能

人工智能 深度学习 计算机视觉 图像分类 6 月 优质更文活动

顶象发布《车企App安全研究白皮书》,剖析车企App两大风险

说山水

Vue3项目中Pinia状态管理工具的使用

不叫猫先生

Vue Pinia 6 月 优质更文活动

中企出海困难重重?海外税务数字化解决方案来支招!

用友BIP

中企出海

直播预告 | 一体化智能可观测平台如何保障电商节大促

博睿数据

可观测性 智能运维 博睿数据 电商节

对编程语言中错误处理机制的思考

宇宙之一粟

错误处理 6 月 优质更文活动

选择优质的led透明屏的7个步骤

Dylan

产品、 LED显示屏 售后服务

vue2.x,vue3.x使用provide/inject注入区别

不叫猫先生

Vue 6 月 优质更文活动

【JavaScript】手写Promise

不叫猫先生

JavaScript Promise 6 月 优质更文活动

Vue项目中实现ElementUI按需引入

不叫猫先生

Vue Element UI 按需加载 6 月 优质更文活动

【云原生】Docker的基本使用方法与优势

不叫猫先生

Docker 6 月 优质更文活动

阿里云丁宇:云上开发成为主流,Serverless 定义新范式

阿里巴巴云原生

阿里云 Serverless 云原生

聚焦数智人力,让员工“跳槽”不再尴尬!

用友BIP

人力资源 数智人力

数智人力:现代企业解决人才短缺的新途径

用友BIP

数智人力

中企出海,数智人力重构企智人效的人才供应体系

用友BIP

人力资源 中企出海 数智人力

苹果WWDC 2023发布会总结

楚少AI

wwdc WWDC 2023 苹果wwdc2023

【热点追踪】从价值到架构,走近全新升级的阿里云 Serverless 容器服务 ASK

阿里巴巴云原生

阿里云 Serverless 容器 云原生

【Netty】「NIO」(三)剖析 Selector

sidiot

Java 后端 Netty 6 月 优质更文活动

亚信科技AntDB数据库荣获赛宝优选信创优秀解决方案奖

亚信AntDB数据库

AntDB AntDB数据库 企业号 6 月 PK 榜

前端内存泄漏详解

不叫猫先生

内存泄露 6 月 优质更文活动

云上数据库:从零到壹的实践经验分享

科技热闻

大学共享电单车合作投放准备工作

共享电单车厂家

共享电动车厂家 共享电单车投放 共享电动车合作 校内共享电动车

一份配置轻松搞定表单渲染,配置式表单渲染器在袋鼠云的实现思路与实践

袋鼠云数栈

大数据 企业号 6 月 PK 榜

数智人力领域的“chat GPT”,让人才发现更简单更智能

用友BIP

数智人力

深入理解注解驱动配置与XML配置的融合与区别

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 6 月 PK 榜

前端AST详解,手写babel插件

不叫猫先生

6 月 优质更文活动

旺链科技赋能泳池卫士守护人身安全

旺链科技

区块链 泳池安全 泳池卫士

vue2.x与vue3.x中自定义指令详解

不叫猫先生

Vue 自定义指令

GaussDB(DWS)查询过滤器原理与应用

华为云开发者联盟

数据库 华为云 华为云开发者联盟 企业号 6 月 PK 榜

人工智能创新挑战赛:海洋气象预测Baseline[4]完整版(TensorFlow、torch版本)含数据转化、模型构建、MLP、TCNN+RNN、LSTM模型训练以及预测

汀丶人工智能

人工智能 数据挖掘 深度学习 LSTM 6 月 优质更文活动

数字经济快速发展下企业需要什么样的数智平台?

用友BIP

企业数智化 数智平台

2021年度Go开发者调查_开源_Alice Merrick_InfoQ精选文章