Go 2017 年調查結果
Steve Francia 2018 年 2 月 26 日
謝謝
這篇文章彙整了 2017 年使用者調查的結果,以及註解和見解。它也針對 2016 年和 2017 年調查的結果,提出主要的比較。
今年我們有 6,173 個調查問卷回應,比 Go 2016 年使用者調查 中的 3,595 個問卷增加了 70%。此外,完成率也略高(84% → 87%),而且大部分問題的回應率也較高。我們相信調查問卷的長度是造成此項改善的主要原因,因為相較於我們針對 2016 年調查過長收到回饋之後的縮短,2017 年的調查問卷較短。
我們感謝所有透過調查提供回饋的人,協助我們形塑 Go 的未來。
程式設計背景
已有超過調查受訪者表示自己有寫 Go 的薪水,而這也比在工作之外寫 Go 的人還多。這表示 Go 的使用者群體有了顯著的轉變,以及公司認可它用於專業軟體開發。
回應調查的人員工作領域大多與去年一致,但行動裝置與桌上型應用程式的比例有顯著下降。
另一個重要的變化:Go 語言最主要的用途現在是撰寫 API/RPC 服務(增加了 5 %,達 65 %),超越了 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」)會省略。顯示的結果會有重疊:例如,提到「management」的 402 份回應包含了個別列出的 266 份「dependency management」和 79 份「package management」。
但是,省略幾乎或完全重複的較短項目:沒有 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% 較高的回應率。
調查受訪者表示過去一年他們對其編輯器中的 Go 支援滿意度大幅提高,滿意與不滿意的比率增加了一倍(9:1 → 18:1)。感謝所有為所有辛勤工作的 Go 編輯器支援人員。
Go 部署在私人管理伺服器和託管雲端伺服器之間大致平分。Google Cloud 服務對於 Go 應用程式來說,自 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 感興趣。