当前位置: 首页 > 开发知识 >

2019年go语言开发者报告

作者:游戏app开发公司 阅读: 发布时间:2024-08-19 21:00

摘要:尽管这很不错而且很一致,但它忽略了并非每个人都完成调查的事实-多达40%的参与者在到达最后一页之前就停止了调查,这意味着在调查的后面出现的问题似...

原文:

在2019年,我们收到了10,975份回复,几乎是去年的两倍!我要代表团队的其他成员,充分强调您花时间和精力向我们介绍您在Go方面的经验,我们对此深表感谢。谢谢!

关于前几年的笔记

敏锐的读者可能会注意到,我们的逐年比较与我们过去分享的数字不太吻合。原因是从2016年至2018年,我们使用开始调查的总人数作为分母来计算每个问题的百分比。尽管这很不错而且很一致,但它忽略了并非每个人都完成调查的事实-多达40%的参与者在到达最后一页之前就停止了调查,这意味着在调查的后面出现的问题似乎表现得更糟,仅仅是因为他们后来才完成。因此,今年我们重新计算了所有结果(包括本文中显示的2016-2018年答复),以将回答给定问题的人数用作该问题的分母。我们以图表的形式包括了每个图表在2019年的回复数量

同样,我们了解到,在先前的调查中,在响应列表中较早出现的选项的响应率不成比例。为了解决这个问题,我们在调查中添加了随机元素。我们的一些多项选择题中包含没有逻辑顺序的选择列表,例如“我在Go中编写了以下内容:[应用程序类型列表]”。以前这些选择是按字母顺序排列的,但在2019年,它们以随机顺序呈现给每个参与者。这意味着某些问题的逐年比较在2018→2019期间无效,但2016-2018年的趋势并未无效。您可以认为这为2019年设定了更准确的基准。在受访者可能会扫描特定名称(例如其首选编辑器)的情况下,我们保留了字母顺序。

第三个主要变化是使用开放式,自由文本答复来改进我们对问题的分析。去年,我们使用机器学习对这些响应进行了大致(但很快)的分类。今年,两名研究人员对这些响应进行了手动分析和分类,从而可以进行更细致的分析,但无法与去年的数字进行有效比较。像上面讨论的随机化一样,此更改的目的是为我们提供2019年以后的可靠基准。

统计内容如何统计

今年,我们提出了一些新的人口统计问题,以帮助我们更好地了解回答此调查的人。特别是,我们询问了专业编程经验的持续时间以及人们工作的组织的规模。这些是根据StackOverflow在年度调查中提出的问题建模的,我们看到的答复分布与StackOverflow的2019年结果非常接近。我们的收获是,与StackOverflow调查的受众相比,该调查的受访者具有相似水平的专业经验和不同规模的组织的按比例代表(明显的区别是,我们主要从使用Go的开发人员那里听到)。当将这些发现推广到全世界大约100万个Go开发人员时,这增加了我们的信心。

2019年go语言开发者报告__2019年go语言开发者报告

查看golang的经验,我们发现大多数受访者(56%)对golang的使用还不到两年,它们相对较新。多数人还说,他们在工作中(72%)和工作外(62%)使用Go。专业使用Go的受访者比例似乎每年都在上升。

如您在下表中所见,2018年我们看到了这些数字的激增,但这一增长在今年消失了。这是表明2018年回答调查的受众与其他三年显着不同的众多信号之一。在这种情况下,他们更有可能在工作外使用Go并在工作时使用其他语言,但是我们在多个调查问题中看到了类似的异常值。

使用时间最长的受访者与新的Go开发人员的背景不同。这些Go老兵更有可能声称拥有C / C ++的专业知识,而不太可能声称具有JavaScript,TypeScript和PHP的专业知识。一个警告是,这是自我报告的“专业知识”。将其视为“熟悉”可能会更有用。不管他们使用Go已有多长时间,Python似乎都是大多数受访者熟悉的语言(不是Go)。

2019年go语言开发者报告__2019年go语言开发者报告

去年,我们询问了受访者从事哪些行业,发现大多数人报告曾在软件,互联网或网络服务公司工作。今年看来,受访者代表了更广泛的行业。但是,我们还简化了行业清单,以减少潜在重叠类别的混淆(例如,将2018年的“软件”和“互联网/网络服务”的单独类别合并为2019年的“技术”)。因此,这并不是严格意义上的比较。例如,简化类别列表的一个效果可能是减少“软件”类别的使用,这是为未明确列出的行业编写Go软件的被调查者提供的全部服务。

_2019年go语言开发者报告_2019年go语言开发者报告

Go是一个成功的开源项目,但这并不意味着使用它的开发人员也正在编写​​免费或开源软件。与往年一样,我们发现大多数受访者并不是Go开源项目的频繁贡献者,有75%的受访者表示他们“很少”或“从不”这样做。随着Go社区的扩展,我们发现从未为Go开源项目做出过贡献的受访者所占的比例正在缓慢上升。

2019年go语言开发者报告__2019年go语言开发者报告

开发者工具

与往年一样,绝大多数被调查者表示在Linux和macOS系统上使用Go。这是我们的受访者与StackOverflow的2019年结果之间存在很大差异的一个领域:在我们的调查中,只有20%的受访者使用Windows作为主要开发平台,而对于StackOverflow而言,这一比例为45%。Linux的使用率为66%,macOS的使用率为53%,这两者都远远高于StackOverflow的受众,后者分别报告了25%和30%。

2019年go语言开发者报告_2019年go语言开发者报告_

2019年go语言开发者报告__2019年go语言开发者报告

今年,编辑整合的趋势仍在继续。GoLand今年的使用量增长最快,从24%→34%上升。VS Code的增长速度有所放缓,但仍然是受访者中最受欢迎的编辑,占41%。现在,这四位编辑者合起来成为四分之三的受访者的首选。

其他所有编辑人员的数量都有所减少。这并不意味着根本就不会使用那些编辑器,但是它们并不是受访者说他们更喜欢用来编写Go代码的东西。

_2019年go语言开发者报告_2019年go语言开发者报告

今年,我们添加了一个有关内部Go文档工具的问题,例如gddo。少数受访者(6%)表示他们的组织运行自己的Go文档服务器,尽管当我们查看大型组织(至少有5,000名员工)的受访者时,这一比例几乎翻了一番(达到11%)。对受访者的后续询问表示他们的组织已停止运行其自己的文档服务器,这表明退休该服务器的首要原因是人们认为收益较低(23%)与最初设置该服务器所需的工作量以及保持它(38%)。

2019年go语言开发者报告_2019年go语言开发者报告_

go的盛赞

绝大多数的受访者都认为Go在他们的团队中表现良好(86%),他们更喜欢将其用于下一个项目(89%)。我们还发现,超过一半的受访者(59%)认为Go对他们公司的成功至关重要。自2016年以来,所有这些指标一直保持稳定。

对结果进行归一化改变了以前年份的大多数数字。例如,由于参与者的离职,同意“ Go对我的团队来说很好”这一说法的受访者比例以前在50年代和60年代。当我们删除从未见过该问题的参与者时,我们发现自2016年以来情况一直相当稳定。

2019年go语言开发者报告_2019年go语言开发者报告_

看看在Go生态系统中解决问题的状况,我们看到了类似的结果。很大比例的受访者同意这种说法(82%–88%),并且在过去四年中,这些比率在很大程度上保持稳定。

2019年go语言开发者报告_2019年go语言开发者报告_

今年,我们对各个行业的满意度进行了更细微的考察,以建立基准。总体而言,无论行业如何,受访者都对在工作中使用Go持积极态度。我们确实在一些领域(尤其是制造业)中看到了不满的微小变化,我们计划通过后续研究进行调查。同样,我们询问了对Go开发各个方面的满意度以及重要性。将这些措施结合在一起可以突出显示三个特别关注的主题:调试(包括调试并发),使用模块和使用云服务。大多数主题将这些主题中的每一个评为“非常”或“至关重要”,但与其他主题相比,满意度得分明显较低。

_2019年go语言开发者报告_2019年go语言开发者报告

_2019年go语言开发者报告_2019年go语言开发者报告

关于对Go社区的看法,我们发现与往年有所不同。首先,同意“在围棋社区中我感到受欢迎”这一说法的受访者比例从82%下降到75%。深入研究发现,“略微”或“中度同意”的受访者比例下降,而“既不同意又不同意”和“强烈同意”的受访者比例都增加了(分别提高了5和7点)。这种两极分化表明在围棋社区中经验不同的两个或多个群体,因此这是我们计划进一步研究的领域。

其他重大差异是,对“我很高兴为Go项目做出贡献”的回应明显呈上升趋势,并且认为Go的项目领导能理解他们的需求的受访者比例同比大幅增加。

所有这些结果表明,从大约两年开始,更高的一致性模式与增加的Go体验相关。换句话说,受访者使用Go的时间越长,他们越可能同意这些陈述。

2019年go语言开发者报告_2019年go语言开发者报告_

这可能不足为奇,但是响应Go开发者调查的人们倾向于喜欢Go。但是,我们还想了解受访者喜欢使用哪些其他语言。这些数字中的大多数与往年相比没有显着变化,只有两个例外:TypeScript(增加了10分)和Rust(增加了7分)。当按照Go体验的持续时间细分这些结果时,我们会看到与语言专业知识相同的模式。特别是,Python是Go开发人员最可能喜欢使用它的语言和生态系统。

2019年go语言开发者报告_2019年go语言开发者报告_

在2018年,我们首先提出了“您会建议...” 净发起人得分(NPS)问题,得到61分。今年,我们的NPS结果在统计上保持不变60(67%“促进者”减去7%“贬低者”)。

_2019年go语言开发者报告_2019年go语言开发者报告

2019年go语言开发者报告_2019年go语言开发者报告_

工作中使用Go

构建API / RPC服务(71%)和CLI(62%)仍然是Go的最常见用法。下图似乎显示了自2018年以来的重大变化,但这很可能是对选择顺序进行随机化的结果,该选择顺序过去按字母顺序列出:以'A'开头的4个选择中的3个减少了,而其他所有条件保持稳定或增加。因此,最好将此图表解释为具有2016-2018年趋势的2019年更准确的基线。例如,我们认为自2016年以来,构建返回HTML的Web服务的受访者比例一直在下降,但由于这一回应始终是一长串选择的最底层,因此可能被低估了。我们还按组织规模和行业划分了这一点,但没有发现显着差异:

一个相关的问题询问了受访者使用Go的更大领域。到目前为止,最常见的领域是Web开发(66%),但其他常见的领域包括数据库(45%),网络编程(42%),系统编程(38%)和DevOps任务(37%)。

_2019年go语言开发者报告_2019年go语言开发者报告

_2019年go语言开发者报告_2019年go语言开发者报告

除了受访者正在构建的内容之外,我们还询问了他们使用的一些开发技术。绝大多数受访者表示,他们依赖文本日志进行调试(88%),而他们的自由文本答复表明,这是因为替代工具难以有效使用。但是,局部逐步调试(例如,使用Delve),性能分析和使用种族检测器进行测试并不罕见,约50%的受访者取决于其中至少一种技术。

2019年go语言开发者报告__2019年go语言开发者报告

关于软件包管理,我们发现绝大多数受访者已采用Go的模块(89%)。对于开发人员来说,这是一个巨大的转变,几乎整个社区似乎都在同时经历。

2019年go语言开发者报告__2019年go语言开发者报告

我们还发现,有75%的受访者评估了当前的Go版本以供生产使用,另有12%的受访者正在等待一个发布周期。这表明大多数Go开发人员正在使用(或至少尝试使用)当前或以前的稳定版本,从而突出了平台即服务提供商快速支持Go的新稳定版本的重要性。

_2019年go语言开发者报告_2019年go语言开发者报告

走进云端

Go在设计时就考虑了现代的分布式计算,我们希望继续改善开发人员使用Go构建云服务的体验。今年,我们扩展了有关云开发的问题,以更好地了解受访者与云提供商的合作方式,他们对当前开发人员体验的满意程度以及可以改进的地方。如前所述,2018年的某些结果似乎离群值,例如自有服务器的意外低结果以及GCP部署的意外高结果。

我们看到两个明显的趋势:

三大全球云提供商(Amazon Web Services,Google Cloud Platform和Microsoft Azure)在受访者中的使用率均呈上升趋势,而大多数其他提供商每年使用的受访者比例都较小。到自有或公司拥有的服务器的本地部署继续减少,并且在统计上已与AWS(44%比42%)绑定为最常见的部署目标。

通过查看受访者使用的云平台类型,我们可以看到主要提供商之间的差异。部署到AWS和Azure的受访者最有可能直接使用VM(分别为65%和51%),而部署到GCP的受访者使用托管Kubernetes平台(GKE,64%)的可能性几乎是VM的两倍( 35%)。我们还发现,部署到AWS的受访者使用托管Kubernetes平台的可能性(32%)与使用无服务器托管平台的比率(AWS Lambda,33%)相同。GCP(17%)和Azure(7%)的受访者使用无服务器平台的比例均较低,而自由文本响应表明,主要原因是这些平台上对最新Go运行时的支持延迟。

总体而言,大多数受访者对在所有三大主要云提供商上使用Go感到满意。受访者对Go(AWS)(80%满意)和GCP(78%)的Go开发满意度表示相似。Azure的满意度较低(满意率为57%),自由文本响应表明,主要驱动因素是人们认为Go缺乏该平台上的一流支持(自由文本响应的25%)。在这里,“一流的支持”是指始终保持最新的Go版本,并确保在发布时Go开发人员可以使用新功能。这与使用GCP(14%)的受访者报告的最高痛苦点相同,并且特别关注在无服务器部署中对最新Go运行时的支持。相比之下,部署到AWS的受访者最有可能说SDK可以使用改进功能,例如更惯用(21%)。对于GCP(9%)和Azure(18%)开发人员而言,SDK改进也是第二大常见要求。

2019年go语言开发者报告_2019年go语言开发者报告_

_2019年go语言开发者报告_2019年go语言开发者报告

2019年go语言开发者报告_2019年go语言开发者报告_

痛点

受访者表示无法使用Go的主要原因(56%)仍然是使用另一种语言的项目,还是喜欢使用另一种语言的团队(37%)的团队工作,并且Go本身缺乏关键功能(25%)。

这是我们随机选择列表的问题之一,因此尽管2016-2018年的趋势是正确的,但逐年比较是无效的。例如,我们有信心由于他们的团队更喜欢另一种语言而无法更频繁地使用Go的开发人员的数量每年都在减少,但我们不知道这种减少是否会在今年急剧加速,或者始终低于我们估计的2016–2018年数字。

2019年go语言开发者报告__2019年go语言开发者报告

前两个采用阻止程序(在一个现有的非Go项目上工作以及在一个使用其他语言的团队中工作)没有直接的技术解决方案,但其余的阻止程序则可能。因此,今年我们要求提供更多详细信息,以更好地了解我们如何帮助开发人员增加对Go的使用。本节其余部分中的图表基于手动分类的自由文本响应,因此它们的尾巴很长。对于每个图表,总计少于总响应的3%的类别已归为“其他”类别。单个回答可能提到多个主题,因此图表的总和不等于100%。

在说Go缺乏所需语言功能的25%的受访者中,有79%指出仿制药是关键的缺失功能。22%的人指出错误处理的持续改进(除了Go 1.13的更改),而13%的人要求更多的功能编程功能,特别是内置的map / filter / reduce功能。需要明确的是,这些数字来自回答者的一部分,他们说如果不缺少他们需要的一个或多个关键功能,而不是整个调查对象,他们将可以使用Go more。

_2019年go语言开发者报告_2019年go语言开发者报告

表示使用Go语言不是“合适的语言”的受访者有多种原因和用例。最常见的是他们从事某种形式的前端开发(22%),例如用于Web,桌面或移动的GUI。另一个普遍的回答是,受访者说他们在一个已经占主导地位的语言(9%)的领域中工作,这使得使用其他语言成为一个挑战。一些受访者还告诉我们他们所指的是哪个域(或简单地提到一个域而不提到另一种更常见的语言),我们通过下面的“我在[域]工作”行来显示。受访者提到的另一个首要原因是需要更好的性能(9%),特别是对于实时计算。

2019年go语言开发者报告_2019年go语言开发者报告_

受访者报告的最大挑战与去年基本保持一致。Go缺乏通用性和模块/软件包管理仍然是最主要的问题(分别占响应的15%和12%),并且强调工具问题的受访者比例有所增加。这些数字与上面的图表不同,因为这个问题是所有受访者都提出的,无论他们说最大的围棋采用阻止者是什么。所有这三个都是今年Go团队关注的领域,我们希望在未来几个月中极大地改善开发人员的体验,尤其是在模块,工具和入门经验方面。

_2019年go语言开发者报告_2019年go语言开发者报告

用任何一种语言来诊断故障和性能问题都可能具有挑战性。受访者告诉我们,这两个方面的最大挑战不是Go的实现或工具特有的问题,而是一个更根本的问题:自我报告的缺乏知识,经验或最佳实践。我们希望在今年晚些时候通过文档和其他教育材料来帮助解决这些知识差距。其他主要问题的确涉及工具,尤其是在学习/使用Go的调试和概要分析工具时,在成本/收益方面存在不利的权衡取舍,以及使工具在各种环境中工作的挑战(例如,在容器中进行调试或从生产中获取性能概况)系统)。

2019年go语言开发者报告__2019年go语言开发者报告

最后,当我们问到在受访者的编辑环境中最能改善Go支持的内容时,最常见的回答是对语言服务器的总体改进或更好的支持(gopls,19%)。这是预料之中的,因为gopls替代了大约80种现存的工具,并且仍处于测试阶段。当受访者更具体地说明他们希望获得的改进时,他们最有可能报告调试经验(14%)和更快或更可靠的代码完成(13%)。许多参与者还明确提到使用gopls(8%)时需要频繁重新启动VS Code的需求;自从本次调查在现场进行以来(2019年11月下旬至12月初),许多gopls改进措施已经着手,这仍然是团队的重点工作领域。

社区

大约三分之二的受访者使用Stack Overflow来回答与Go相关的问题(64%)。答案的其他主要来源是(47%),直接阅读源代码(42%)和(33%)。

2019年go语言开发者报告_2019年go语言开发者报告_

上一张图表的长尾巴突出显示了各种不同的来源(几乎所有这些来源都是社区驱动的)和方式,受访者在使用Go进行开发时要克服挑战。确实,对于许多Gophers来说,这可能是他们与更大社区互动的主要点之一:随着我们社区的扩展,我们看到越来越多的未参加Go相关活动的受访者比例越来越高。在2019年,这一比例几乎达到了三分之二的受访者(62%)。

_2019年go语言开发者报告_2019年go语言开发者报告

由于更新了Google范围的隐私权准则,我们不再能够询问受访者居住的国家/地区。相反,我们询问了首选的口语/书面语言,以此作为Go语言在全球范围内的粗略用法,其好处是为潜在的本地化工作提供了数据。

由于本次调查是使用英语进行的,因此对于讲英语的人和英语为第二或第三种常见语言的人群可能会有很大的偏见。因此,非英语数字应解释为可能的最小值,而不是Go的全球受众的近似值。

2019年go语言开发者报告__2019年go语言开发者报告

我们发现12%的受访者认同传统上代表性不足的群体(例如种族,性别认同等),而3%的认同者为女性。(这个问题应该说的是“女性”而不是“女性”。该错误已在我们的2020年调查草案中得到纠正,对此我们深表歉意。)我们强烈怀疑这3%的人低估了围棋社区中的女性。例如,我们知道美国的女性软件开发人员对StackOverflow开发人员调查的答复率大约是根据美国就业人数预期的一半(11%vs 20%)。由于我们不知道美国的回应比例,因此无法安全地从这些数字中推断出实际比例可能高于3%。此外,GDPR要求我们改变对敏感信息的询问方式,其中包括性别和传统上代表性不足的群体。不幸的是,这些变化使我们无法将这些数字与以前的年份进行有效比较。

_2019年go语言开发者报告_2019年go语言开发者报告

识别出代表性不足的群体或宁愿不回答该问题的受访者,与不认同代表性不足的群体的受访者相比,“在社区中我感到受欢迎”这一说法的异议率更高(8%比4%)。我们持续开展宣传工作的重要性。

结论

我们希望您喜欢我们2019年开发人员调查的结果。了解开发人员的经验和挑战有助于我们计划和确定2020年的工作重点。再次感谢对本次调查做出贡献的每个人-您的反馈意见将帮助Go来年及以后的发展方向。

  • 原标题:2019年go语言开发者报告

  • 本文由游戏app开发公司小编,整理排版发布,转载请注明出处。部分文章图片来源于网络,如有侵权,请与迪集网络联系删除。
  • 微信二维码

    CLWL6868

    长按复制微信号,添加好友

    微信联系

    在线咨询

    点击这里给我发消息QQ客服专员

    点击这里给我发消息电话客服专员

    在线咨询

    免费通话


    24h咨询☎️:132-5572-7217


    🔺🔺 24小时客服热线电话 🔺🔺

    免费通话
    返回顶部