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

2020年Go开发者调查结果相关推荐

  1. 开源大咖齐聚2020启智开发者大会,共探深度学习技术未来趋势

    ​2020年12月2日,"OpenI/O 2020启智开发者大会"在北京国家会议中心召开.大会以"启智筑梦 开源先行"为主题,立足于国际国内开源大环境和发展趋势 ...

  2. AI:2020 科大讯飞AI开发者大赛,总奖金池180+万元!拿下比赛,大厂offer到手,那么,你还在等什么?

    AI:2020 科大讯飞AI开发者大赛,iFLYTEK热浪来袭,总奖金池180+万元!拿下比赛,大厂offer到手,那么,你还在等什么? 导读:总奖金池180+万元,除此外,还有绿色就业通道& ...

  3. 年末最大AI盛典!2020深度学习开发者峰会报名启动

    怎样的冬日,才是最美好的呢?白居易说:"绿蚁新醅酒,红泥小火炉".而对于开发者来讲,自然便是"WAVE SUMMIT+,狂欢与AI". 没错,就在12月20日, ...

  4. “开源、共享、创新” 2020 中国.NET开发者大会小结

    大会的新闻稿在2020年12月31日正式发布:开源·共享·创新|2020年中国.NET开发者大会圆满收官! , 本文是这篇新闻的补充性文章,仅代表个人对大会的各方面分享内容的一个小结. 在2019年上 ...

  5. 一站式服务助力研发 2020 Ohayoo游戏开发者沙龙广州站成功揭幕

    11月5日,Ohayoo首期"2020 Ohayoo游戏开发者沙龙"活动广州站完满落幕.活动邀请了广州各游戏研发团队,与Ohayoo商务经理金男佶.Ohayoo华南区发行负责人马森 ...

  6. 技术人员的狂欢 | 看雪2020第四届安全开发者峰会顺利落幕

    在5G新基建的浪潮下,网络攻击手段不断升级,攻击范围也扩大到各个领域,新时代的网络安全将面临更复杂严峻的挑战. 10月23日,看雪2020第四届安全开发者峰会(看雪2020 SDC)顺应时代的变化,聚 ...

  7. 2020 Ohayoo游戏开发者沙龙成都站将于10月22日正式启动

    2020 Ohayoo游戏开发者沙龙成都站将于10月22日正式启动 10月22日起,Ohayoo将在成都.厦门.广州.北京.上海等多个城市举办"2020 Ohayoo游戏开发者沙龙" ...

  8. 2020启智开发者大会在京隆重开幕,千万激励奖金首批评选揭晓

    2020年12月2日上午9时,为期两天,旨在汇智聚源的 OpenI/O 2020启智开发者大会在北京·国家会议中心正式拉开帷幕.中国工程院院士.新一代人工智能产业技术创新战略联盟理事长.鹏城实验室主任 ...

  9. OpenI/O 2020 启智开发者大会!启智筑梦远航,千万激励奖金助力开发者“智”造更多新可能

    为促进新一代人工智能开源开放平台的建设,鼓励开发者积极参与启智社区工作,形成尊重贡献.尊重人才的良好氛围,构建健康持续可发展的开源生态体系,启智社区汇集多方专业力量,发起了启智社区优秀开发者激励活动. ...

最新文章

  1. 云计算VDI相关职位招聘
  2. Java 理论与实践: 流行的原子——新原子类是 java.util.concurrent 的隐藏精华(转载)...
  3. Python处理word文件
  4. java运算符 —(5)
  5. android按任意建关闭对话框,Android: 创建一个AlertDialog对话框,必须按确定或取消按钮才能关闭对话框,禁止按[返回键]或[搜索键]关闭...
  6. Win11掉帧严重是怎么回事?Win11玩游戏掉帧的解决方法
  7. 2017 ACM/ICPC Asia Regional Beijing Online 记录
  8. linux内核与用户之间的通信方式——虚拟文件系统、ioctl以及netlink .
  9. 联想计算机不能使用ghost,联想电脑不能GHOST的解决方法
  10. 拉普拉斯变换与拉普拉斯逆变换的常用结论与经典公式
  11. “拼多多”的假面人生
  12. 缺省的linux系统中,linux缺省的文件系统是
  13. python 一键登录126邮箱
  14. web安全:X老师上课讲了Robots协议,小宁同学却上课打了瞌睡,赶紧来教教小宁Robots协议是什么吧
  15. 从后端到前端,JavaScript和Java有关系吗
  16. python游戏初探:拍子打小球
  17. 《黑客帝国:矩阵重启》科幻经典回归,你会选择红色药丸还是蓝色药丸
  18. 双系统中删除linux(win7适用)
  19. 线性回归方程参数的最小二乘估计
  20. 如何使用python提取dwg文件中的坐标信息

热门文章

  1. MYSQL 查询语句经典例子
  2. java沙漠雪山第三关木乃伊,龙珠最强之战占卜婆婆的仆人全关卡通关攻略汇总分享...
  3. ItemDataBound 事件中获取行的值
  4. 高中生使用计算机情况调查,关于家用电脑对高中生学习影响的调查
  5. 计算机模拟应用,计算机模拟的新应用
  6. java堆、栈、堆栈,常量池的区别,史上最全总结
  7. 【Apache】Web 服务器配置与 FTP 服务器配置
  8. 【知乎高赞】在一线城市有很多套房,是什么体验?
  9. 关于面试总结-app测试面试题
  10. mysql双主和主从的区别_MySQL群集,主从复制及双主模式