Go 部落格

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

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

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

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

Go 語言使用情況

在幾乎每個有關 Go 語言使用和觀感的問卷題目上,Go 語言都展現出比我們先前的調查有進步。使用者更滿意使用 Go 語言,而且更高的百分比偏好在他們的下一個專案中使用 Go 語言。

當被問及對他們個人使用 Go 語言時最大的挑戰為何,使用者明確傳達缺乏相依性管理和缺乏泛型是他們最大的兩個問題,這與 2016 年的情況一致。在 2017 年,我們奠定了一個基礎,以便能夠解決這些問題。我們改進了我們的建議和開發流程,加入了 經驗回報,這讓該專案能夠收集並取得對於進行這些重大變更至關重要的回饋。我們還在幕後就 Go 語言如何取得和建構套件進行了 重大變更。對於滿足我們的相依性管理需求而言,這是一項不可或缺的基礎工作。

這兩個問題將持續成為 2018 年該專案的主要焦點。

在本節中,我們詢問了兩個新問題。這兩個問題都集中在開發人員以更細緻的方式使用 Go 語言的情況,這比我們先前詢問的方式更深入。我們希望這些資料能為 Go 語言專案和生態系統提供見解。

自去年以來,認同「Go 語言缺乏重要功能」是他們不更多使用 Go 語言的原因的百分比已增加,而認同「Go 語言不適合」的百分比已下降。除了這些變更之外,清單與去年維持一致。

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

閱讀資料:這個問題詢問受訪者對於這個說法有多大的同意或不同意。每個說法的回應以單一長條圖的區段顯示,從最左端的深紅色「強烈不同意」到最右端的深藍色「強烈同意」。這些長條圖使用與所有其他圖表相同的比例,因此這些長條圖的總長度可能會(而且確實會,特別是在調查的後段)根據回應的數量而有所不同。

文字後的比率為同意(包含「有點同意」和「非常同意」)受訪者與不同意(包含「有點不同意」和「非常不同意」)受訪者的比較數字。例如,同意推薦 Go 的受訪者與不同意的受訪者比率為 19 比 1。第二個比率(括弧內)僅為加權比率,其中每個有一些是 1,同意/不同意是 2,強烈同意是 4。

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

閱讀資料:此問題要求自由的書面回應。上方的長條顯示調查中提到常見單字或詞組的分數。只有出現在 20 或更多份調查中的單字或詞組才會列出來,而沒有意義的常見單字或詞組(例如「the」或「to be」)會省略。顯示的結果會有重疊:例如,提到「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

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

開發和部署

我們詢問程式設計師他們在哪些作業系統上開發 Go;他們的回應比率與去年一致。64% 的受訪者表示他們使用 Linux,49% 使用 macOS,18% 使用 Windows,而且允許選擇多個選項。

VSCode 持續爆炸性成長,現在已是 Gophers 中最受歡迎的編輯器。IntelliJ/GoLand 的使用率也大幅成長。這主要是以犧牲 Atom 和 Sublime Text 的相對使用率作為代價。此問題較去年有 6% 較高的回應率。

調查受訪者表示過去一年他們對其編輯器中的 Go 支援滿意度大幅提高,滿意與不滿意的比率增加了一倍(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

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

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

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

有效工作

我們詢問人們有多同意或不同意關於 Go 的各種說法。所有問題都沿用去年,並增加了我們新增的一個問題,用來進一步釐清使用者如何同時尋找和使用 Go 函式庫。

所有回應都顯示出輕微改善或與 2016 年相近。

如同 2016 年一樣,Go 最常被要求提供的函式庫是寫入 GUI 的函式庫,但需求並不及去年明顯。沒有其他未提供的函式庫獲得顯著數量的回應。

尋找 Go 問題答案的主要來源為 Go 網站、Stack Overflow 以及直接閱讀原始碼。Stack Overflow 顯示較去年使用情況略有增加。

Go 新聞的主要來源仍然為 Go 部落格、Reddit 的 /r/golang 和 Twitter;如同去年,由於這些來源也是我們宣佈調查資訊的管道,因此可能有些偏頗。

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

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

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

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

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

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

Go 專案

59% 的受訪者表達有興趣以某種方式為 Go 社群及專案做出貢獻,較去年 55% 為高。受訪者也表示,他們感到比 2016 年更受到歡迎,可以做出貢獻。不幸的是,受訪者表示只有非常微小的進展,瞭解如何做出貢獻。我們將積極與社群及其領導者合作,讓這個過程更容易進行。

受訪者表示,他們對於 Go 專案的領導權抱持信心,同意度提高(9:1 → 11:1)。他們也表示,他們對於專案領導層瞭解其需求(2.6:1 → 2.8:1)以及他們感到自在,可以向專案領導層詢問問題和提供回饋(2.2:1 → 2.4:1)。即使已有進展,但這仍然是專案及其未來領導層的關注領域。我們將持續改善我們對於使用者需求和親和力的了解。

我們在 2017 年嘗試了一些 新方法,與使用者互動,即使已有進展,我們仍然在努力讓這些解法可以擴展到我們日益茁壯的社群。

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

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

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

社群

在問卷調查的最後,我們詢問了一些人口統計問題。

回應者的國家分布與去年大致相同,僅有微幅變動。如同去年,國家的分布與造訪 golang.org 的人數類似,雖然一些亞洲國家在問卷調查中仍然未被充分代表。

與 2016 年相比,最大的進步也許是詢問受訪者多麼同意這項陳述:「我感到 Go 社群歡迎我。」的題目。去年的同意與不同意比例為 15:1。2017 年這個比例幾乎成長一倍,來到 25:1。

社群中的一個重要層面是讓每個人都感到受到歡迎,特別是來自未被充分代表的人口統計。我們針對幾個未被充分代表的族群詢問了一個選答題,關於身分認同。我們的回應率與去年相比增加了 4%。每個未被充分代表族群的百分比均高於 2016 年,其中有些族群的增幅相當顯著。

與去年一樣,我們根據針對各種未被充分代表類別的回應來整理「我感到 Go 社群熱情歡迎我」這項聲明的結果。如同整體而言,大多數認定自己是未被充分代表的受訪者也感覺 Go 社群比 2016 年顯著熱情歡迎他們。認定自己是女性的受訪者表現最為顯著的進步,同意表示法:不同意表示法對這項聲明提高超過 400%(3:1 → 13:1)。認定自己是種族或民族未被充分代表的人口增加了 250% 以上(7:1 → 18:1)。與去年一樣,確定自己未被充分代表者同意這項聲明的比率仍然比來自未被充分代表群體的受訪者高出許多。

對於這項進展,我們備受鼓舞,並希望這股動能持續下去。

調查上的最後一個問題純粹只是好玩:你最喜歡的 Go 關鍵字是什麼?大概不令人意外的是,最受歡迎的答案是 go,接著是 deferfuncinterfaceselect,與去年一樣。

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

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

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

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

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

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

最後,代表整個 Go 專案,我們感謝每一位為我們的專案做出貢獻的人,無論是透過成為我們的偉大社群的一份子、進行這項調查或對 Go 感興趣。

下一篇:在 Go 中針對套件版本控制的提案
上一篇:Go 1.10 已發布
部落格索引