2020年Go开发者调查结果
2020年Go开发者调查结果
原文地址:https://blog.golang.org/survey2020-results
原文作者:Alice Merrick
本文永久链接:https://github.com/gocn/translator/blob/master/2021/w11GoDeveloperSurvey2020_Results.md
译者:lsj1342
校对:guzzsek
感谢您带来令人兴奋的回应!
2020年,我们的参与人数达到了9,648人,这个数据大约和2019年时一样多。感谢您抽出宝贵的时间为社区提供了有关于您在使用Go时的一些见解!
新的模块化设计调查
您可能注意到一些问题的样本量("n=")是比其他样本小的。这是因为某些问题是向所有人公开的,而另一些问题仅向随机的一部分受访者展示。
重点
Go 的使用场景和在企业中的应用正在不断地扩大,其中76%的受访者表示在工作中使用Go,并且66%的受访者表示Go语言对他们公司的成功有至关重要的作用。
总体满意度很高,其中92%的受访者在使用Go时感到满意。。
大多数的受访者在不到三个月的时间里察觉到了Go的生产力,81%的受访者觉得Go的生产力非常高或极其高。
受访者报告称约76%的人在前5个月就已迅速升级到了Go的最新版本。
使用pkg.go.dev的受访者(91%)比非使用者(82%)更能成功的找到Go软件包。
Go模块已经被普遍采用了,满意度为77%,受访者们强调还需要改进文档。
Go仍然大量用于API、CLI、Web、DevOps和数据处理。
代表性不足的群体 在社区中往往会受到较少的欢迎。
我们聆听了谁的声音?
受访者统计问题可以帮助我们辨识出,哪些年度差异是由我们的调查受访者们的情绪或行为导致的。因为我们受访者特征和去年相似,所以我们可以有把握的相信受访者特征对年度差异变化的影响不大。
例如,从2019年到2020年,组织规模、开发者的经验和行业的分布大致相同。
几乎一半(48%)的受访者使用Go的时间不到两年。到2020年,我们已经很少能收到使用Go不到一年的人对调查的回应。
大多数人表示,他们会在工作(76%)和工作外(62%)时使用Go。工作中使用Go的受访者比例逐年上升。
今年我们提出了有关主要工作职责的新问题。我们发现,有70%的受访者的主要责任是开发软件和应用,但也有相当一部分受访者正在设计IT系统和体系结构。
与往年一样,我们发现大多数受访者并不是Go开源项目的频繁贡献者,有75%的受访者表示他们“很少”或“从不”这么做。
开发人员工具和实践
与往年一样,绝大多数被调查者表示在Linux(63%)和macOS(55%)系统上使用Go。随着时间的推移,主要在Linux上进行开发的受访者比例略有下降。
编辑器的偏好似乎第一次稳定了下来:VS Code仍然是最受欢迎的编辑器(41%),其次是Goland(35%)。这两类就占据了76%的比例,其他的编辑器喜好并没有像往年一样继续下降,
今年,我们要求受访者在假设他们拥有100个“GopherCoins”(一种虚拟货币)的情况下,会花多少钱来优先改善他们的编辑器。代码自动补全功能获得的GopherCions的平均数量最高。一半的受访者表示愿意花费10个或者更多的GopherCoins来改善这四个功能(代码补全、代码导航、编辑器性能和重构)。
大多数的受访者(63%)会花费他们10-30%的时间来重构,这表明重构是一项常见任务,并且我们希望研究一些方法来改善它。这也解释了为什么编辑器支持重构是获得投币数量最多的改进之一。
去年,我们询问了一些特定的开发技能,其中接近 90% 的受访者正在使用文本日志的方式进行调试,为了找出这个问题的原因,我们今年增加了一个后续的问题。结果表明,有43%的人是因为跨语言时可以使用相同的调试策略,还有42%的人更喜欢文本记录而不是其他的调试技术。但是,有27%的人是不知道如何开始使用Go的调试工具,还有24%的人从未尝试过使用Go的调试工具,因此就有机会在发现性、可用性和文档方面来改进调试工具。此外,由于四分之一的受访者从未尝试使用调试工具,因此该痛点可能被低估。
对Go的态度
今年,我们是第一次询问人们对Go的整体满意度。92%的受访者表示,在过去的一年里,他们在使用Go时感到非常满意。
这是我们第三年问”你会推荐...“这样的净推荐值问题(NPS)。今年我们得到的NPS值为61(“推荐者”为68%,“拒绝者”为6%),结果与2019年和2018年相比没有变化。
与前几年相似,有91%的受访者表示他们更愿意将Go用于其下一个新项目。89%的人说Go在他们的团队表现很好。今年,我们看到认同Go对公司成功至关重要的受访者从2019年的59%增加到2020年的66%。在拥有5,000名或更多员工的组织中工作的受访者不太可能认同(63%),而那些在较小的组织中的受访者,更可能会认同(73%)。
与去年一样,我们要求受访者根据满意度和重要性对Go开发的特定领域进行评分。云服务,调试和模块(去年的改进重点)的满意度有所增加,而大多数重要性分数却保持不变。我们还引入了两个新主题:API和Web框架。我们看到Web框架的满意度低于其他领域(64%)。对于大多数当前用户而言,它并不是那么重要(只有28%的受访者表示它非常重要),但是对于潜在的Go开发人员来说,它可能是缺失的关键特性。
81%的受访者表示,使用Go时会感到非常高效。大型组织的受访者比小型组织的受访者更能感受到这一点。
我们听到,使用Go可以轻松快速地实现生产。我们询问了那些感受到Go的高效的受访者,他们花费多长的时间才能变得高效。93%的人说用了不到一年的时间,大多数人在3个月内就感觉到了高效。
尽管与去年大致相同,但认同“在Go社区中我感到受欢迎”这一说法的受访者的百分比似乎随着时间的推移呈下降趋势,或者至少没有与其他领域保持相同的上升趋势。
我们还发现,认为Go的项目领导理解他们需求的受访者比例逐年显著上升(63%)。
所有这些结果表明,从大约两年开始,更多的认同与Go的体验提高相关。换句话说,受访者使用Go的时间越长,他们越可能同意这些陈述。
我们询问了一个关于如何使Go社区更受欢迎的开放问题。最普遍的建议(21%)是与学习资源和文档不同形式的改进/增加相关的。
使用Go
构建API/RPC服务(74%)和CLI(65%)仍然是Go的最常见用途。与去年相比,我们在选项的排序中引入了随机化之后,看不到任何重大变化。(在2019年之前,选择列表开头的选项不成比例。)我们还根据组织规模对此进行了细分,发现受访者在大型企业或小型组织中使用Go的方式相似,尽管大型组织使用Go来做返回HTML的Web服务的可能性更小。
今年,我们对被访者在家中还是在工作中用Go写哪种软件进行了更好的了解。尽管返回HTML的Web服务是最常见的第4个用例,但这是由于与工作无关的使用所致。与返回HTML的Web服务相比,更多的受访者将Go用于自动化/脚本,代理和守护程序以及用于工作的数据处理。大部分非常规用途(台式机/ GUI应用程序,游戏和移动应用程序)是在工作以外编写的。
另一个新问题是,对于每个用例,受访者的满意度如何。CLI的满意度最高,有85%的受访者表示对Go for CLI的使用感到非常,中等或略微满意。Go的常用用法往往具有较高的满意度得分,但满意度和受欢迎程度并不完全对应。例如,代理和守护程序的满意度比例第二高,但使用率排名第六。
其他后续问题探讨了不同的用例,例如,受访者使用其CLI的平台。Linux(93%)和macOS(59%)的高占有率并不奇怪,因为开发人员对Linux、macOS和Linux云的使用率很高。但是,Windows也成为了将近三分之一的CLI开发人员的目标。
仔细研究Go的数据处理可以发现,Kafka是唯一被广泛采用的引擎,但是大多数受访者表示,他们将Go与自定义的数据处理引擎一起使用。
我们还询问了受访者使用Go的更大领域。到目前为止,最常见的领域是Web开发(68%),但其他常见的领域包括数据库(46%),DevOps(42%)网络编程(41%)和系统编程(40%)。
与去年相似,我们发现76%的受访者会评估当前的Go版本以供生产使用,但是今年我们调整了时间范围,并且发现60%的受访者在发布前或发布后2个月内开始评估新版本。这对于平台即服务提供商快速支持Go的新稳定版本方面是非常重要的。
模块
今年,我们发现Go模块几乎被普遍采用,并且仅使用模块来管理软件包的受访者比例显着增加。96%的受访者表示,他们正在使用模块进行软件包管理,而去年这一比例为89%。87%的被调查者表示他们仅使用模块来包管理,而去年为71%。同时,其他软件包管理工具的使用已经减少了。
受访者对模块的满意度相比去年也有所提高。其中77%的受访者表示,他们对模块感到非常,中度或略微满意,而这一比例在2019年为68%。
官方文档
大多数受访者表示,他们在使用官方文档时遇到困难。62%的受访者难以找到足够的信息来完全实现其应用程序的功能,并且三分之一以上的受访者则难以开始他们以前从未做过的事情。
官方文档中最有问题的领域是模块使用和CLI开发,有20%的受访者认为模块文档稍微有用或根本没有帮助,而16%的受访者面对关于CLI开发的文档也是这样认为的。
云上的Go
Go在设计时就考虑了现代的分布式计算,我们希望继续改善开发人员使用Go构建云服务的体验。
在调查受访者中,全球的三大云服务提供商(Amazon Web Services,Google Cloud Platform和Microsoft Azure)的使用率持续增加,而大多数的其他提供商在每年的调查中使用过的受访者比例都较小。尤其是Azure,已经从7%大幅增长到了12%。
作为最常见的部署目标,在自有或公司的服务器本地部署的比例也在持续降低
部署在AWS和Azure的受访者见证了部署到托管Kubernetes平台的增长,现在分别为40%和54%。Azure看到将Go程序部署到VM的用户比例显著下降,容器使用率从18%增长到25%。同时,在GCP(已经有很大比例的受访者报告了托管的Kubernetes使用情况)可以看到无服务器化的Cloud Run部署从10%增长到17%。
总体而言,大多数受访者对在三大主流云服务商提供的云上使用Go感到满意,并且统计数字与去年相比没有变化。受访者表示,对于AWS(82%的满意)和GCP(80%)上的Go开发,其满意程度相似。而Azure的满意度较低(满意度为58%),自由回复中经常提到需要改进Azure的Go SDK和对Azure功能的Go版支持。
痛点
受访者不能继续使用Go的前几个主要原因是项目使用另一种语言进行开发(54%),工作团队更喜欢使用另一种语言(34%)以及Go本身缺乏一些关键特性(26%)。
今年,我们引入了一个新选项,“我已经在想用的任何地方都使用了Go”,以便受访者可以选择不妨碍他们使用Go的选项。这大大降低了所有其他选项的选择率,但没有改变它们的相对顺序。我们还引入了一个“缺乏关键框架”选项。
如果我们仅看受访者不使用Go的原因,则可以更好地了解逐年趋势。使用另一种语言来处理现有项目和项目/团队/负责人对另一种语言的偏好正在减少。
在说Go缺乏他们所需语言特性的26%的受访者中,88%的人认为泛型是Go缺乏的关键特性。其他重要缺失的特性是需要更好地错误处理(58%),空安全(44%),函数编程(42%)以及更强大/可扩展的类型系统(41%)。
需要明确的是,这些数字来自那些认为如果Go不缺失一个或多个关键特性,会更多地使用Go的受访者子集,而不是整个受访者群体。换个角度看,由于缺乏泛型,有18%的受访者无法使用Go。
受访者报告说,使用Go时遇到的最大挑战是Go缺乏泛型(18%),而模块/软件包管理以及学习曲线/最佳实践/文档的问题均占13%。
Go社区
今年,我们向受访者询问了他们用于回答与Go相关问题的前5个资源。去年,我们只要求前三个,因此结果不能直接比较,但是,StackOverflow仍然是最受欢迎的资源,占65%。阅读源代码(57%)仍然是另一种流行的资源,而对godoc.org的依赖(39%)大大减少了。软件包发现站点pkg.go.dev是今年第一次出现在列表,是32%受访者的首选资源。使用pkg.go.dev的受访者更加认同在此能够快速找到所需的Go软件包/库:pkg.go.dev用户为91%,其他人为82%。
多年来,未参加任何与Go相关活动的受访者的比例一直在上升。由于Covid-19,今年我们修改了有关Go活动的问题,并发现超过四分之一的受访者在线上Go频道上花费的时间比往年多,有14%的人参加了Go的虚拟会议,是去年的两倍。参加虚拟活动的人中有64%表示这是他们的第一次虚拟活动。
我们发现12%的受访者认为自己属于传统上代表性不足的群体(例如,种族,性别认同等),这个结果与2019年相同,而对此认同的2%为女性,少于2019年(3%)。认同此想法的受访者与不认同的相比,对“我在Go社区表示欢迎”这一说法的异议率更高(10%vs. 4%)。这些问题使我们能够衡量社区中的多样性,并重视拓展和增长的机会。
我们今年在辅助技术的使用上又增加了一个问题,发现8%的受访者正在使用某种形式的辅助技术。最常用的辅助技术是对比度或颜色设置(2%)。这大大提醒我们,我们的用户具有访问性需求,这也有助于在Go团队管理的网站上推动我们的某些设计决策。
Go团队重视多样性和包容性,这不仅是做对的事情,还因为多样化的声音可以照亮我们的盲点,并最终使所有用户受益。根据数据隐私法规,我们询问敏感信息(包括性别和传统上代表性不足的群体)的方式已经改变,并且我们希望在未来使这些问题(尤其是有关性别多样性的问题)更具包容性。
结论
感谢您与我们一起审查2020年开发者调查结果!了解开发人员的经验和挑战可帮助我们衡量进展并指导Go的未来。再次感谢为这项调查做出贡献的每个人-没有您,我们不可能做到。希望明年见!
相关文章
Announcing the 2020 Go Developer Survey
Go Developer Survey 2019 Results
Proposals for Go 1.15
Announcing the 2019 Go Developer Survey
Contributors Summit 2019
Experiment, Simplify, Ship
Next steps toward Go 2
Go 2018 Survey Results
Go 2, here we come!
Nine years of Go
Participate in the 2018 Go User Survey
Participate in the 2018 Go Company Questionnaire
Go 2 Draft Designs
Go 2017 Survey Results
Hello, 中国!
Participate in the 2017 Go User Survey
Eight years of Go
Community Outreach Working Group
Contribution Workshop
Contributors Summit
Toward Go 2
Go 2016 Survey Results
Participate in the 2016 Go User Survey and Company Questionnaire
Go, Open Source, Community
GopherChina Trip Report
Four years of Go
Get thee to a Go meetup
Go turns three
Getting to know the Go community
The Go Programming Language turns two
Spotlight on external Go libraries
Third-party libraries: goprotobuf and beyond