感谢
这篇文章总结了我们 2018 用户调查的结果,与之前的 2016 和 2017 年的调查结果做了对比。
2018 年我们调查了来自 103 个国家的 5,883 个调查受访者。非常感谢提供反馈的每一个人,这个调查可以帮助塑造 Go 的未来。
调查结果摘要
首先,一半的调查受访者使用 Go 语言作为他们日常使用的一部分。这一年我们看到了那些使用 Go 作为他们工作一部分的受访者们在数量上有了非常大的增长。
Go 最常用做 API/RPC 服务和 CLI 工具。自动化任务虽然不像 CLI 工具和 API 服务那么常见,但却是 Go 的一个快速发展的领域。
Web 开发仍然是最常见到的领域,而 DevOps 的年增长率最高,也是现在第二常见到的领域。
绝大多数受访者表示 Go 是他们最优先选择的编程语言,尽管普遍感觉不如至少一种其他语言。
VS Code 和 GoLand 也是人气飙升,是调查受访者中最受欢迎的代码编辑器。
突出 Go 的便携性,许多 Go 开发人员使用多个主要操作系统进行开发。Linux 和 macOS 尤其受欢迎,大多数受访者使用这些操作系统中的一个或两个来编写 Go 代码。
调查受访者似乎正在从本地 Go 部署转移,并转向容器和 serverless 云部署。
大多数受访者表示他们在 Go 社区感到受欢迎,改善 Go 社区的大多数想法都专注于改善新人的体验,就是让新转到 Go 的用户可以方便的使用 Go。
编程背景
今年的调查结果显示,作为工作的一部分使用 Go 的受访者数量显着增加(68%→72%),自 2016 年首次调查以来,这一趋势一直在持续增长。我们还看到在工作之外在 Go 工作的受访者数量增加(64%→70%)。作为日常编程的一部分,在 Go 上编程的受访者数量首次达到 50%(2016 年为 44%)。作为日常生活的一部分,在 Go 上写作的受访者数量首次达到 50%(2016 年为 44%)。
为了更好的了解开发者们都在哪使用 Go,我们将结果分为三组来看:
1) 在工作中和工作之外都使用 Go 的人
2) 在工作中使用但是在工作之外不使用的人
3) 只在工作之外写 Go 的人
将近一半(46%)的受访者在工作和自己的业余时间内编写 Go 代码(自 2017 年以来增加了 10 个点),而其余的受访者则只是在工作中写 Go,或者只是在工作之外写 Go。大部分受访者在工作中使用 Go 并选择在工作之外使用它表明该语言吸引那些不将软件工程视为日常工作的开发人员,他们也选择在工作之外去 hack 一些代码,(85%的受访者表示他们更喜欢 Go 作为他们的下一个项目)Go 是他们更喜欢用于这些非工作相关项目的首选语言。
当被问及他们使用 Go 有多长时间时,参与者的答案随着时间的推移呈现出强烈的趋势,每年 2 - 4 和 4 年以上的响应中的回答率更高。这是一种较新的编程语言的预期,我们很高兴看到 Go 新手的受访者比例下降的速度比使用 Go 2 年以上的受访者比例增加的速度慢,因为这表明开发人员在最初学习语言后并没有退出生态系统。
与往年一样,Go 是受访者的首选语言并且在语言中排名第一。大多数受访者(69%)声称拥有 5 种不同语言的专业知识,强调他们对 Go 的态度受到其他编程栈体验的影响。下面的图表按照将每种语言排在最喜欢 / 理解的受访者数量(最黑的蓝色条形图)排序,其中突出显示了三个有趣的点:
虽然约有 1 / 3 的受访者认为 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 是最受欢迎的编程语言之一。
阅读数据:参与者可以对他们的前 5 种语言进行排名。对于顶级排名,颜色编码从深蓝色开始,对于每个连续排名,颜色编码变亮。这些图表按照将每种语言列为首选的参与者的百分比进行排序。
开发领域
调查受访者报告中位数为三个不同的领域,绝大多数(72%)在 2 - 5 个不同领域工作。Web 开发最为普遍,达到 65%,并且随着主要受调查地区的调查人数的增加而增加其主导地位(去年为 61%),自 2016 年以来,Web 开发一直是 Go 开发的最常见领域。今年 DevOps 显着增加,从 36%到 41%的受访者,从系统编程中取得第二名。我们没有发现 2018 年的使用率低于 2017 年的任何领域,这表明受访者正在采用 Go 进行更广泛的项目,而不是将使用从一个域转移到另一个域。
自 2016 年以来,Go 的前两个用途是编写 API/RPC 服务和开发 CLI 应用程序。虽然 CLI 使用率在三年内保持稳定在 63%,API/RPC 使用率从 2016 年的 60%增加到 2017 年的 65%,达到今天的 73%。这些领域发挥了 Go 的核心优势,并且都是云原生软件开发的核心,因此我们希望它们仍然是 Go 开发人员未来的两个主要方案。编写直接返回 HTML 的 Web 服务的受访者的百分比在 API/RPC 使用量增加时稳步下降,表明有些迁移到了 API 服务的 API/RPC 模型。另一个同比趋势表明自动化也是 Go 的一个增长领域,38%的受访者现在使用 Go 进行脚本和自动化任务(2016 年为 31%)。
为了更好地理解开发人员使用 Go 的背景,我们在不同行业中添加了关于 Go 采用的问题。对于一种相对较新的语言而言,也许不足为奇,超过一半的受访者在 Internet/web 服务和软件类公司(即科技公司)工作。其他仅有 3%回复的行业是金融,银行或保险以及媒体,广告,出版或娱乐。(在下图中,我们将响应率低于 3%的所有类别浓缩为“其他”类别。)我们将继续跟踪 Go 在各行业中的采用情况,以更好地了解技术公司以外的开发人员需求。
对 Go 的态度
今年我们添加了一个问题,询问『你有多大可能推荐给朋友或同事?』来计算我们的净推荐分数。该分数试图测量产品比“批评者”多多“促销员”,范围从 -100 到 100;正值表明大多数人可能会推荐使用产品,而负值表明大多数人可能会建议不要使用它。我们的 2018 年得分是 61(68%的推动者 – 7%的批评者),并将作为基线,帮助我们衡量社区对 Go 生态系统的情绪。
除了 NPS 之外,我们还询问了几个关于开发人员对 Go 的满意度的问题。总体而言,受访者表示满意度很高,与前几年一致。大多数人表示他们对 Go 感到满意(89%),他们更愿意将 Go 用于他们的下一个项目(85%),并且觉得它对他们的团队运作良好(66%),而多数人认为 Go 对他们公司的成功至少有些关键(44%)。虽然所有这些指标在 2017 年都有所增长,但今年仍保持稳定。
鉴于对于选择 Go 以进行未来开发的强烈情绪,我们希望了解阻止开发人员这样做的原因。自去年以来,这些基本保持不变:约有 1 / 2 的受访者使用其他语言编写的现有项目,并且⅓在一个喜欢使用不同语言的团队或项目上工作。缺少语言功能和库是受访者未使用 Go 的最常见原因。我们还询问了开发人员在使用 Go 时面临的最大挑战;与大多数调查问题不同,受访者可以输入任何他们希望回答此问题的内容。我们通过机器学习分析了结果,以确定共同主题并计算支持每个主题的响应数量。我们确定的三大挑战是:
包管理
与其他相似编程语言的差异
缺乏泛型
今年我们添加了几个关于开发人员对 Go 的不同方面的满意度的问题。调查受访者对 Go 应用程序的 CPU 性能非常满意。
对二进制大小的不满主要来自构建 CLI 的开发人员,只有 30%的人对 Go 生成的二进制文件的大小感到满意。然而,对于所有其他类型的应用程序,开发人员满意度 > 50%,并且二进制大小始终位于重要因素列表的底部。
相反,当我们看看受访者如何评价每个方面的重要性时,可调性就很突出;44%的受访者认为可调试性是他们最重要或最重要的方面,但只有 36%的受访者对当前 Go 调试状态感到满意。可调试性一直被评为与内存使用和构建速度同等重要,但满意度水平显着降低,无论受访者构建的软件类型如何,这种模式都是正确的。最新的两个 Go 版本 Go 1.11 和 1.12 都包含对可调试性的重大改进。我们计划调查开发人员今年如何更深入地调试 Go 应用程序,目标是改善 Go 开发人员的整体调试体验。
开发环境
我们询问受访者在编写 Go 代码时主要使用哪些操作系统。总体而言,41%的受访者使用多种操作系统进行 Go 开发,突出了 Go 的跨平台特性。如下图所示:
去年,VS Code 将 Vim 视为调查受访者中最受欢迎的 Go 编辑。今年,它显着扩大了其领先地位,成为我们调查受访者中超过 1 / 3 的首选编辑(去年为 27%)。GoLand 也经历了强劲的增长,现在是第二位最受欢迎的编辑,占 22%,与 Vim 交换位置(降至 17%)。VS Code 和 GoLand 的迅速普及似乎是以牺牲 Sublime Text 和 Atom 为代价的。Vim 也看到受访者的数量排名是他们的首选下降,但它仍然是最受欢迎的第二选择编辑,占 14%。有趣的是,我们发现受访者对其选择的编辑报告的满意度没有差异。
今年我们还提出了一个问题,询问哪些部署架构对 Go 开发人员最重要。不出所料,调查受访者压倒性地认为 x86/x86-64 是他们的顶级部署平台(76%的受访者将其列为最重要的部署架构,84%的受访者将其列为前 3 名)。然而,第二和第三选择架构的排名是有益的:对 ARM64(45%),WebAssembly(30%)和 ARM(22%)有很大兴趣,但对其他平台的兴趣不大。
部署和服务
对于 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)。表明 serverless 和容器正在成为越来越流行的部署平台。然而,这项服务增长似乎是由已经采用云服务的受访者推动的,因为我们发现今年至少部署到云服务的受访者百分比没有显着增长(55%→56%)。自 2016 年以来,我们也看到 Go 部署到 GCP 的稳定增长,从受访者的 12%到 19%增加。
也许与本地部署的减少有关,今年我们看到云存储成为调查受访者中使用次数最多的服务,从 32%增加到 44%。身份验证和联合服务也出现了显着增长(26%→33%)。从 Go 访问的主要服务调查受访者仍然是开源关系数据库,其中 61%→65%的受访者表示。如下图所示,服务使用量全面增加。
Go 社区
寻找 Go 问题答案的顶级社区消息来源仍然是 Stack Overflow(23%的受访者将其标记为最佳来源),Go 网站(godoc.org 为 18%,golang.org 为 14%),并阅读源代码(一般为源代码的 8%,GitHub 的 4%)。该排序与前几年基本保持一致。Go 新闻的主要来源仍然是 Go 博客,Reddit 的 r/golang,Twitter 和 Hacker News。然而,这些也是本次调查的主要分配方法,因此该结果可能存在偏差。在下面的两个图表中,我们将不到 <5% 的受访者使用的来源分组为“其他”类别。
今年,55%的受访者表示他们已经或有兴趣为 Go 社区做出贡献,略低于去年的 59%。因为贡献的两个最常见的领域(标准库和官方 Go 工具)需要与核心 Go 团队进行交互,我们怀疑这种下降可能与参与者的百分比下降有关,他们同意这些陈述“我觉得很乐意接近 Go 项目领导层的问题和反馈”(30%→25%)并且“我对 Go 的领导有信心(54%→46%)。
社区的一个重要方面是帮助每个人感到受欢迎,特别是来自传统上代表性不足的人群。为了更好地理解这一点,我们询问了一个关于几个代表性不足的群体的识别问题。2017 年,我们看到全年同比增长。对于 2018 年,我们看到相似百分比的受访者(12%)认为是代表性不足的群体的一部分,这与未被认定为代表性不足的群体的一部分的受访者百分比显着下降相配对。2017 年,对于每个被确定为代表性不足群体的人,3.5 人被确定为不属于代表性不足的群体(3.5:1 比例)。在 2018 年,该比率提高到 3.08:1。这表明 Go 社区至少保留了相同比例的代表不足的成员,甚至可能会增加。
维护一个健康的社区对于 Go 项目非常重要,因此在过去三年中我们一直在衡量开发人员在 Go 社区中受到欢迎的程度。今年,我们看到调查受访者的百分比下降,他们同意“我在 Go 社区中受到欢迎”这一说法,从 66%到 59%。
为了更好地理解这种下降趋势,我们更仔细地观察了哪些报告不太受欢迎。在传统上代表性不足的群体中,2018 年报告感觉不受欢迎的人数较少,这表明该领域的外展活动很有帮助。相反,我们发现有人使用 Go 的时间长度与他们感受到的欢迎程度之间存在线性关系:较新的 Go 开发人员对于具有 1 – 2 年经验的开发人员(62%)的欢迎程度(50%)显然不那么受欢迎,而这些开发人员反而比具有几年经验的开发人员(73%)更不受欢迎。这一数据解释得到了回答“对哪些变化会使 Go 社区更受欢迎?”这一问题的回答。受访者的意见大致可分为四类:
减少对精英主义的看法,特别是对于 Go 的新人
提高领导层的透明度
增加介绍性资源
更多活动和聚会,重点是覆盖更广阔的地理区域
这些反馈非常有用,并为我们提供了具体的领域,我们可以专注于改善成为 Go 开发人员的体验。虽然它不占我们用户群的很大一部分,但我们非常重视这些反馈,并正在努力改进每个领域。
结论
我们希望您很高兴看到我们 2018 年开发者调查的结果。这些结果影响了我们 2019 年的规划,在接下来的几个月里,我们将与您分享一些想法,以解决社区为我们强调的具体问题和需求。再次感谢为此次调查做出贡献的所有人!
By Todd Kulesza, Steve Francia 英文链接:https://blog.golang.org/surve… 翻译来源:1024 课堂