谢谢
本帖总结了我们 2017 年度用户调查的结果,并附有评论和见解。它还对 2016 年和 2017 年调查结果进行了关键比较。
今年我们有 6,173 名调查受访者,比我们在Go 2016 年度用户调查 中的 3,595 人多 70%。此外,问卷完成率(84% → 87%)和对大多数问题的回答率也略有提高。我们认为问卷长度是这次改进的主要原因,因为 2017 年的问卷在收到关于 2016 年问卷太长的反馈后得到了缩短。
我们感谢每一位通过调查提供反馈意见的人,感谢他们为塑造 Go 的未来做出的贡献。
编程背景
这是首次有更多的调查受访者表示他们靠写 Go 来获得报酬,而不是在工作之外写 Go。这标志着 Go 的用户群发生了重大转变,以及公司对其在专业软件开发中的接受度不断提高。
受访者工作的领域与去年基本一致,但移动和桌面应用程序的使用率显著下降。
另一个重要的转变是:目前 Go 的首要用途是编写 API/RPC 服务(65%,比 2016 年增长 5%),取代了编写 Go 命令行工具(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”。显示的响应确实有重叠:例如,提到“management”的 402 条响应包括单独列出的提到“dependency management”的 266 条和单独列出的提到“package management”的 79 条。
但是,几乎或完全冗余的较短条目已被省略:没有 20 次或更多次调查列出了“dependency”但未提及“dependency management”,因此没有单独列出“dependency”的条目。
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%。
与 2016 年相比,调查受访者对编辑器中 Go 支持的满意度显著提高,满意与不满意的比例翻倍(9:1 → 18:1)。感谢所有为 Go 编辑器支持辛勤工作的人。
Go 的部署大约平均分配在私有托管服务器和云托管服务器之间。对于 Go 应用程序,与 2016 年相比,Google Cloud 服务的使用量显著增加。对于非 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 感兴趣。