:::info 日期:2019 年 03 月 28 日
作者:Todd Kulesza, Steve Francia
原文链接:https://go.dev/blog/survey2018-results :::

十分感谢

这篇文章总结了我们 2018 年用户调查的结果,并对我们之前 2016 年和 2017 年的调查结果进行了比较。

今年,我们有来自 103 个不同国家的 5,883 名受访者。我们感谢通过本次调查提供反馈以帮助塑造 Go 未来的所有人。谢谢!

调查结果摘要

  • 一半的受访者现在第一次将 Go 用作他们日常生活的一部分。今年,将 Go 作为工作的一部分进行开发并在工作职责之外使用 Go 的受访者数量也显着增加。
  • Go 最常见的用途仍然是 API/RPC 服务和 CLI 工具。自动化任务虽然不像 CLI 工具和 API 服务那么常见,但对于 Go 来说是一个快速增长的领域。
  • Web 开发仍然是调查受访者工作的最常见领域,但 DevOps 显示出最高的同比增长,现在是第二大最常见的领域。
  • 大多数调查受访者表示,Go 是他们最喜欢的编程语言,尽管他们普遍认为 Go 的熟练程度低于至少一种其他语言。
  • VS Code 和 GoLand 人气飙升,现在是受访者中最受欢迎的代码编辑器。
  • 突出 Go 的可移植性,许多 Go 开发人员使用多个主要操作系统进行开发,Linux 和 macOS 特别受欢迎,大多数受访者使用这两种操作系统中的一种或两种来编写 Go 代码。
  • 调查受访者似乎正在从本地 Go 部署转向容器和无服务器云部署。
  • 大多数受访者表示他们在 Go 社区中感到受欢迎,并且大多数改进 Go 社区的想法都特别关注改善新手的体验。

请继续阅读以了解所有详细信息。

编程背景

今年的结果显示,将 Go 作为工作的一部分而获得报酬的调查受访者数量显着增加(68% → 72%),延续了自 2016 年第一次调查以来一直在增长的同比趋势. 我们还看到在工作之外使用 Go 编程的受访者数量有所增加(64% → 70%)。将 Go 编写为日常工作一部分的调查受访者人数首次达到 50%(高于 2016 年的 44%)。这些调查结果表明,公司正在以一致的速度继续采用 Go 进行专业软件开发,而且 Go 在开发人员中的普遍受欢迎程度仍然很高。
Screen Shot 2021-09-26 at 2.51.12 PM.png
Screen Shot 2021-09-26 at 2.51.20 PM.png
为了更好地了解开发人员在哪里使用 Go,我们将响应分为三组:

  1. 在工作内外都使用 Go 的人,
  2. 专业使用 Go 但不在工作之外使用 Go 的人,以及 3) 仅在工作职责之外编写 Go 的人。近一半 (46%) 的受访者在专业和业余时间编写 Go 代码(自 2017 年以来增加了 10 个百分点),而其余受访者则分为只在工作中编写 Go 或只在工作之外编写 Go .大部分在工作中使用 Go 并选择在工作之外使用 Go 的受访者表明,该语言对不将软件工程视为日常工作的开发人员很有吸引力:他们也选择在工作职责之外编写代码,并且(正如 85% 的受访者表示他们更喜欢 Go 进行下一个项目的证据,请参阅下面的“对 Go 的态度”部分)Go 是他们更喜欢在这些与工作无关的项目中使用的首选语言。

Screen Shot 2021-09-26 at 2.52.37 PM.png
当被问及他们使用 Go 的时间有多长时,参与者的回答随着时间的推移呈强烈上升趋势,每年 2-4 岁和 4 岁以上的回答比例更高。这是一种较新的编程语言所预期的,我们很高兴看到 Go 新手的受访者比例下降得比使用 Go 2 年以上的受访者比例下降得更慢,正如这表明的开发人员在最初学习语言后并没有退出生态系统。
Screen Shot 2021-09-26 at 2.53.10 PM.png
与往年一样,Go 在受访者的首选语言和他们拥有专业知识的语言中名列前茅。大多数受访者 (69%) 声称拥有 5 种不同语言的专业知识,强调他们对 Go 的态度受到其他编程堆栈经验的影响。下面的图表按将每种语言列为最喜欢/最理解(最深的蓝色条)的受访者人数排序,其中突出显示了三个有趣的部分:

  • 虽然大约 1/3 的受访者认为 Go 是他们最擅长的语言,但两倍的受访者认为 Go 是他们最喜欢的编程语言。因此,尽管许多受访者认为他们对 Go 的掌握程度不如其他语言,但他们仍然经常喜欢使用 Go 进行开发。
  • 很少有调查受访者将 Rust 列为他们拥有专业知识的语言 (6.8%),但 19% 的受访者将其列为首选语言,表明这些受众对 Rust 有很高的兴趣。
  • 只有三种语言的受访者表示他们更喜欢该语言而不是说他们拥有该语言的专业知识:Rust(2.41:1 的偏好:专业知识)、Kotlin(1.95:1)和 Go(1.02:1)。高于专业知识的偏好意味着对一种语言的兴趣 - 但几乎没有直接经验,而低于专业知识数字的偏好表明熟练使用的障碍。接近 1.0 的比率表明大多数开发人员能够使用给定的语言有效且愉快地工作。 Stack Overflow 的 2018 年开发者调查证实了这一数据,该调查还发现 Rust、Kotlin 和 Go 是最受欢迎的编程语言之一。

Screen Shot 2021-09-26 at 2.54.52 PM.png
Screen Shot 2021-09-26 at 2.55.00 PM.png
阅读数据:参与者可以对他们的前 5 种语言进行排名。颜色编码从最高等级的深蓝色开始,并为每个连续等级变亮。这些图表按将每种语言列为首选的参与者百分比排序。

开发领域

调查受访者报告称,他们在三个不同领域的中位数工作,其中绝大多数 (72%) 在 2-5 个不同领域工作。 Web 开发是最流行的,占 65%,并且随着受访者的主要工作领域(从去年的 61% 上升),它的主导地位增加了:自 2016 年以来,Web 开发一直是 Go 开发最常见的领域。今年 DevOps 显着从 36% 的受访者增加到 41%,取代了系统编程的第二位。我们没有发现 2018 年使用率低于 2017 年的任何域,这表明受访者正在将 Go 用于更广泛的项目,而不是将使用从一个域转移到另一个域。
fig8.svg
自 2016 年以来,Go 的前两个用途一直是编写 API/RPC 服务和开发 CLI 应用程序。虽然 CLI 的使用率三年保持稳定在 63%,但 API/RPC 的使用率已从 2016 年的 60% 增加到 2017 年的 65%,再到今天的 73%。这些领域发挥了 Go 的核心优势,并且都是云原生软件开发的核心,因此我们希望它们仍然是 Go 开发人员未来的两个主要场景。在 API/RPC 使用量增加的同时,编写直接返回 HTML 的 Web 服务的受访者的百分比稳步下降,这表明 Web 服务向 API/RPC 模型进行了一些迁移。另一个同比趋势表明,自动化也是 Go 的一个不断增长的领域,现在有 38% 的受访者将 Go 用于脚本和自动化任务(高于 2016 年的 31%)。
fig9.svg
为了更好地理解开发人员使用 Go 的环境,我们添加了一个关于不同行业采用 Go 的问题。对于一种相对较新的语言,半数以上的调查受访者在互联网/网络服务和软件类别的公司(即科技公司)工作,这也许不足为奇。回答超过 3% 的其他行业是金融、银行或保险以及媒体、广告、出版或娱乐。 (在下面的图表中,我们将所有响应率低于 3% 的类别浓缩到“其他”类别中。)我们将继续跟踪 Go 在各行业的采用情况,以更好地了解技术公司之外的开发人员需求。

对 Go 的态度

今年我们增加了一个问题,问“你有多大可能向朋友或同事推荐去?”计算我们的净推荐值。这个分数试图衡量一个产品的“推荐者”比“批评者”多多少,范围从 -100 到 100;正值表示大多数人可能会推荐使用产品,而负值表示大多数人可能不推荐使用它。我们 2018 年的得分为 61(68% 的推荐者 - 7% 的批评者),并将作为基准,帮助我们衡量社区对 Go 生态系统的情绪随着时间的推移。
fig11.svg
除了 NPS,我们还询问了几个关于开发人员对 Go 的满意度的问题。总体而言,调查受访者表示高度满意,与往年一致。大多数人表示他们对 Go 感到满意 (89%),更愿意在他们的下一个项目中使用 Go (85%),并认为它对他们的团队运作良好 (66%),而多数人认为 Go 处于至少对他们公司的成功至关重要 (44%)。虽然所有这些指标在 2017 年都出现了增长,但今年它们基本保持稳定。 (第一个问题的措辞在 2018 年从“我建议使用 Go to others”更改为“总体而言,我对 Go 很满意”,因此这些结果没有直接可比性。)
fig12.svg
鉴于在未来的开发中更倾向于使用 Go 的强烈情绪,我们想了解是什么阻止了开发人员这样做。自去年以来,这些基本保持不变:大约 ½ 的调查受访者从事用其他语言编写的现有项目,⅓ 从事更喜欢使用不同语言的团队或项目。缺少语言功能和库是受访者没有更多使用 Go 的最常见原因。我们还询问了开发人员在使用 Go 时面临的最大挑战;与我们的大多数调查问题不同,受访者可以输入他们想要回答的任何内容。我们通过机器学习分析结果以识别共同主题并计算支持每个主题的响应数量。我们确定的三大主要挑战是:

  • 包管理(例如,“跟上 vendoring”、“依赖/包 [sic] 管理/vendoring 不统一”)
  • 与更熟悉的编程语言的差异(例如,“语法接近 C 语言,但语义略有不同,这让我查找引用的次数比我想要的要多”,“来自非 Go 背景的同事试图使用 Go 作为一个版本使用他们以前的语言,但带有通道和 Goroutines”)
  • 缺乏泛型(例如,“缺乏泛型使得很难说服没有尝试过 Go 的人相信他们会发现它是高效的。”,“很难构建更丰富的抽象(想要泛型)”)

fig13.svg
fig14.svg
今年我们添加了几个关于开发人员对 Go 不同方面的满意度的问题。调查受访者对 Go 应用程序的 CPU 性能(46:1,意味着 46 位受访者表示他们对每 1 名表示不满意的受访者表示满意)、构建速度(37:1)和应用程序内存利用率(32:1)非常满意。 1)。然而,对应用程序可调试性 (3.2:1) 和二进制大小 (6.4:1) 的响应表明还有改进的空间。

对二进制文件大小的不满主要来自构建 CLI 的开发人员,其中只有 30% 的人对 Go 生成的二进制文件的大小感到满意。然而,对于所有其他类型的应用程序,开发人员满意度 > 50%,并且二进制大小始终排在重要因素列表的底部。

相反,当我们查看受访者如何对每个方面的重要性进行排名时,可调试性尤为突出; 44% 的受访者将可调试性列为他们最重要或第二重要的方面,但只有 36% 的受访者对 Go 调试的当前状态感到满意。可调试性一直被认为与内存使用和构建速度一样重要,但满意度明显较低,无论受访者正在构建的软件类型如何,这种模式都适用。最近的两个 Go 版本 Go 1.11 和 1.12 都包含对可调试性的重大改进。我们计划今年更深入地调查开发人员如何调试 Go 应用程序,目的是改善 Go 开发人员的整体调试体验。
fig15.svg
fig29.svg

开发环境

我们询问受访者在编写 Go 代码时主要使用哪些操作系统。大多数 (65%) 的受访者表示他们使用 Linux,50% 使用 macOS,18% 使用 Windows,与去年一致。今年,我们还研究了在多个操作系统上与单个操作系统上开发的受访者数量。 Linux 和 macOS 仍然是明显的领导者,81% 的受访者在这两种系统的某种混合上进行开发。只有 3% 的受访者在所有三个操作系统之间平均分配他们的时间。总体而言,41% 的受访者使用多种操作系统进行 Go 开发,突出了 Go 的跨平台特性。
fig16.svg
去年,VS Code 超越 Vim,成为受访者中最受欢迎的 Go 编辑器。今年,它显着扩大了领先优势,成为超过 1/3 的调查受访者的首选编辑器(高于去年的 27%)。 GoLand 也经历了强劲的增长,现在以 22% 成为第二受欢迎的编辑器,与 Vim 交换位置(下降到 17%)。 VS Code 和 GoLand 的迅速流行似乎是以牺牲 Sublime Text 和 Atom 为代价的。 Vim 也看到将其列为首选编辑器的受访者数量下降,但它仍然是最受欢迎的第二选择编辑器,占 14%。有趣的是,我们发现受访者对他们选择的编辑的满意度没有差异。

我们还询问了受访者在他们首选的编辑器中什么最能改进 Go 支持。就像上面的“最大挑战”问题一样,参与者可以写下他们自己的回答,而不是从多项选择列表中进行选择。对响应的主题分析表明,改进调试支持(例如,“实时调试”、“集成调试”、“更好的调试”)是最常见的要求,其次是改进代码完成(例如,“自动完成性能和质量”) ”、“更智能的自动完成”)。其他要求包括更好地与 Go 的 CLI 工具链集成、更好地支持模块/包以及总体性能改进。
fig17.svg
fig18.svg
今年我们还添加了一个问题,询问哪些部署架构对 Go 开发人员最重要。不出所料,绝大多数受访者将 x86/x86-64 视为他们的首选部署平台(76% 的受访者将其列为最重要的部署架构,84% 的受访者将其列为前三名)。然而,第二和第三选择架构的排名提供了信息:人们对 ARM64 (45%)、WebAssembly (30%) 和 ARM (22%) 的兴趣很大,但对其他平台的兴趣很小。
fig19.svg

部署和服务

对于 2018 年,我们看到 Go 和非 Go 部署从本地到云托管的趋势仍在继续。将 Go 应用程序部署到本地服务器的调查受访者的百分比从 43% → 32% 下降,反映了非 Go 部署报告的 46% → 36% 下降。同比增长最高的云服务包括 AWS Lambda(Go 4% → 11%,非 Go 10% → 15%)和 Google Kubernetes Engine(Go 8% → 12%,5% → 10% 非 Go),表明无服务器和容器正在成为越来越流行的部署平台。然而,这种服务增长似乎是由已经采用云服务的受访者推动的,因为我们发现今年部署到至少一项云服务的受访者比例没有显着增长(55% → 56%)。自 2016 年以来,我们还看到 Go 部署到 GCP 的稳步增长,从受访者的 12% → 19% 增加。
fig20.svg
也许与本地部署的减少有关,今年我们看到云存储成为调查受访者使用的第二大服务,从 32% 增加到 44%。身份验证和联合服务也出现了显着增长(26% → 33%)。受访者从 Go 访问的主要服务调查仍然是开源关系数据库,这一比例从 61% → 65% 的受访者上升。如下图所示,服务使用量全面增加。
fig21.svg

Go 社区

寻找 Go 问题答案的主要社区来源仍然是 Stack Overflow(23% 的受访者将其标记为主要来源)、Go 网站(godoc.org 为 18%,golang.org 为 14%)和阅读源代码(一般为源代码 8%,特别是 GitHub 为 4%)。该顺序与前几年基本保持一致。 Go 新闻的主要来源仍然是 Go 博客、Reddit 的 r/golang、Twitter 和 Hacker News。然而,这些也是本次调查的主要分配方法,因此该结果可能存在一些偏差。在下面的两个图表中,我们将不到 5% 的受访者使用的资源归为“其他”类别。
fig24.svg
fig25.svg
今年,55% 的受访者表示他们已经或有兴趣为 Go 社区做出贡献,略低于去年的 59%。由于两个最常见的贡献领域(标准库和官方 Go 工具)需要与核心 Go 团队进行互动,我们怀疑这种减少可能与同意“我觉得接近有问题和反馈的 Go 项目领导”(30% → 25%)和“我对 Go 的领导充满信心(54% → 46%)。
fig26.svg
fig27.svg
社区的一个重要方面是帮助每个人感到受欢迎,尤其是来自传统上代表性不足的人口统计数据的人。为了更好地理解这一点,我们询问了一个关于识别几个代表性不足的群体的可选问题。 2017 年,我们看到了全面的同比增长。在 2018 年,我们发现有类似比例的受访者 (12%) 被认为属于代表性不足的群体,与此同时,不属于代表性不足群体的受访者比例显着下降。 2017 年,对于每个被确定为代表性不足群体的一部分的人,有 3.5 人被确定为不属于代表性不足群体(3.5:1 的比例)。 2018 年,该比率提高到 3.08:1。这表明 Go 社区至少保留了相同比例的代表性不足的成员,甚至可能还在增加。
fig28.svg
维护一个健康的社区对 Go 项目极为重要,因此在过去三年中,我们一直在衡量开发人员在 Go 社区中受到欢迎的程度。今年,我们看到同意“我在 Go 社区感到受欢迎”这一说法的调查受访者的百分比从 66% → 59% 下降。

为了更好地理解这种减少,我们更仔细地观察了谁报告感觉不受欢迎。在传统上代表性不足的群体中,2018 年报告感到不受欢迎的人数较少,这表明该领域的外展活动有所帮助。相反,我们发现有人使用 Go 的时间长短与他们的受欢迎程度之间存在线性关系:新 Go 开发人员的受欢迎程度(50%)明显低于具有 1-2 年经验的开发人员(62%),他们在与具有几年经验的开发人员 (73%) 相比,turn 感觉不太受欢迎。对“哪些变化会让 Go 社区更受欢迎?”这个问题的回答支持了对数据的这种解释。受访者的评论大致可分为四类:

  • 减少对精英主义的看法,特别是对于 Go 的新人(例如,“少轻视”、“少防卫和狂妄自大”)
  • 提高领导层的透明度(例如,“未来方向和规划讨论”、“减少自上而下的领导”、“更民主”)
  • 增加介绍性资源(例如,“为贡献者提供更清晰的介绍”、“学习最佳实践的有趣挑战”)
  • 更多的活动和聚会,侧重于覆盖更大的地理区域(例如,“更多聚会和社交活动”、“更多城市的活动”)

这个反馈非常有帮助,并为我们提供了可以专注于改善 Go 开发人员体验的具体领域。虽然它在我们的用户群中所占的比例并不大,但我们非常重视这些反馈,并正在努力改进每个领域。
fig22.svg
fig23.svg

总结

我们希望您喜欢看到我们 2018 年开发者调查的结果。这些结果正在影响我们 2019 年的规划,在接下来的几个月中,我们将与您分享一些想法,以解决社区为我们强调的特定问题和需求。再次感谢所有为本次调查做出贡献的人!