七叶笔记 » golang编程 » Golang 2020开发者调查报告新鲜出炉,最想要泛型

Golang 2020开发者调查报告新鲜出炉,最想要泛型

2020 Golang开发者调查报告

日前,Golang官方公布了,2020开发者调查报告,其中共有9,648人参与,我们一起来看看结果并解读学习一下。

概述

根据调查结果,主要集中几个方面的趋势和结论。

Go的总体满意度很高,92%的人都对Golang表示满意。

Go在企业和日常工作中使用率不断扩大,有76%的参与者在工作中使用Golang编程,有66%的人表示Go对项目的成功起到了关键作用。

大多数人在使用不到三个月的时间就感受到了Go的强大生产力,其中81%的人感觉到Go的生产力非常或非常高。

Go模块的采用率几乎达到了普遍水平,满意度为77%,但还需要改进文档。

大多数的人都已经升级到最新的Go版本,在前5个月中升级的比例达到了76%。

大多数人(91%)通过pkg.go.dev能找到所需Go 软件包

Go继续大量用于API,CLI,Web,DevOps和数据处理。

开发人员分布

从2019年到2020年,企业组织规模,开发人员经验和行业的分布大致相同:

企业组织规模情况

各个规模的企业都在使用Golang。绝大多数人都具有一年以上的编程经验。

其中一般的 人Golang编程经验不到一年,5-7年的也不少(15%),而且有经验的逐年增多。

开发人员的行业分布,其中一半的企业都是技术企业(46%),其次是金融服务(12%)和媒体游戏业(7%)

多数人在工作中(76%)和业余(62%)使用Go。其中职业的Go码农比例一直在上升。

今年的调查,新增加了有关主要工作职责的问题。结果,有70%的人的主要责任是开发软件和应用程序,但是相当一部分(10%)的人从事架构师职务, 负责 设计IT系统和体系结构。

和前几年数据一样,大多数人并不是Go开源项目的频繁贡献者,有75%的人“很少”或“从不”参与开源项目。

开发工具和实践

和以前一样,绝大多数的人在Linux(63%)和 macOS (55%)系统上使用Go。而主要在Linux上进行开发的人数略有下降。

编辑器使用则比较稳定, VS Code仍然是NO1最受欢迎的编辑器(41%),其次是GoLand(35%)和vim(14%)。前两者占了76%的份额,其他编辑器使用也稳定,没有再继续下降。

关于IDE的改进方面,如果他们拥有100个“ GopherCoins”(一种虚构货币),则用于IDE完善的功能,会化多少币完善的功能,其中多一半的钱都给了4个功能:代码补全,代码导航,编辑器性能和重构(10币以上)。

大多数的人(63%)会花费10-30%的时间进行系统重构,重构也是上一个调研中大家希望改善的功能之一。

针对特定的开发人员技术调查,之前发现几乎90%的人都在使用本文日志进行代码调试,今年新增加选项来发现原因。

结果有43%的人是因为它允许跨的语言使用相同的调试策略,还有42%的人更喜欢使用本文日志而不是其他调试技术。

但是,有27%的人不知道如何开始使用Go的调试工具,还有24%的人从未尝试过使用Go的调试工具,因此有机会在可发现性,可用性和文档方面改进调试器工具。此外,由于四分之一的人从未尝试使用调试工具,因此该问题可能被低估了。

开发者态度

整体满意度很好。92%的人表示,在过去一年中,对使用Go感到非常满意。

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感到很有或非常生产力。大型组织的人比小型组织的人更有效率。

93%的人表示,用了不到一年的时间,大多数人在3个月内就感觉到Go的高生产力。

尽管与去年大致相同,但同意“在Go社区中我感到受欢迎”这一说法的人的百分比似乎随着时间的推移呈下降趋势,或者至少没有与其他领域保持相同的上升趋势。还发现,认为Go的项目领导了解他们的需求的人比例(63%)比去年同期有了显著增长。

所有这些结果表明,从大约两年开始,更高的协议模式与增加的Go体验相关。换句话说,人使用Go的时间越长,越可能同意这些观点。

有一个开放文本问题,关于如果增强Go社区的受欢迎度,最常见的建议(21%)是学习资源。

使用场景

构建API/RPC服务(74%)和CLI(65%)仍然是Go的最常见用法。与去年相比,在选项的排序中引入了随机化之后,看不到任何重大变化。(在2019年之前,选择列表开头的选项不成比例。)还根据组织规模对此进行了细分,发现在大型企业或小型组织中使用Go的方式相似,尽管大型组织使用Go的可能性较小用于返回HTML的 Web服务

对调查者在家中还是在工作中使用哪种软件进行了更好的了解。尽管返回HTML的Web服务是最常见的第4个用例,但这是由于与工作无关的使用所致。与返回HTML的Web服务相比,更多的人将Go用于自动化/脚本,代理和守护程序以及用于工作的数据处理。大部分非常规用途(台式机/ GUI应用程序,游戏和移动应用程序)都是在业余场景中使用

另一个新问题是,对于各个场景,满意度如何。其中CLI的满意度最高,有85%的人表示对CLI的使用感到非常,中等或略微满意。Go的常用用法往往具有较高的满意度得分,但满意度和受欢迎程度并不完全对应。例如,代理和守护程序的满意度比例第二高,但使用率排名第六。

其他后续问题探讨了不同的用例,例如,人使用其CLI定位的平台。考虑到开发人员对Linux和macOS的大量使用以及Linux云的高使用率,Linux(93%)和macOS(59%)占据了较高的份额,但是,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%的人认为模块文档稍微有用或根本没有用,而关于CLI开发的文档比例为16%。

云化

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%),其满意程度相似。Azure的满意度较低(满意度为58%),自由文本回复经常提到需要改进Azure的Go SDK和Go对Azure功能的支持。

开发痛点

关于无法使用Go的更多原因:最大的是使用另一种语言(54%)工作,喜欢使用另一种语言的从事工作的为34%,认为Go本身缺乏关键功能的有26%。

今年,新引入了一个选项,“已经在想要的任何地方都使用了Go”,以便人可以选择不妨碍他们使用Go的选择。这大大降低了所有其他选项的选择率,但没有改变它们的相对顺序。

如果仅查看选择了不使用Go的原因的人,则可以更好地了解逐年趋势。随着时间的流逝,使用另一种语言来处理现有项目以及项目/团队/负责人对另一种语言的偏好正在减少。

认为Go缺乏所需语言功能的26%的人中,有88%的人认为缺乏 泛型 。其他重要的缺失功能还有更好的错误处理(58%),null安全性(44%),函数式编程功能(42%)和更强大/扩展的类型系统(41%)。

需要明确的是,这些数字来自一部分人,他们表示,如果不缺少所需的一个或多个关键功能,而不是整个调查人。换个话说,由于缺乏范型,有18%的人不能使用Go。

使用Go时遇到的最大挑战是Go缺乏 泛型 (18%),而模块/软件包管理以及学习曲线/最佳实践/文档的问题均占13%。

社区

今年,新增加用于回答与Go相关的问题的前5个资源。去年只要求获得前三名,因此结果无法直接比较,但是,StackOverflow仍然是最受欢迎的资源,占65%。阅读源代码(57%)仍然是另一个受欢迎的资源,而对godocorg的依赖(39%)大大减少了。软件包站pkg.go.dev是新列表,32%的人的首选。使用pkg.go.dev的人更有可能同意他们能够快速找到所需的Go软件包/库:pkg.go.dev用户为91%,其他人为82%。

多年来,未参加任何与Go相关活动的人的比例一直在上升。由于新冠疫情,有关Go活动的问题有调整,其中超过四分之一的人在在线Go频道上花费的时间比往年多,有14%的人参加了虚拟Go聚会,是去年的两倍。参加虚拟活动的人中有64%表示这是第一次虚拟活动。

12%的人选择非代表性群体(例如种族,性别认同等),与2019年相同,而2%的认同为女性,少于2019年(3%)。

认同人数不足的群体的人与不认同人数不足的群体相比,对“我在Go社区表示欢迎”这一说法的争议率更高(10% vs. 4%)。这些问题能够衡量社区的多样性,并强调外扩和成长的机会。

在辅助技术的使用,有8%的人正在使用某种形式的辅助技术。最常用的辅助技术是对比度或颜色设置(2%)。这提醒用户具有可访问性需求,并有助于在Go团队管理的网站上推动某些设计决策。

结论

可见目前Golang整体被大家广泛接受和采纳,满意度也较高。其中几个方面是云化,Web开发是Go开发的趋势,而 泛型则是 迫切需要的功能。

相关文章