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