最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

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

评论

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

治理效率提升77%!揭秘基于DataLeap实时健康分的最佳实践

字节跳动数据平台

数据库 数据治理 数据安全 数据研发 企业号11月PK榜

After Effects 2024 for Mac(ae视频特效制作工具)

展初云

Mac软件 视频编辑 AE After Effects

KubeEdge-Ianvs v0.2 发布:终身学习支持非结构化场景

华为云开发者联盟

云计算 云原生 后端 华为云 华为云开发者联盟

龙芯浏览器是哪家公司开发的?支持信创吗?

行云管家

浏览器 信创 国产化 龙芯浏览器

Photoshop 2024 Mac最新资源 附 alpaca增效工具 可完美替代AI创成式填充

加油,小妞!

ps AI绘图 Photoshop 2024

数智化采购平台覆盖间接采购全流程,现金流优化的“小成大就”

用友BIP

数智采购

数智化营销——企业会员私域运营的成功路径

用友BIP

数智营销

组态软件特点及工控组态软件应用

2D3D前端可视化开发

物联网 组态软件 PLC 工业控制系统 web组态编辑器

如何在嵌入式软件开发的过程中使用DevSecOps方法,提升开发效率与安全性

龙智—DevSecOps解决方案

DevOps DevSecOps

最常用的4种光纤接口结构有哪些?

小魏写代码

Docker打包前端vue代码推送镜像到远程仓库

javaNice

Java’ Docker 镜像

企业数智化领先实践,学得会!

用友BIP

数智化转型

人民网《外企谈信心》| Denodo:加强数据管理技术合作 护航数字经济高质量发展

科技汇

深度开发者故事|API Explorer 助力教育行业 一站式搭建实验环境

华为云PaaS服务小智

云计算 软件开发 华为云

犀牛Rhino 8 for Mac(3D建模软件)

展初云

Mac 建模软件 Rhino 犀牛

掌握项目管理:8大风险分析工具与技术全解析

PingCode

项目管理 产品经理 风险分析

CodeWhisperer 的安装及体验

亚马逊云科技 (Amazon Web Services)

Java Python 人工智能 云上探索实验室 Amazon CodeWhisperer

可跨平台数据库多连管理工具:Navicat Premium 16 中文版

繁星

数据库管理 Navicat Premium 16

MegEngine 9-10 双月报:新版本发布,AI 生态升级,不容错过!

MegEngineBot

深度学习 开发者 开源社区 MegEngine

日常数字生活中,手机里的隐私信息是如何被保护的?

最新动态

Kontakt Factory Library 2(Kontakt原厂音色库)

展初云

Mac软件 音色库 Kontakt

「我在淘天做技术」1688的AIGC商业化落地实践探索

阿里技术

创意 校园招聘 1688 B端 AIGC

Parallels Desktop 19 虚拟机 一键激活 无需关闭sip

繁星

pd虚拟机 Parallels Desktop 19 pd虚拟机 19

人人用数不用愁,动态数据脱敏为您解忧

华为云开发者联盟

数据库 大数据 华为云 数仓 华为云开发者联盟

一站式IT统一运维管理平台有哪些?大家都在用哪个?

行云管家

IT运维 运维管理 统一运维

大型企业财务共享建设避坑指南之场景化表单设计

用友BIP

财务共享

生态合作升级!用友Fast by BIP On 阿里云战略发布

用友BIP

深入理解 Dubbo 协议的调试方法与实践

Apifox

Java 程序员 dubbo 后端 RPC

全网累计销量TOP 1的TCL超薄嵌入式冰箱,跟着选0出错!

科技热闻

使用 Appilot 部署 Llama2,会聊天就行!

SEAL安全

Walrus llama-2 Appilot 企业号11月PK榜

ps插件:Camera Raw for Mac 16.0中文版

加油,小妞!

ps插件 Camera Raw 16

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