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
2016 2017 The following apply to me: (multiple choice) 4,201 (67%) I prog ram at work in Go 3,935 (63%) I prog ram in Go outside of work 3,381 (54%) I prog ram at work in another language 1,001 (16%) I manage a prog ramming team 506 (8%) I am a student 113 (2%) Other 27 (0%) No res ponse The following apply to me: (multiple choice) 2,386 (66%) I prog ram in Go outside of work 2,235 (62%) I prog ram at work in Go 2,004 (56%) I prog ram at work in another language 618 (17%) I manage a prog ramming team 337 (9%) I am a student 78 (2%) Other 10 (0%) No res ponse
2016 2017 I work in the following area s: (multiple choice) 2,272 (63%) Web development 1,359 (38%) Systems prog ramming 1,251 (35%) DevOps 1,169 (33%) Network prog ramming 1,006 (28%) Databases 533 (15%) Mobile 490 (14%) Desktop/GUI applications 457 (13%) Security 435 (12%) Data Science 417 (12%) Finance/Commerce 394 (11%) Embedded devices/Interne t of Things 379 (11%) Academic/Scientific/Numeric 228 (6%) Gaming 238 (7%) Other 74 (2%) No res ponse I work in the following area s: (multiple choice) 3,807 (61%) Web development 2,319 (37%) Systems prog ramming 2,250 (36%) DevOps 1,969 (32%) Network prog ramming 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/Interne t of Things 581 (9%) Academic/Scientific/Numeric 581 (9%) Machine Learni ng/Artificial Intelligence 334 (5%) Gaming 381 (6%) Other 111 (2%) No res ponse
2016 2017 I write the following in Go: (multiple choice) 2,247 (63%) A runnable/interactive prog ram 2,174 (60%) API/RPC services 1,886 (52%) Web services 1,583 (44%) Agents and daemons 1,417 (39%) Libraries or Frameworks 1,209 (34%) Data proc essing 1,120 (31%) Automation/scripts 107 (3%) I don't write in Go 137 (4%) Other 45 (1%) No res ponse I write the following in Go: (multiple choice) 4,071 (65%) API/RPC services 3,921 (63%) A runnable/interactive prog ram 3,027 (49%) Web services 2,766 (44%) Agents and daemons 2,394 (38%) Libraries or Frameworks 2,038 (33%) Automation/scripts 2,030 (33%) Data proc essing 167 (3%) I don't write in Go 176 (3%) Other 70 (1%) No res ponse
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
2016 2017 If it were not for the following rea sons I would use Go more: 3,077 ( 31 , 14 , 4 %) I work on an existing proj ect written in another lang 2,152 ( 14 , 16 , 5 %) My proj ect / team / TL pref ers 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 approp riate for what I'm working on 643 ( 4 , 4 , 3 %) Not enough education or support res ource s for Go 311 ( 2 , 2 , 1 %) Go lacks critical performance 790 ( 5 , 4 , 3 %) Other 1,309 (21%) No res ponse If it were not for the following rea sons I would use Go more: 1,485 ( 24 , 14 , 4 %) I work on an existing proj ect written in another lang 1,160 ( 16 , 12 , 4 %) My proj ect / team / TL pref ers another language 841 ( 11 , 8 , 5 %) Go isn’t an approp riate fit for what I’m working on 596 ( 6 , 6 , 4 %) Go lacks critical libraries 412 ( 6 , 3 , 2 %) Go lacks critical features 319 ( 3 , 3 , 3 %) Not enough education or support res ource s for Go 121 ( 1 , 1 , 0.8 %) Go lacks critical performance 374 ( 4 , 3 , 3 %) Other 1,042 (29%) No res ponse
开发和部署
我们询问程序员他们在哪些操作系统上开发 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
2016 2017 My pref erred code editor 2,449 ( 27 , 13 %) VSCode 2,288 ( 22 , 14 %) Vim 1,628 ( 19 , 7 %) IntelliJ/GoLand 912 ( 7 , 8 %) Sublime Tex t 791 ( 6 , 7 %) Atom 490 ( 6 , 2 %) Emacs 274 ( 2 , 2 %) Vis ual 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 res ponse My pref erred code editor 1,359 ( 25 , 13 %) Vim 814 ( 14 , 9 %) VSCode 676 ( 10 , 9 %) Atom 687 ( 13 , 6 %) IntelliJ 655 ( 10 , 8 %) Sublime Tex t 305 ( 6 , 2 %) Emacs 137 ( 2 , 2 %) Vis ual Studio 153 ( 3 , 2 %) LiteIDE 99 ( 1 , 2 %) Eclipse 37 ( 0.5 , 0.5 %) Acme 238 ( 4 , 3 %) Other 425 (12%) No res ponse
2016 2017 My team deploys Go prog rams to: (multiple choice) 1,489 (41%) Self/Company Owned Servers 928 (26%) AWS EC2 503 (14%) None 412 (11%) Digital Ocean 292 (8%) AWS Container 221 (6%) Google Compute Engine 188 (5%) Google App Engine 161 (4%) Google Container Engine (GKE) 121 (3%) Herok u 114 (3%) Micros oft Azure 104 (3%) Linode 94 (3%) AWS Lambda 301 (8%) Other 639 (18%) No res ponse My team deploys Go prog rams 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%) Herok u 255 (4%) Micros oft Azure 183 (3%) Linode 61 (1%) Azure Container Service 51 (1%) Google Cloud Functions 13 (0%) Azure Functions 601 (10%) Other 652 (10%) No res ponse
2016 2017 My team deploys Non-Go prog rams to: (multiple choice) 1,714 (48%) Self/Company Owned Servers 1,122 (31%) AWS EC2 360 (10%) Digital Ocean 343 (10%) AWS Container 249 (7%) None 233 (6%) AWS Lambda 210 (6%) Micros oft Azure 186 (5%) Google Compute Engine 185 (5%) Herok u 115 (3%) Google Container Engine (GKE) 100 (3%) Linode 94 (3%) Google App Engine 297 (8%) Other 660 (18%) No res ponse My team deploys Non-Go prog rams 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%) Micros oft Azure 340 (5%) Herok u 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 res ponse
有效工作
我们询问人们对关于 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
,其次是defer
、func
、interface
和select
,与去年相同。
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 感兴趣。