Go 博客

Go 2017 年用户调查结果

Steve Francia
2018 年 2 月 26 日

感谢

本文总结了我们 2017 年用户调查的结果,并附带评论和见解。它还对 2016 年和 2017 年调查的结果进行了关键比较。

今年我们有 6,173 名调查受访者,比 2016 年的 3,595 名受访者增加了 70%。此外,调查的完成率也略有提高(84% → 87%),大多数问题的回复率也更高。我们认为调查长度是造成这一改进的主要原因,因为 2017 年的调查缩短了,以回应反馈意见,即 2016 年的调查太长了。

我们感谢所有通过调查提供反馈的人,以帮助塑造 Go 的未来。

编程背景

首次有更多调查受访者表示他们被付费编写 Go 代码,而不是表示他们在工作之余编写 Go 代码。这表明 Go 的用户基础及其在公司专业软件开发中的接受度发生了重大转变。

受访者工作领域与去年基本一致,但移动和桌面应用程序的使用率大幅下降。

另一个重要的转变:Go 的首要用途现在是编写 API/RPC 服务(65%,比 2016 年增长 5%),取代了 Go 编写 CLI 工具(63%)的首要地位。两者都充分利用了 Go 的独特特性,并且是现代云计算的关键要素。随着越来越多的公司采用 Go,我们预计 Go 的这两种用途将继续蓬勃发展。

大多数指标证实了我们前几年学到的东西。Go 程序员仍然压倒性地偏爱 Go。随着时间的推移,Go 用户正在加深他们在 Go 方面的经验。虽然 Go 在 Go 开发人员中增加了领先优势,但编程语言的排名顺序与去年基本一致。

The following apply to me: (multiple choice) 4,201 (67%) I program at work in Go 3,935 (63%) I program in Go outside of work 3,381 (54%) I program at work in another language 1,001 (16%) I manage a programming team 506  (8%) I am a student 113  (2%) Other 27  (0%) No response

I've used Go for: (single choice) 686 (11%) Less than 3 months 1,588 (26%) 3 - 12 months 1,338 (21%) 13 - 24 months 1,678 (27%) 2 - 4 years 809 (13%) 4+ years 102  (2%) I've never used Go 25  (0%) No response

I work in the following areas: (multiple choice) 3,807 (61%) Web development 2,319 (37%) Systems programming 2,250 (36%) DevOps 1,969 (32%) Network programming 1,751 (28%) Databases 848 (14%) Security 777 (12%) Finance/Commerce 724 (12%) Data Science 696 (11%) Mobile 694 (11%) Desktop/GUI applications 647 (10%) Embedded devices/Internet of Things 581  (9%) Academic/Scientific/Numeric 581  (9%) Machine Learning/Artificial Intelligence 334  (5%) Gaming 381  (6%) Other 111  (2%) No response

I write the following in Go: (multiple choice) 4,071 (65%) API/RPC services (returning non-HTML) 3,921 (63%) A runnable/interactive program (CLI) 3,027 (49%) Web services (returning HTML) 2,766 (44%) Agents and daemons (e.g, monitoring) 2,394 (38%) Libraries or Frameworks 2,038 (33%) Automation/scripts (e.g, deployment, configuration management) 2,030 (33%) Data processing (pipeline, aggregation) 167  (3%) I don't write in Go 176  (3%) Other 70  (1%) No response

I write in Go: (single choice) 3,019 (48%) As part of my daily routine 1,802 (29%) Weekly 557  (9%) Monthly 679 (11%) Infrequently 118  (2%) I've never written in Go 51  (1%) No response

Rank the following languages in terms of your expertise 5,540 (30, 27, 17, 9, 6%) Go 3,638 (9, 16, 15, 11, 7%) JavaScript 3,369 (13, 12, 12, 10, 7%) Python 2,706 (11, 8, 8, 9, 7%) Java 2,402 (7, 8, 8, 8, 8%) C 2,020 (2, 5, 9, 10, 7%) Bash 1,631 (4, 4, 5, 7, 6%) C++ 1,475 (7, 5, 4, 4, 4%) PHP 1,042 (4, 3, 4, 3, 3%) C# 1,034 (4, 3, 3, 3, 3%) Ruby 460 (1, 1, 1, 2, 2%) Perl 284 (0.5, 0.6, 0.8, 1, 1%) Scala 278 (0.2, 0.4, 0.8, 1, 2%) Rust 260 (0.3, 0.5, 0.7, 1, 1%) Swift 223 (0.1, 0.2, 0.8, 1, 1%) Lua 185 (0.1, 0.5, 0.7, 0.8, 0.8%) Kotlin 139 (0.1, 0.2, 0.3, 0.6, 1%) Haskell 139 (0.2, 0.2, 0.4, 0.8, 0.6%) Clojure 136 (0.2, 0.3, 0.4, 0.5, 0.8%) R 124 (0.1, 0.2, 0.4, 0.6, 0.7%) Erlang 24 (0.0, 0.1, 0.0, 0.1, 0.1%) Julia 726 (3, 2, 3, 2, 2%) Other 173 (2.8%) No response

Rank the following languages in terms of your preference 5,728 (65, 18, 6, 2, 1%) Go 3,156 (7, 18, 12, 8, 4%) Python 2,463 (3, 9, 12, 8, 7%) JavaScript 1,827 (2, 7, 8, 7, 6%) C 1,764 (2, 6, 7, 7, 6%) Java 1,240 (1, 4, 5, 5, 5%) C++ 1,196 (0.6, 3, 6, 5, 5%) Bash 939 (2, 4, 4, 3, 2%) Rust 924 (2, 4, 4, 3, 2%) C# 859 (2, 4, 3, 3, 2%) Ruby 757 (0.8, 3, 3, 3, 3%) PHP 455 (1, 2, 2, 2, 0.9%) Kotlin 414 (0.7, 1, 2, 2, 1%) Swift 383 (1, 1, 1, 2, 1%) Haskell 335 (0.8, 1, 1, 1, 0.9%) Scala 305 (0.6, 1, 1, 1, 0.9%) Perl 279 (0.3, 0.8, 1, 1, 0.8%) Erlang 250 (0.1, 0.5, 1, 1, 1%) Lua 248 (0.6, 0.8, 1, 0.9, 0.6%) Clojure 113 (0.1, 0.4, 0.4, 0.5, 0.4%) R 71 (0.1, 0.2, 0.3, 0.3, 0.2%) Julia 709 (2, 3, 3, 2, 1%) Other 241 (3.9%) No response

20162017The following apply to me: (multiple choice)4,201 (67%)I program at work in Go3,935 (63%)I program in Go outside of work3,381 (54%)I program at work in another language1,001 (16%)I manage a programming team506  (8%)I am a student113  (2%)Other27  (0%)No responseThe following apply to me: (multiple choice)2,386 (66%)I program in Go outside of work2,235 (62%)I program at work in Go2,004 (56%)I program at work in another language618 (17%)I manage a programming team337  (9%)I am a student78  (2%)Other10  (0%)No response

20162017I work in the following areas: (multiple choice)2,272 (63%)Web development1,359 (38%)Systems programming1,251 (35%)DevOps1,169 (33%)Network programming1,006 (28%)Databases533 (15%)Mobile490 (14%)Desktop/GUI applications457 (13%)Security435 (12%)Data Science417 (12%)Finance/Commerce394 (11%)Embedded devices/Internet of Things379 (11%)Academic/Scientific/Numeric228  (6%)Gaming238  (7%)Other74  (2%)No responseI work in the following areas: (multiple choice)3,807 (61%)Web development2,319 (37%)Systems programming2,250 (36%)DevOps1,969 (32%)Network programming1,751 (28%)Databases848 (14%)Security777 (12%)Finance/Commerce724 (12%)Data Science696 (11%)Mobile694 (11%)Desktop/GUI applications647 (10%)Embedded devices/Internet of Things581  (9%)Academic/Scientific/Numeric581  (9%)Machine Learning/Artificial Intelligence334  (5%)Gaming381  (6%)Other111  (2%)No response

20162017I write the following in Go: (multiple choice)2,247 (63%)A runnable/interactive program2,174 (60%)API/RPC services1,886 (52%)Web services1,583 (44%)Agents and daemons1,417 (39%)Libraries or Frameworks1,209 (34%)Data processing1,120 (31%)Automation/scripts107  (3%)I don't write in Go137  (4%)Other45  (1%)No responseI write the following in Go: (multiple choice)4,071 (65%)API/RPC services3,921 (63%)A runnable/interactive program3,027 (49%)Web services2,766 (44%)Agents and daemons2,394 (38%)Libraries or Frameworks2,038 (33%)Automation/scripts2,030 (33%)Data processing167  (3%)I don't write in Go176  (3%)Other70  (1%)No response

Go 使用情况

在几乎所有关于 Go 的使用和感知的问题中,Go 都表现出比我们之前的调查有所改进。用户使用 Go 更满意,并且更大比例的用户更愿意在他们的下一个项目中使用 Go。

当被问及他们个人使用 Go 面临的最大挑战时,用户清楚地表明依赖项管理不足和泛型缺乏是他们面临的两个最大问题,这与 2016 年一致。在 2017 年,我们为此奠定了基础,以便能够解决这些问题。我们通过添加经验报告改进了我们的提案和开发流程,这使项目能够收集和获取对进行这些重大更改至关重要的反馈。我们还在 Go 获取和构建软件包的方式方面做出了重大更改。这是解决我们的依赖项管理需求所必需的基础工作。

这两个问题将在 2018 年继续成为项目的重点。

在本节中,我们提出了两个新问题。两者都围绕着开发人员如何以比我们之前提出的更细致的方式使用 Go。我们希望这些数据能够为 Go 项目和生态系统提供见解。

自去年以来,将“Go 缺乏关键特性”作为他们不更多使用 Go 的原因的人数百分比有所增加,而将“Go 不适合”作为原因的人数百分比有所下降。除了这些变化之外,列表与去年保持一致。

To what extent do you agree or disagree with the following statements: (strongly disagree, disagree, somewhat disagree, neither agree nor disagree, somewhat agree, agree, strongly agree) 5,938 (2, 0.8, 1, 2, 5, 21, 64%) I would recommend using Go to others (26:1) [32:1] 5,928 (2, 1, 2, 4, 8, 20, 58%) I would prefer to use Go for my next new project (17:1) [23:1] 4,548 (1, 0.8, 1, 7, 9, 23, 31%) Go is working well for my team (21:1) [26:1] 4,716 (5, 6, 4, 17, 14, 14, 17%) Go is critical to my company’s success (3.1:1) [3.1:1]

阅读数据:此问题询问受访者对陈述的同意或不同意程度。每个陈述的回复显示为单个条形图的一部分,从左侧深红色的“强烈不同意”到右侧深蓝色的“强烈同意”。条形图使用与其他图表相同的比例,因此由于回复不足,它们的总长度可能(并且确实会,尤其是在调查的后期)有所不同。

文本后的比率比较了同意(包括“有点同意”和“强烈同意”)的受访者人数与不同意(包括“有点不同意”和“强烈不同意”)的受访者人数。例如,同意向不同意者推荐 Go 的受访者比率为 19 比 1。第二个比率(括号内)只是一个加权比率,其中每个有点 = 1,同意/不同意 = 2,强烈 = 4。

What is the biggest challenge you personally face using Go today? 582 (9.3%) lack 489 (7.9%) generics 402 (6.5%) management 277 (4.4%) libraries 266 (4.3%) dependency management 194 (3.1%) lack of generics 159 (2.6%) package 137 (2.2%) gui 137 (2.2%) library 132 (2.1%) good 132 (2.1%) work 122 (2.0%) time 115 (1.8%) enough 114 (1.8%) error handling 113 (1.8%) type 109 (1.8%) learning 106 (1.7%) projects 104 (1.7%) hard 97 (1.6%) team 91 (1.5%) dependencies 91 (1.5%) java 87 (1.4%) c 82 (1.3%) debugging 81 (1.3%) no generics 81 (1.3%) vendoring 79 (1.3%) package management 79 (1.3%) programming 77 (1.2%) gopath 76 (1.2%) features 76 (1.2%) types 75 (1.2%) people 74 (1.2%) web 73 (1.2%) python 73 (1.2%) write 68 (1.1%) development 67 (1.1%) generic 67 (1.1%) writing 66 (1.1%) difficult 64 (1.0%) interface 64 (1.0%) tools 63 (1.0%) missing 62 (1.0%) performance 60 (1.0%) interfaces 60 (1.0%) standard 58 (0.9%) community 58 (0.9%) packages 56 (0.9%) build 56 (0.9%) well 55 (0.9%) best 55 (0.9%) cgo 55 (0.9%) debugger 55 (0.9%) ide 55 (0.9%) other languages 55 (0.9%) verbose 54 (0.9%) boilerplate 54 (0.9%) finding 54 (0.9%) learn 53 (0.9%) not enough 2,956 (47.5%) No response

阅读数据:此问题要求填写文字回复。上面的条形图显示了调查中提及常见词语或短语的比例。仅列出了出现在 20 次或更多调查中的词语或短语,并省略了“the”或“to be”等无意义的常用词语或短语。显示的结果确实存在重叠:例如,提及“管理”的 402 个回复包括单独列出的 266 个提及“依赖项管理”的回复和单独列出的 79 个提及“软件包管理”的回复。

但是,几乎或完全冗余的较短条目被省略了:没有 20 次或更多调查列出了“依赖项”而没有提及“依赖项管理”,因此没有单独的“依赖项”条目。

If it were not for the following reasons I would use Go more: 3,077 (31, 14, 4%) I work on an existing project written in another language 2,152 (14, 16, 5%) My project / team / TL prefers another language 1,218 (10, 5, 4%) Go lacks critical features 1,100 (6, 7, 4%) Go lacks critical libraries 1,056 (6, 6, 4%) Go isn't appropriate for what I'm working on 643 (4, 4, 3%) Not enough education or support resources for Go 311 (2, 2, 1%) Go lacks critical performance 790 (5, 4, 3%) Other 1,309 (21%) No response

Which of the following functionality have you implemented (multiple choice) 3,262 (52%) Writing logs/metrics 3,123 (50%) Reading/updating configuration 2,771 (45%) User login and authentication 2,748 (44%) Process to process communication 2,504 (40%) Service authentication/authorization 2,056 (33%) Health checking 1,138 (18%) Keys & secret maintenance 831 (13%) Distributed caching 532  (9%) Distributed tracing 1,269 (20%) No response

Which of the following do you access from Go: (multiple choice) 3,784 (61%) Open Source Relational DB (MySQL/PostgreSQL/CockroachDB) 2,400 (39%) Memory Cache (Redis/memcache) 2,005 (32%) Cloud Storage (S3/Google Cloud Storage/Azure Storage/Minio) 1,891 (30%) Open Source NoSQL DB (MongoDB/Cassandra) 1,606 (26%) Authentication and federation (SSO/LDAP/OAuth) 1,546 (25%) Distributed Key-Value store (etcd/consul) 657 (11%) Proprietary Relational DB (Oracle/DB2/MSSQL/Sybase) 459  (7%) Distributed Lock Service (zookeeper) 1,367 (22%) No response

20162017If it were not for the following reasons I would use Go more:3,077 (31,14,4%)I work on an existing project written in another lang2,152 (14,16,5%)My project / team / TL prefers another language1,218 (10,5,4%)Go lacks critical features1,100 (6,7,4%)Go lacks critical libraries1,056 (6,6,4%)Go isn't appropriate for what I'm working on643 (4,4,3%)Not enough education or support resources for Go311 (2,2,1%)Go lacks critical performance790 (5,4,3%)Other1,309 (21%)No responseIf it were not for the following reasons I would use Go more:1,485 (24,14,4%)I work on an existing project written in another lang1,160 (16,12,4%)My project / team / TL prefers another language841 (11,8,5%)Go isn’t an appropriate fit for what I’m working on596 (6,6,4%)Go lacks critical libraries412 (6,3,2%)Go lacks critical features319 (3,3,3%)Not enough education or support resources for Go121 (1,1,0.8%)Go lacks critical performance374 (4,3,3%)Other1,042 (29%)No response

开发和部署

我们询问程序员他们在哪些操作系统上开发 Go;他们的回复比率与去年保持一致。64% 的受访者表示他们使用 Linux,49% 使用 MacOS,18% 使用 Windows,允许选择多个选项。

VSCode 继续爆发式增长,现在是 Gophers 中最受欢迎的编辑器。IntelliJ/GoLand 的使用率也大幅提升。这些很大程度上来自 Atom 和 Sublime Text 的使用率下降。这个问题的回复率比去年高 6%。

调查受访者对编辑器中 Go 支持的满意度明显高于 2016 年,满意与不满意的比率翻倍(9:1 → 18:1)。感谢所有参与 Go 编辑器支持工作的人们,感谢你们的辛勤工作。

Go 部署大致平均分为私有管理服务器和托管云服务器。对于 Go 应用程序,Google Cloud 服务的使用率比 2016 年大幅提升。对于非 Go 应用程序,AWS Lambda 的使用率增长最大。

I primarily develop Go on: (multiple choice) 3,973 (64%) Linux 3,048 (49%) MacOS 1,151 (18%) Windows 112  (2%) Other 328  (5%) No response

My preferred code editor 2,449 (27, 13%) VSCode 2,288 (22, 14%) Vim 1,628 (19, 7%) IntelliJ/GoLand 912 (7, 8%) Sublime Text 791 (6, 7%) Atom 490 (6, 2%) Emacs 274 (2, 2%) Visual Studio 154 (1, 1%) LiteIDE 88 (0.5, 0.9%) Eclipse 67 (0.6, 0.4%) Acme 256 (3, 2%) Other 382 (6.1%) No response

How satisfied are you with Go support in your preferred editor: (very dissatisfied, dissatisfied, somewhat dissatisfied, neither satisfied or unsatisfied, somewhat satisfied, satisfied, very satisfied) 5,730 (1, 0.9, 3, 3, 16, 38, 29%) (18:1) [24:1]

My team deploys Go programs to: (multiple choice) 2,664 (43%) Self/Company Owned Servers 1,689 (27%) AWS EC2 799 (13%) None 732 (12%) AWS Container 631 (10%) Digital Ocean 596 (10%) Google Compute Engine 485  (8%) Google Container Engine (GKE) 328  (5%) Google App Engine 262  (4%) AWS Lambda 255  (4%) Heroku 255  (4%) Microsoft Azure 183  (3%) Linode 61  (1%) Azure Container Service 51  (1%) Google Cloud Functions 13  (0%) Azure Functions 601 (10%) Other 652 (10%) No response

My team deploys Non-Go programs to: (multiple choice) 2,865 (46%) Self/Company Owned Servers 2,076 (33%) AWS EC2 806 (13%) AWS Container 644 (10%) AWS Lambda 528  (8%) Google Compute Engine 527  (8%) Digital Ocean 442  (7%) None 402  (6%) Microsoft Azure 340  (5%) Heroku 327  (5%) Google Container Engine (GKE) 188  (3%) Google App Engine 159  (3%) Linode 95  (2%) Google Cloud Functions 85  (1%) Azure Container Service 50  (1%) Azure Functions 524  (8%) Other 825 (13%) No response

20162017My preferred code editor2,449 (27,13%)VSCode2,288 (22,14%)Vim1,628 (19,7%)IntelliJ/GoLand912 (7,8%)Sublime Text791 (6,7%)Atom490 (6,2%)Emacs274 (2,2%)Visual Studio154 (1,1%)LiteIDE88 (0.5,0.9%)Eclipse67 (0.6,0.4%)Acme256 (3,2%)Other382 (6.1%)No responseMy preferred code editor1,359 (25,13%)Vim814 (14,9%)VSCode676 (10,9%)Atom687 (13,6%)IntelliJ655 (10,8%)Sublime Text305 (6,2%)Emacs137 (2,2%)Visual Studio153 (3,2%)LiteIDE99 (1,2%)Eclipse37 (0.5,0.5%)Acme238 (4,3%)Other425 (12%)No response

20162017My team deploys Go programs to: (multiple choice)1,489 (41%)Self/Company Owned Servers928 (26%)AWS EC2503 (14%)None412 (11%)Digital Ocean292  (8%)AWS Container221  (6%)Google Compute Engine188  (5%)Google App Engine161  (4%)Google Container Engine (GKE)121  (3%)Heroku114  (3%)Microsoft Azure104  (3%)Linode94  (3%)AWS Lambda301  (8%)Other639 (18%)No responseMy team deploys Go programs to: (multiple choice)2,664 (43%)Self/Company Owned Servers1,689 (27%)AWS EC2799 (13%)None732 (12%)AWS Container631 (10%)Digital Ocean596 (10%)Google Compute Engine485  (8%)Google Container Engine (GKE)328  (5%)Google App Engine262  (4%)AWS Lambda255  (4%)Heroku255  (4%)Microsoft Azure183  (3%)Linode61  (1%)Azure Container Service51  (1%)Google Cloud Functions13  (0%)Azure Functions601 (10%)Other652 (10%)No response

20162017My team deploys Non-Go programs to: (multiple choice)1,714 (48%)Self/Company Owned Servers1,122 (31%)AWS EC2360 (10%)Digital Ocean343 (10%)AWS Container249  (7%)None233  (6%)AWS Lambda210  (6%)Microsoft Azure186  (5%)Google Compute Engine185  (5%)Heroku115  (3%)Google Container Engine (GKE)100  (3%)Linode94  (3%)Google App Engine297  (8%)Other660 (18%)No responseMy team deploys Non-Go programs to: (multiple choice)2,865 (46%)Self/Company Owned Servers2,076 (33%)AWS EC2806 (13%)AWS Container644 (10%)AWS Lambda528  (8%)Google Compute Engine527  (8%)Digital Ocean442  (7%)None402  (6%)Microsoft Azure340  (5%)Heroku327  (5%)Google Container Engine (GKE)188  (3%)Google App Engine159  (3%)Linode95  (2%)Google Cloud Functions85  (1%)Azure Container Service50  (1%)Azure Functions524  (8%)Other825 (13%)No response

有效工作

我们询问人们对关于 Go 的各种陈述的同意或不同意程度。所有问题都与去年相同,增加了一个新问题,我们引入它是为了进一步阐明用户如何能够找到和使用 Go 库。

所有回复都表明略有改进或与 2016 年相当。

与 2016 年一样,Go 最常请求的缺失库是用于编写 GUI 的库,但需求不如去年那么强烈。没有其他缺失库收到大量回复。

查找 Go 问题答案的主要来源是 Go 网站、Stack Overflow 和直接阅读源代码。Stack Overflow 的使用率比去年略有增加。

Go 新闻的主要来源仍然是 Go 博客、Reddit 的 /r/golang 和 Twitter;与去年一样,这里可能存在一些偏差,因为这些也是调查的发布方式。

To what extent do you agree or disagree with the following statements: (strongly disagree, disagree, somewhat disagree, neither agree nor disagree, somewhat agree, agree, strongly agree) 5,555 (1, 2, 4, 7, 27, 34, 13%) I have a good understanding of Go best practices (9.5:1) [11:1] 5,549 (0.4, 0.9, 3, 4, 17, 42, 23%) I am able to quickly find answers to my questions (21:1) [31:1] 5,528 (0.4, 0.4, 1, 2, 6, 32, 47%) Go's performance meets my needs (48:1) [80:1] 4,614 (1, 2, 4, 12, 15, 26, 13%) Go's support for language interoperability meets my needs (6.8:1) [8.8:1] 5,478 (0.8, 2, 5, 6, 24, 36, 13%) I am able to quickly find libraries that I need (8.9:1) [12:1] 5,443 (0.9, 2, 5, 7, 23, 37, 12%) The Go libraries I use have the stability and features I need (9.1:1) [12:1] 5,521 (0.8, 2, 4, 5, 17, 37, 22%) Go language, library, and tool documentation meet my needs (11:1) [16:1]

To what extent do you agree or disagree with the following statements: (strongly disagree, disagree, somewhat disagree, neither agree nor disagree, somewhat agree, agree, strongly agree) 5,446 (0.8, 2, 6, 6, 21, 37, 14%) I am able to effectively diagnose bugs in my Go programs (8.7:1) [12:1] 4,968 (0.7, 2, 6, 13, 22, 27, 9%) I am able to effectively diagnose performance issues in Go programs (6.7:1) [8.7:1] 5,319 (0.7, 2, 3, 6, 16, 35, 24%) I am able to effectively use Go’s concurrency features (goroutines, channels, select) (14:1) [21:1] 5,096 (2, 5, 8, 15, 24, 21, 7%) I am able to effectively debug uses of Go’s concurrency features (goroutines, channels, select) (3.6:1) [3.9:1]

Which Go libraries do you need that aren’t available today? 306 (4.9%) gui 221 (3.5%) library 185 (3.0%) libraries 90 (1.4%) native 83 (1.3%) good 60 (1.0%) ui 59 (0.9%) machine learning 54 (0.9%) framework 48 (0.8%) gui library 48 (0.8%) orm 48 (0.8%) processing 47 (0.8%) desktop 44 (0.7%) web 41 (0.7%) cross-platform 39 (0.6%) client 39 (0.6%) platform 37 (0.6%) standard 35 (0.6%) audio 34 (0.5%) image 34 (0.5%) mobile 33 (0.5%) sql 32 (0.5%) soap 31 (0.5%) pdf 30 (0.5%) api 30 (0.5%) package 4,578 (73.5%) No response

Rank the following in terms of where you get Go answers from: 4,337 (28, 20, 13, 6, 2%) Stack Overflow 3,791 (29, 17, 9, 4, 1%) golang.org 3,362 (13, 17, 14, 8, 2%) Reading source code (e.g., standard library, open-source packages) 2,428 (4, 11, 13, 8, 3%) GitHub 1,408 (5, 6, 6, 5, 2%) Coworkers 1,071 (2, 4, 5, 4, 2%) golang-nuts mailing list (groups.google.com/d/forum/golang-nuts) 895 (1, 2, 4, 4, 3%) Reddit (r/golang) 569 (1, 2, 2, 2, 2%) Gopher Slack (invite.slack.golangbridge.org) 432 (0.9, 1, 2, 2, 2%) Friends 283 (0.5, 0.7, 0.9, 1, 1%) Twitter 214 (0.2, 0.8, 0.8, 1, 0.6%) Go Forum (forum.golangbridge.org) 186 (0.5, 0.7, 0.7, 0.6, 0.5%) IRC 386 (2, 1, 1, 0.9, 0.7%) Other 844 (14%) No response

Rank the following in terms of where you get Go news from: 2,809 (16, 14, 9, 4, 2%) blog.Golang.org 1,838 (15, 7, 4, 3, 1%) Twitter 1,703 (12, 7, 4, 2, 1%) Reddit (r/golang) 1,617 (13, 7, 3, 2, 0.7%) Golangweekly.com 1,578 (9, 8, 5, 3, 1%) Hacker News 1,051 (2, 5, 5, 3, 2%) Community Blogs 859 (2, 4, 4, 2, 2%) GitHub 798 (4, 4, 3, 1, 0.6%) Coworkers 704 (1, 3, 3, 2, 1%) Just For Func 516 (2, 2, 2, 1, 0.7%) golang-nuts mailing list (groups.google.com/d/forum/golang-nuts) 428 (1, 2, 2, 1, 0.6%) Go Time podcast 393 (2, 2, 1, 1, 0.4%) Golangnews.com 333 (1, 1, 1, 1, 0.7%) Gopher Slack (invite.slack.golangbridge.org) 287 (1, 1, 1, 0.7, 0.4%) golang-announce (groups.google.com/d/forum/golang-announce) 120 (0.5, 0.5, 0.4, 0.2, 0.3%) Facebook 86 (0.1, 0.4, 0.4, 0.2, 0.2%) Go Forum (forum.golangbridge.org) 205 (1, 1, 0.7, 0.3, 0.1%) Other 1,040 (17%) No response

I have attended: (multiple choice) 2,497 (40%) None 1,618 (26%) A Go meetup 947 (15%) A Go themed conference (GopherCon, GothamGo, etc) 506  (8%) A Go remote meetup / online event 363  (6%) Go training 228  (4%) A technical conference for it's Go content 65  (1%) A Women Who Go event 64  (1%) A GoBridge event 58  (1%) Other 1,440 (23%) No response

Go 项目

59% 的受访者表示有兴趣以某种方式为 Go 社区和项目做出贡献,高于去年的 55%。受访者还表示,他们感觉比 2016 年更容易做出贡献。不幸的是,受访者表示,他们对如何做出贡献的理解仅略有改善。我们将积极与社区及其领导者合作,使这一流程更容易访问。

受访者对他们对 Go 项目领导层的信心表示认同有所增加(9:1 → 11:1)。他们还表示略微认同项目领导层了解他们的需求(2.6:1 → 2.8:1),并且认同他们觉得可以轻松地向项目领导层提出问题和反馈(2.2:1 → 2.4:1)。虽然取得了一些进步,但这仍然是项目及其领导层未来关注的领域。我们将继续努力提高我们对用户需求和易接近性的理解。

我们在 2017 年尝试了一些新方法来与用户互动,虽然取得了进展,但我们仍在努力使这些解决方案能够扩展以满足我们不断增长的社区的需求。

I contribute to open source projects written in Go: (single choice) 382 (6.1%) As part of my daily routine 463 (7.4%) Weekly 603 (9.7%) Monthly 2,180 (35.0%) Infrequently 1,792 (28.8%) Never 806 (12.9%) No response

I have or am interested in contributing in the following ways to the Go community and projects: (multiple choice) 1,785 (29%) Standard library 1,331 (21%) Tools (go guru, go vet, go doc, etc) 1,129 (18%) Documentation 1,115 (18%) Tutorials 967 (16%) Community support via Stack Overflow, Slack, mailing list, etc 863 (14%) Being a technical mentor 829 (13%) Community involvement (workgroups, meetup attendance) 727 (12%) Toolchain (compiler, linker, etc) 514  (8%) Go Project maintenance (issue triage) 474  (8%) Event planning (meetup, conference, etc) 433  (7%) Language translation 337  (5%) General UX & Design contributions 309  (5%) golang.org website (code, UX, IA, content, etc) 148  (2%) Other 2,553 (41%) No response

To what extent do you agree or disagree with the following statements: (strongly disagree, disagree, somewhat disagree, neither agree nor disagree, somewhat agree, agree, strongly agree) 4,091 (1, 3, 4, 19, 12, 18, 8%) I feel welcome to contribute to Go (compiler, standard library, documentation, website) (4.3:1) [5.0:1] 4,083 (3, 8, 10, 17, 11, 11, 5%) The process of contributing to the Go project is clear to me (1.3:1) [1.3:1] 3,657 (2, 3, 5, 23, 10, 13, 4%) The Go project leadership understands my needs (2.8:1) [2.8:1] 3,860 (2, 5, 6, 20, 10, 14, 6%) I feel comfortable approaching the Go project leadership with questions and feedback (2.4:1) [2.7:1] 4,351 (1, 2, 2, 12, 10, 26, 18%) I am confident in the leadership of Go (11:1) [13:1]

社区

在调查结束时,我们提出了一些人口统计学问题。

回复的国家分布与去年基本相似,略有波动。与去年一样,国家分布与 golang.org 的访问量相似,尽管一些亚洲国家在调查中仍然代表不足。

也许 2016 年最显著的改进来自一个问题,即受访者在多大程度上同意“我感觉在 Go 社区受到欢迎”这一陈述。去年,同意与不同意的比率为 15:1。2017 年,该比率几乎翻倍,达到 25:1。

社区的重要组成部分是让每个人都感到受欢迎,尤其是来自代表性不足群体的成员。我们提出了一个关于在一些代表性不足群体中身份认同的可选问题。我们的回复率比去年增长了 4%。每个代表性不足群体的百分比都比 2016 年有所增长,有些增长非常显著。

与去年一样,我们提取了“我感觉在 Go 社区受到欢迎”这一陈述的结果,并按对各种代表性不足类别的回复进行了细分。与整体情况一样,大多数自认为来自代表性不足群体的受访者也比 2016 年感觉在 Go 社区更受欢迎。自认为是女性的受访者表现出最显著的改善,同意与不同意该陈述的比率增加了 400% 以上(3:1 → 13:1)。自认为在种族或民族方面属于代表性不足群体的受访者同意与不同意该陈述的比率增加了 250% 以上(7:1 → 18:1)。与去年一样,自认为不属于代表性不足群体的受访者对该陈述的同意百分比仍然远高于自认为来自代表性不足群体的受访者。

我们对这一进展感到鼓舞,并希望这种势头能够持续下去。

调查的最后一个问题只是为了娱乐:你最喜欢的 Go 关键字是什么?也许不出所料,最受欢迎的回复是go,其次是deferfuncinterfaceselect,与去年相同。

Did you take last year's survey (single choice) 1,569 (25%) Yes 2,892 (46%) No 952 (15%) I don't remember 813 (13%) No response

To what extent do you agree or disagree with the following statement: (strongly disagree, disagree, somewhat disagree, neither agree nor disagree, somewhat agree, agree, strongly agree) 4,970 (0.5, 0.8, 1, 10, 10, 34, 22%) I feel welcome in the Go community (25:1) [33:1]

List of Countries (multiple choice) 1,561 (25%) United States of America 436  (7%) Germany 343  (6%) United Kingdom 211  (3%) Canada 200  (3%) France 174  (3%) Russia 130  (2%) Australia 113  (2%) India 110  (2%) Sweden 103  (2%) China 99  (2%) Netherlands 95  (2%) Spain 94  (2%) Brazil 89  (1%) Japan 84  (1%) Poland 62  (1%) Ukraine 58  (1%) Italy 57  (1%) Switzerland 48  (1%) Taiwan 42  (1%) Israel 873 (14%) Other 1,244 (20%) No response

We want the Go community to be inclusive; we want to see how we're doing and how to improve. Plea... (multiple choice) 2,591 (42%) I do not identify as part of an underrepresented group 790 (13%) I prefer not to answer 197  (3%) I identify as LGBTQIA 191  (3%) I identify as ethnically or racially underrepresented 164  (3%) I identify as neurodiverse or as having a disability 156  (3%) I identify with an underrepresented group not listed (please specify) 101  (2%) I identify as a woman 81  (1%) I identify as part of an underrepresented group, but I prefer not to specify 2,085 (33%) No response

Just for fun: What is your favorite Go keyword? (multiple choice) 1,627 (26%) go 856 (14%) defer 539  (9%) func 384  (6%) select 375  (6%) interface 242  (4%) range 222  (4%) chan 215  (3%) struct 114  (2%) fallthrough 96  (2%) goto 90  (1%) switch 89  (1%) type 82  (1%) for 71  (1%) map 48  (1%) import 39  (1%) if 33  (1%) package 32  (1%) return 27  (0%) var 24  (0%) continue 22  (0%) const 15  (0%) break 10  (0%) case 5  (0%) else 969 (16%) No response

Is there anything else you would like to share with us? 130 (2.1%) great 119 (1.9%) generics 104 (1.7%) love 104 (1.7%) thank you 99 (1.6%) thanks 87 (1.4%) community 58 (0.9%) programming 56 (0.9%) simple 52 (0.8%) awesome 51 (0.8%) i love 48 (0.8%) people 44 (0.7%) team 40 (0.6%) golang 38 (0.6%) keep up the good work 38 (0.6%) time 37 (0.6%) hard 37 (0.6%) languages 36 (0.6%) job 35 (0.6%) features 35 (0.6%) great work 30 (0.5%) 3 30 (0.5%) amazing 30 (0.5%) c 30 (0.5%) google 5,167 (83.0%) No response

最后,代表整个 Go 项目,我们感谢所有为我们的项目做出贡献的人,无论是作为我们伟大社区的一部分,还是参与本次调查,或者对 Go 感兴趣。

下一篇文章:Go 中软件包版本控制的提案
上一篇文章:Go 1.10 发布
博客索引