Go语言2018年度调查结果报告
感谢
这篇文章总结了我们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课堂