2019 年 Go 开发者调查
4月20日,Go 官方释出 2019 年的 Go 开发者调研报告。官方非常感谢参与本次调查的数千名Go开发人员。 在2019年,官方收到了 10,975 份问卷,几乎是去年的两倍! 团队成员非常感谢开发者花时间和精力填写这份 Go 开发者调研。
本次调研,官方改进了对开放式、自由文本回答的问题的分析。去年使用的是机器学习来粗略但快速地对这些问卷进行分类。今年,两名研究人员手动分析和分类了这些问卷,允许进行更细致的分析,与去年的数字进行有效的比较。这个变化的目的是提供一个 2019 年以后的可靠基线。
一分钟速读
这篇文章很长。以下是本次调研的主要结论:
- 这次的受访者的受众特征与 Stack Overflow 的调查受访者相似,使得这些结果可以代表更多的 Go 开发人员的心声。
- 大多数受访者每天都使用 Go,而且这个数字每年都在上升。
- Go 的使用仍集中在技术公司,但是 Go 在越来越多的行业中被用到,例如金融行业和媒体相关。
- 开发者使用 Go 解决的问题很相似,基本集中在构建 API, RPC 服务和 CLI 工具。
- 大多数团队都试图尽快更新到最新的 Go 版本。 但是第三方 package 的 provider 更新地会相对慢一点。
- 现在,Go生态系统中的几乎每个人都在使用 Go Modules,但是用户对软件包管理方面仍然存在困惑。
- 有待改进的重点领域包括改善开发人员的 debug 体验,Go Modules 和 cloud service 方面的体验。
- VS Code 和 GoLand 仍然是最受欢迎的编辑器,受访的四个人中就有三个在使用他们。
受访的开发者群体
受访者公司规模
受访者的编程工作年限
受访者使用 Go 编程的时间
从使用 Go 的经验来看,我们发现大多数受访者(56%)使用 Go 的时间不到两年,相对较新。 多数人还说,他们在工作中(72%)和工作外(62%)使用Go。 可以看到在工作中使用 Go 的受访者比例每年都在上升。
受访者的开发背景
使用 Go 时间较长的受访者与新的 Go 开发人员的背景不同。 这些 Go 老兵更有可能拥有 C / C ++ 的专业知识,而不太可能具备 JavaScript,TypeScript 和 PHP 的专业知识。 但是不管他们使用 Go 已有多长时间,Python似乎都是大多数受访者熟悉的语言(不是Go????)。
受访者所从事的行业
去年,我们询问了受访者从事哪些行业,发现大多数人在软件,互联网或网络服务公司工作。 今年看来,受访者所从事的行业更加广泛了。
受访者对 Go 开源项目的贡献
Go 是一个成功的开源项目,但这并不意味着使用它的开发人员也正在编写免费或开源软件。 与往年一样,我们发现大多数受访者并不是 Go 开源项目的频繁贡献者,有 75% 的受访者表示他们“很少”或“从不”参与 Go 开源项目。 随着Go社区的扩展,我们发现从未为 Go 开源项目做出过贡献的受访者所占的比例正在缓慢上升。
开发工具篇
受访者开发中使用的 OS
与往年一样,绝大多数开发者表示在 Linux 和 macOS 系统上使用 Go。 这是我们的受访者与StackOverflow的2019 年调查结果之间存在很大差异的一个方面:在我们的调查中,只有20%的受访者使用 Windows 作为主要开发平台,而对于 StackOverflow 而言,这一比例为 45%。 Linux 的使用率为 66%,macOS 的使用率为 53%,这两者都远远高于 StackOverflow 的受众,后者分别报告了 25% 和 30%(看来 Gopher 还是喜欢 UNIX 多一些)。
受访者使用的 IDE
今年,IDE 整合的趋势仍在继续。 GoLand 今年的使用量增长最快,从 24% → 34% 上升。 VS Code的增长速度有所放缓,但仍然是受访者中最受欢迎的编辑器,占41%。 结合起来,这两个 IDE 现在的占有率是 75%。
关于自建 Go document server
今年,我们添加了一个有关内部 Go 文档工具(例如 gddo )的问题。 少数受访者( 6% )表示他们的组织运行自己的Go文档服务器,尽管当我们查看大公司受访者(拥有至少5,000名员工)时,这一比例几乎翻了一番(达到11%),但当我们与后者交流时,他们说基本已经停止了自建 document server,原因是收益小,成本高。
受访者对 Go 的使用意向
大部分受访者都认为 Go 在他们的团队中表现良好(86%),并且他们希望将其用于下一个项目(89%)。 我们还发现,超过一半的受访者(59%)认为 Go 对其公司的成功至关重要。 自2016年以来,这些指标一直保持稳定。
受访者对 Go 生态的满意度
在 Go 生态的满意度上,我们看到很大比例的受访者同意每种说法(82%–88%),并且在过去四年中,这些比率在很大程度上保持稳定。
受访者所在行业对 Go 生态的满意度
今年,我们对各个行业的满意度进行了更细微的考察,以建立基准。 总体而言,无论行业如何,受访者都对在工作中使用Go表示满意。 我们确实在几个领域(尤其是制造业)中看到了一些不满,我们计划通过后续研究进行调查。
受访者对 Go 特性的关注度
同样,我们调查了对 Go 开发各个方面的满意度以及重要性。 将这些结果结合在一起可以突出显示三个特别关注的主题:debug(包括调试并发性),go modules 和 cloud service。 大多数人都将这些主题中的每一个评为“非常”或“至关重要”,但与其他主题相比,这些方面的满意度得分明显较低。
受访者对 Go 社区的满意度
上面的调查结果可能不足为奇,因为参与 Go 开发者调查的人们喜欢 Go 的概率更大(手动狗头)。
使用 Go 完成的工作内容
构建API / RPC服务(71%)和CLI(62%)仍然是 Go 的重头戏。
我们调查了受访者使用 Go 的更大领域。 到目前为止,最常见的领域是 Web 开发(66%),但其他常见的领域包括数据库(45%),网络编程(42%),系统编程(38%)和 DevOps (37%)。
Go 开发过程的常用技术
除了受访者正在构建的内容之外,我们还询问了他们使用的一些开发技术。 绝大多数受访者表示,他们依靠 log 进行调试(88%),而他们的回答表明,这是因为提供的调试工具难以有效使用。 但是,本地逐步调试(例如,使用Delve),性能分析和使用竞争检测器进行测试的情况并不少见,约有50%的受访者其使用中至少一种技术。
关于 Go Modules
在包管理方面,我们发现绝大多数受访者(89%)采用了 Go Modules。对于开发者来说,这是一个巨大的转变,几乎整个社区都在同时经历这一转变。
云原生时代的 Go
Go在设计时考虑到了现代分布式计算,我们希望继续改进使用Go构建云服务的开发人员体验。今年,我们扩展了关于云开发的问题,以便更好地了解受访者如何与云提供商合作,他们喜欢当前开发者体验的哪些方面,以及哪些方面可以改进。
我们可以清晰地感受到以下两个趋势:
- 全球三大云提供商(Amazon Web Services,Google Cloud Platform和Microsoft Azure)在受访者中的使用率均呈上升趋势,而大多数其他提供商每年使用的受访者比例都较小。
- 到自有或公司拥有的服务器的本地部署继续减少,并且在统计上已与AWS(44%比42%)绑定为最常见的部署平台。
Go project 的部署云平台
总体而言,大多数受访者对在所有三大主要云提供商上使用 Go 感到满意。 受访者具有对 Go(AWS)(80%满意)和GCP(78%)的 满意度。
Go project 的部署服务类型
存在的痛点
受访者表示无法使用Go的主要原因有三个:
- (56%)当前的项目正在使用其他语言;
- 团队更倾向于使用其他语言(37%);
- Go本身缺乏一些关键功能 (25%)。
对一些 Go 特性的期待
在 25% 的受访者中,认为 Go 缺乏他们需要的语言特性。其中 79% 认为泛型是一个严重缺失的特性。22% 的人提到了对错误处理的持续改进(除了 Go 1.13 的更改之外),13 %的人要求更多的函数式编程特性,尤其是内置的map/filter/reduce 功能。需要说明的是,这些数字来自受访者的子集,他们表示,如果提供了他们需要的一个或多个关键功能,他们将能够更多地使用 Go。
没有使用 Go 作为项目的语言的一些原因
对于他们所从事的工作来说,Go “不是一种合适的语言”的受访者有各种各样的理由和用例。最常见的是他们从事某种形式的前端开发(22%),例如用于 web、桌面或移动设备的g ui。另一个常见的回答是,受访者说他们工作的领域中已经有占主导地位的语言(9%),因此很难使用不同的语言。一些受访者还告诉我们他们指的是哪个领域(或者只是提到了一个领域,而没有提到另一种更常见的语言),我们通过下面的“I work on [domain]”行来说明这一点。受访者提到的另一个主要原因是需要更好的性能(9%),尤其是实时计算。
受访者认为目前存在的最大的阻碍
受访者报告的最大阻碍与去年基本保持一致。 Go 缺乏泛型和模块,包管理工具仍然是最主要的问题(分别占反馈的15%和12%),并且强调工具问题的受访者比例有所增加。 这些数字与上面的图表不同,因为这个问题是所有受访者都提出的,无论他们说最大的阻碍什么。 这三个问题都是今年 Go 团队关注的领域,我们希望在未来几个月内极大地改善开发人员的体验,尤其是在模块,工具和入门经验方面。
Debug Go project 的痛点
任何一种语言的 debug 和 benchmark 都具有挑战性。 受访者告诉我们,这两个方面的最大挑战不是 Go 的工具所特有的,而是一个更根本的问题:缺乏知识,经验或最佳实践。 我们希望在今年晚些时候通过文档和其他材料来帮助解决这些问题。 其他主要问题涉及到工具的使用,尤其是在学习/使用 Go 的调试和 profile 分析工具时,在成本/收益方面存在不利的权衡,以及使工具在各种环境中工作的挑战(例如,在容器中进行调试或从生产环境中获取性能分析)。
Go community
大约三分之二的受访者使用 Stack Overflow 来回答与 go 相关的问题(64%)。其他排名靠前的答案来源是godoc.org(47%),直接阅读源代码(42%)和 golang.org (33%)。
关于 MeetUp
上表突展示了不同的寻求帮助的方式(几乎都是社区驱动的),受访者在使用Go开发过程中依靠它们来克服挑战。事实上,对于许多 gopher 来说,这可能是他们与更大的社区互动的主要要点之一: 随着我们的社区不断扩大,我们看到越来越多的受访者不用参加任何与 go 相关的活动。在2019年,这一比例接近三分之二的受访者(62%)。
受访者的语言
由于谷歌更新了全谷歌范围内的隐私指南,我们无法再询问受访者生活在哪个国家。相反,我们询问了首选的口语/书面语作为 Go 在全球使用的粗略调查,这有助于为潜在的本地化工作提供数据。
由于本次调查是用英语进行的,因此对于讲英语的人和英语为第二或第三种常见语言的人群可能会有很大的误差。 因此,非英语数字应解释为可能的最小值,而不是Go的全球受众人数的近似值。
Conclusion
我们希望你了解这次 2019 年开发者调查的结果。了解开发人员的经验和挑战有助于我们为 2020 年制定计划并确定工作的优先级。再一次,非常感谢所有参与调查的人,你们的反馈将有助于在未来一年甚至更长的时间内引导 Go 前进的方向。
**官方资讯/最新技术/独家解读**
复制代码
有疑问加站长微信联系(非本文作者)