Go 部落格

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 的首要用途是編寫 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

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 條響應包括單獨列出的提到“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

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%。

與 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

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 社群中受歡迎”這一陳述的響應,將其細分到對各種代表性不足群體的響應。與整體情況一樣,大多數被認為是代表性不足的受訪者也比 2016 年感覺在 Go 社群中更受歡迎。被認為是女性的受訪者表現出最顯著的改進,同意:不同意比例增加了 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 釋出
部落格索引