Go 2017 年度调查结果
Steve Francia 2018 年 2 月 26 日
感谢
本文总结了我们 2017 年度用户调查的结果,并附带评论和见解。文章还对 2016 年和 2017 年的调查结果进行了关键比较。
今年共有 6,173 名调查参与者,比我们在Go 2016 年度用户调查 中的 3,595 名多出 70%。此外,调查的完成率也有所提高(从 84% 升至 87%),并且大多数问题的回复率也更高。我们认为调查长度是此改进的主要原因,因为 2017 年的调查根据对 2016 年调查过长的反馈进行了缩短。
我们感谢所有通过调查提供反馈,帮助塑造 Go 未来的人们。
编程背景
调查参与者中,声称因编写 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 年,我们为解决这些问题奠定了基础。我们通过新增“经验报告” (Experience Reports)改进了我们的提案和开发流程,这使得项目能够收集和获取对进行这些重大变更至关重要的反馈。我们还在 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 个。
然而,几乎或完全冗余的较短条目被省略了:没有二十份或更多调查在未提及“依赖管理”(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 持续爆炸性增长,现已成为 Gopher 中最受欢迎的编辑器。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 社区中感到受欢迎”这一陈述的结果,并按对各代表性不足类别的回复进行了细分。与整体情况类似,大多数认同自己属于代表性不足群体的受访者在 Go 社区中感受到的欢迎程度也比 2016 年显著提高。认同自己是女性的受访者显示出最显著的改进,对此陈述的同意与不同意比例增加了 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 产生兴趣。