写点什么

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:212438

评论

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

半监督式机器学习提升银行业对于团伙欺诈交易行为的风控能力

易观分析

银行

全网对OSPF最言简意赅的归纳!强烈建议收藏!

wljslmz

OSPF 网络工程师 动态路由 6月月更 路由协议

作为软件工程师,给年轻时的自己的建议(下)

禅道项目管理

工程师 程序员进阶 程序员‘

OKALEIDO的NFT聚合交易,打造面向艺术家的Web3商业生态

股市老人

淘宝Native研发模式的演进与思考 | DX研发模式

阿里巴巴终端技术

ide 技术选型 native 客户端 动态化

Flink ML API,为实时机器学习设计的算法接口与迭代引擎

Apache Flink

大数据 flink 编程 流计算 实时计算

为什么我们总是说不清「需求是什么」

LigaAI

产品经理 需求 需求分析 产品设计与思考

openGauss“用户故事”正式上线!一键分享实践经验,限量版礼物等你拿

openGauss

opengauss 开源社区 用户故事

为什么不能使用 datax 直接读写 hive acid 事务表?

明哥的IT随笔

小游戏开发是进行网游的必需环节,你知道吗?

开源直播系统源码

软件开发 小游戏开发 直播系统 app源码

昇腾AI的蝴蝶效应,从智能制造开始

脑极体

ESB基础样例前置资源配置

agileai

数据治理 系统集成 数据集成 企业服务总线 预置样例

使用APICloud AVM多端框架开发课程表功能

YonBuilder低代码开发平台

前端开发 APP开发 APICloud 多端开发 AVM

Go语言创造者回顾:是什么让GoLang如此受欢迎?

三石

go语言

见微知著,细节上雕花:SVG生成矢量格式网站图标(Favicon)探究

刘悦的技术博客

前端 favicon SVG svg图 Icon Font

如何删除 git 仓库中的 .idea 文件?

程序员小航

git IDEA

百度发布首个数字人度晓晓挑战高考作文

开源直播系统源码

高考 百度AI 度晓晓 百度数字人

四川21市州国家反诈中心APP覆盖情况,筑牢全民反诈“防护墙”

易观分析

反诈APP

智能自助洗车设备什么牌子好

共享电单车厂家

自助洗车机 智能自助洗车设备 智能共享洗车机

进出口管理系统解决方案

低代码小观

供应链 企业管理系统

OpenHarmony 3.1 Release版本关键特性解析——HDI硬件设备接口介绍

OpenHarmony开发者

OpenHarmony 3.1 Release

高分神器,百万考生都在用的高效记忆方法,助你过目不忘,决胜高考!

图灵教育

高考 脑科学

网站FAQ页面有必要做吗?该如何做?

小炮

flask框架自主学习

恒山其若陋兮

6月月更

MASA Auth - 从用户的角度看整体设计

MASA技术团队

中建普联与数商云达成战略合作协议,共同打造建设行业数智化发展新高地

数商云

产业互联网 数字化转型 企业数字化

TICS端到端实践:企业积分查询作业开发

华为云开发者联盟

云计算 华为云 安全计算

flutter系列之:构建Widget的上下文环境BuildContext详解

程序那些事

flutter 程序那些事 6月月更

为什么越来越多的开发者放弃使用Postman,而选择Apifox

Liam

前端 后端 Postman swagger API文档

Yarn的RM功能介绍

五分钟学大数据

6月月更

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