Blog Go

Kết quả Khảo sát Go 2016

Steve Francia, for the Go team
6 March 2017

Cảm ơn

Bài đăng này tóm tắt kết quả khảo sát người dùng tháng 12 năm 2016 cùng với các nhận xét và phân tích của chúng tôi. Chúng tôi biết ơn tất cả mọi người đã cung cấp phản hồi qua khảo sát để giúp định hình tương lai của Go.

Nền tảng lập trình

Trong số 3.595 người tham gia khảo sát, 89% cho biết họ lập trình bằng Go tại nơi làm việc hoặc bên ngoài công việc, trong đó 39% dùng Go cả ở nhà lẫn ở nơi làm việc, 27% chỉ dùng Go ở nhà, và 23% chỉ dùng Go ở nơi làm việc.

Chúng tôi hỏi về các lĩnh vực mà mọi người làm việc. 63% cho biết họ làm trong phát triển web, nhưng chỉ 9% liệt kê phát triển web là lĩnh vực duy nhất. Trên thực tế, 77% chọn hai hoặc nhiều lĩnh vực hơn, và 53% chọn ba lĩnh vực trở lên.

Chúng tôi cũng hỏi về loại chương trình mọi người viết bằng Go. 63% người tham gia viết chương trình dòng lệnh, 60% viết dịch vụ API hoặc RPC, và 52% viết dịch vụ web. Giống như câu hỏi trước, hầu hết đều chọn nhiều lựa chọn, với 85% chọn hai hoặc nhiều hơn và 72% chọn ba hoặc nhiều hơn.

Chúng tôi hỏi về mức độ thành thạo và sở thích của mọi người trong các ngôn ngữ lập trình. Không có gì đáng ngạc nhiên, Go xếp hạng cao nhất trong lựa chọn đầu tiên của người tham gia ở cả mức độ thành thạo (26%) và sở thích (62%). Nếu loại trừ Go, năm lựa chọn đầu tiên về mức độ thành thạo ngôn ngữ là Python (18%), Java (17%), JavaScript (13%), C (11%) và PHP (8%); và năm lựa chọn đầu tiên về ngôn ngữ ưa thích là Python (22%), JavaScript (10%), C (9%), Java (9%) và Ruby (7%). Rõ ràng Go đang thu hút nhiều lập trình viên từ các ngôn ngữ động.

The following apply to me: (multiple choice) 2,386 (66%) I program in Go outside of work 2,235 (62%) I program at work in Go 2,004 (56%) I program at work in another language 618 (17%) I manage a programming team 337  (9%) I am a student 78  (2%) Other 10  (0%) No response

Reading the data: This question was “multiple choice,” so the percentages add up to well over 100%. All graphs in this post show both the total count and the corresponding percentage of the 3,595 surveys completed.

I work in the following areas: (multiple choice) 2,272 (63%) Web development 1,359 (38%) Systems programming 1,251 (35%) DevOps 1,169 (33%) Network programming 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/Internet of Things 379 (11%) Academic/Scientific/Numeric 228  (6%) Gaming 238  (7%) Other 74  (2%) No response

I've used Go for: (single choice) 432 (12%) Less than 3 months 1,009 (28%) 3 - 12 months 829 (23%) 13 - 24 months 903 (25%) 2 - 4 years 321  (9%) 4+ years 77  (2%) I've never used Go 24  (1%) No response

I write the following in Go: (multiple choice) 2,247 (63%) A runnable/interactive program (CLI) 2,174 (60%) API/RPC services (returning non-HTML) 1,886 (52%) Web services (returning HTML) 1,583 (44%) Agents and daemons (e.g, monitoring) 1,417 (39%) Libraries or Frameworks 1,209 (34%) Data processing (pipeline, aggregation) 1,120 (31%) Automation/scripts (e.g, deployment, configuration management) 107  (3%) I don't write in Go 137  (4%) Other 45  (1%) No response

I write in Go: (single choice) 1,567 (44%) As part of my daily routine 1,054 (29%) Weekly 486 (14%) Infrequently 368 (10%) Monthly 77  (2%) I've never written in Go 43  (1%) No response

Rank the following languages in terms of your expertise: (ordered choice, up to 5) 3,111 (26, 26, 19, 10, 5%) Go 2,048 (8, 15, 14, 11, 8%) JavaScript 1,896 (12, 12, 10, 10, 7%) Python 1,618 (13, 8, 8, 8, 8%) Java 1,512 (8, 8, 9, 9, 7%) C 1,064 (2, 4, 7, 8, 8%) Bash 1,039 (5, 5, 7, 6, 6%) C++ 830 (6, 4, 4, 5, 4%) PHP 668 (5, 4, 3, 4, 3%) Ruby 622 (5, 3, 3, 4, 3%) C# 294 (2, 1, 2, 2, 2%) Perl 184 (1, 1, 1, 1, 1%) Scala 156 (0, 0, 1, 1, 2%) Rust 142 (0, 0, 1, 1, 1%) Lua 136 (0, 0, 0, 1, 2%) Haskell 94 (0, 0, 0, 1, 1%) R 93 (0, 0, 0, 1, 1%) Clojure 72 (0, 0, 0, 0, 1%) Erlang 18 (0, 0, 0, 0, 0%) Julia 499 (2, 3, 3, 3, 3%) Other 134 (3.7%) No response

Reading the data: This question was “ordered choice.” The first, second, third, fourth, and fifth choices are displayed as progressively lighter sections of the bars. The total count shown next to the bar is for all choices; the percentage list shows how the choices are divided.

Rank the following languages in terms of your preference: (ordered choice, up to 5) 3,248 (62, 19, 6, 2, 1%) Go 1,796 (7, 17, 12, 9, 5%) Python 1,482 (3, 9, 13, 10, 8%) JavaScript 1,235 (2, 8, 9, 9, 6%) C 1,167 (3, 7, 8, 7, 7%) Java 809 (2, 4, 6, 6, 5%) C++ 647 (1, 3, 5, 5, 5%) Bash 563 (3, 5, 4, 3, 2%) Ruby 557 (2, 4, 4, 3, 2%) C# 475 (2, 4, 3, 3, 2%) Rust 449 (1, 2, 3, 3, 3%) PHP 278 (1, 2, 2, 2, 1%) Haskell 215 (1, 1, 1, 1, 1%) Perl 214 (1, 1, 1, 1, 1%) Scala 178 (0, 1, 2, 2, 1%) Lua 168 (0, 1, 1, 1, 1%) Erlang 156 (1, 1, 1, 1, 1%) Clojure 79 (0, 0, 0, 1, 1%) R 43 (0, 0, 0, 0, 0%) Julia 507 (3, 4, 4, 2, 1%) Other 166 (4.6%) No response

Sử dụng Go

Người dùng hài lòng với Go một cách áp đảo: họ đồng ý rằng họ sẽ giới thiệu Go cho người khác theo tỷ lệ 19:1, rằng họ muốn dùng Go cho dự án tiếp theo (14:1), và rằng Go đang hoạt động tốt cho nhóm của họ (18:1). Ít người dùng hơn đồng ý rằng Go là thiết yếu cho sự thành công của công ty họ (2,5:1).

Khi được hỏi điều gì họ thích nhất về Go, người dùng thường đề cập nhiều nhất đến sự đơn giản, dễ sử dụng, tính năng đồng thời và hiệu suất của Go. Khi được hỏi những thay đổi nào sẽ cải thiện Go nhiều nhất, người dùng thường đề cập nhiều nhất đến generics, phiên bản gói và quản lý dependency. Các phản hồi phổ biến khác bao gồm giao diện đồ họa (GUI), gỡ lỗi và xử lý lỗi.

Khi được hỏi về những thách thức lớn nhất trong việc sử dụng Go cá nhân, người dùng đề cập đến nhiều thay đổi kỹ thuật được gợi ý trong câu hỏi trước. Các chủ đề phổ biến nhất trong các thách thức phi kỹ thuật là thuyết phục người khác dùng Go và truyền đạt giá trị của Go cho người khác, bao gồm cả cấp quản lý. Một chủ đề phổ biến khác là học Go hoặc giúp người khác học, bao gồm tìm kiếm tài liệu như hướng dẫn bắt đầu, các bài hướng dẫn, ví dụ và thực hành tốt nhất.

Một số phản hồi tiêu biểu, đã được diễn đạt lại để đảm bảo bảo mật:

“The documentation is not clear enough for beginners. It needs more examples and often assumes experience with other languages and various computer science topics.”

“I want to use Go at work but struggle to convince my team to even try Go.”

“I can’t get management approval to use Go; they don’t see its value and worry about adoption and finding developers.”

Chúng tôi đánh giá cao phản hồi được cung cấp để xác định những thách thức mà người dùng và cộng đồng của chúng tôi đang đối mặt. Trong năm 2017, chúng tôi tập trung vào việc giải quyết những vấn đề này và hy vọng sẽ thực hiện được nhiều cải tiến đáng kể nhất có thể. Chúng tôi chào đón các đề xuất và đóng góp từ cộng đồng để biến những thách thức thành điểm mạnh cho Go.

To what extent do you agree or disagree with the following statements: (strongly disagree, disagree, somewhat disagree, neutral, somewhat agree, agree, strongly agree) 3,250 (2, 1, 1, 2, 5, 21, 57%) I would recommend using Go to others (19:1) 3,219 (3, 1, 2, 4, 8, 19, 52%) I would prefer to use Go for my next new project (14:1) 2,325 (1, 1, 1, 7, 8, 25, 22%) Go is working well for my team. (18:1) 2,336 (4, 7, 3, 14, 12, 12, 12%) Go is critical to my company's success. (2.5:1)

Reading the data: This question asked how strongly the respondent agreed or disagreed with the statement. The responses for each statement are displayed as sections of a single bar, from “strongly disagree” in deep red on the left end to “strongly agree” in deep blue on the right end. The bars use the same scale as the rest of the graphs, so they can (and do, especially later in the survey) vary in overall length due to lack of responses. The ratio after the text compares the number of respondents who agreed (including “somewhat agree” and “strongly agree”) to those who disagreed (including “somewhat disagree” and “strongly disagree”). For example, the ratio of respondents agreeing that they would recommend Go to respondents disagreeing was 19 to 1.

What do you like most about Go? 595 (17%) simplicity 543 (15%) easy 523 (15%) concurrency 495 (14%) simple 454 (13%) fast 293  (8%) syntax 287  (8%) standard library 286  (8%) tooling 270  (8%) static 266  (7%) performance 235  (7%) speed 202  (6%) interfaces 184  (5%) channels 183  (5%) community 180  (5%) good 177  (5%) compilation 177  (5%) goroutines 167  (5%) binary 156  (4%) great 148  (4%) tools 146  (4%) compiled 137  (4%) compile 127  (4%) type 124  (3%) small 118  (3%) c 114  (3%) gofmt 114  (3%) libraries 88  (2%) clean 87  (2%) easy to learn 82  (2%) deployment 78  (2%) memory 78  (2%) strong 76  (2%) concise 76  (2%) single binary 73  (2%) low 73  (2%) static typing 71  (2%) build 68  (2%) easy to read 63  (2%) fast compilation 56  (2%) simple syntax 55  (2%) type system 54  (2%) simple language 51  (1%) easy concurrency 47  (1%) static binaries 46  (1%) go fmt 45  (1%) fast compile 43  (1%) small language 41  (1%) error handling 39  (1%) concurrency model 39  (1%) go routines 38  (1%) easy to use 38  (1%) statically typed 36  (1%) cross platform 35  (1%) concurrency primitives 35  (1%) goroutines channels 33  (1%) easy to write 27  (1%) great standard library 23  (1%) ease of use 940 (26%) No response

Reading the data: This question asked for write-in responses. The bars above show the fraction of surveys mentioning common words or phrases. Only words or phrases that appeared in twenty or more surveys are listed, and meaningless common words or phrases like “the” or “to be” are omitted. The displayed results do overlap: for example, the 287 responses that mentioned “standard library” do include the 27 listed separately that mentioned “great standard library.” However, nearly or completely redundant shorter entries are omitted: there are not twenty or more surveys that listed “standard” without mentioning “standard library,” so there is no separate entry for “standard.”

What changes would improve Go most? 572 (16%) generics 451 (13%) management 330  (9%) dependency 314  (9%) package 266  (7%) dependency management 164  (5%) library 159  (4%) gui 134  (4%) package management 134  (4%) vendoring 128  (4%) debugger 126  (4%) libraries 122  (3%) standard 117  (3%) type 109  (3%) error 94  (3%) system 89  (2%) types 88  (2%) official 85  (2%) tools 84  (2%) c 82  (2%) gopath 78  (2%) performance 70  (2%) error handling 70  (2%) ide 69  (2%) package manager 66  (2%) documentation 66  (2%) faster 64  (2%) good 63  (2%) simple 63  (2%) tool 62  (2%) mobile 60  (2%) debugging 57  (2%) build 56  (2%) packages 55  (2%) easier 55  (2%) standard library 55  (2%) tooling 54  (2%) interface 51  (1%) dependencies 51  (1%) generic 48  (1%) programming 48  (1%) versioning 47  (1%) syntax 45  (1%) compile 45  (1%) solution 44  (1%) framework 43  (1%) examples 43  (1%) gc 43  (1%) type system 42  (1%) gui library 41  (1%) templates 40  (1%) android 40  (1%) community 40  (1%) function 40  (1%) native 40  (1%) ui 40  (1%) web 39  (1%) functions 21  (1%) cross platform 1,215 (34%) No response

What is the biggest challenge you personally face using Go today? 249 (6.9%) lack 206 (5.7%) management 146 (4.1%) libraries 129 (3.6%) generics 127 (3.5%) dependency management 84 (2.3%) work 78 (2.2%) package 76 (2.1%) hard 68 (1.9%) time 67 (1.9%) good 67 (1.9%) java 66 (1.8%) gui 61 (1.7%) web 60 (1.7%) c 60 (1.7%) debugging 59 (1.6%) vendoring 58 (1.6%) projects 56 (1.6%) lack of generics 56 (1.6%) library 51 (1.4%) type 51 (1.4%) write 50 (1.4%) finding 49 (1.4%) ide 49 (1.4%) packages 48 (1.3%) dependencies 46 (1.3%) package management 45 (1.3%) debugger 44 (1.2%) adoption 42 (1.2%) people 41 (1.1%) learning 41 (1.1%) team 40 (1.1%) convincing 40 (1.1%) tools 39 (1.1%) error handling 39 (1.1%) interfaces 39 (1.1%) other languages 39 (1.1%) writing 38 (1.1%) interface 38 (1.1%) others 37 (1.0%) python 35 (1.0%) find 35 (1.0%) gopath 35 (1.0%) programming 34 (0.9%) can't 34 (0.9%) standard 33 (0.9%) build 33 (0.9%) tooling 32 (0.9%) generic 31 (0.9%) boilerplate 30 (0.8%) applications 30 (0.8%) developers 30 (0.8%) having 30 (0.8%) types 30 (0.8%) working 26 (0.7%) at work 26 (0.7%) using go 22 (0.6%) no generics 20 (0.6%) not enough 1,581 (44.0%) No response

If it were not for the following reasons I would use Go more: (ordered choice, up to 3) 1,485 (24, 14, 4%) I work on an existing project written in another language 1,160 (16, 12, 4%) My project / team / TL prefers another language 841 (11, 8, 5%) Go isn’t an appropriate fit for what I’m working on (eg. iOS, JS) 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 resources for Go 121 (1, 1, 1%) Go lacks critical performance 374 (4, 3, 3%) Other 1,042 (29%) No response

If you desire, please elaborate on your reasons above. 58 (1.6%) c 58 (1.6%) java 58 (1.6%) libraries 50 (1.4%) python 47 (1.3%) web 45 (1.3%) generics 45 (1.3%) work 40 (1.1%) projects 34 (0.9%) languages 33 (0.9%) hard 32 (0.9%) lack 32 (0.9%) team 31 (0.9%) library 31 (0.9%) people 29 (0.8%) gui 25 (0.7%) good 25 (0.7%) performance 24 (0.7%) mobile 24 (0.7%) written 23 (0.6%) programming 23 (0.6%) time 22 (0.6%) golang 20 (0.6%) company 20 (0.6%) existing 20 (0.6%) great 20 (0.6%) php 20 (0.6%) tools 3,033 (84.4%) No response

Phát triển và triển khai

Khi được hỏi hệ điều hành nào họ dùng để phát triển Go, 63% người tham gia cho biết họ sử dụng Linux, 44% dùng MacOS và 19% dùng Windows, với nhiều lựa chọn được phép và 49% người tham gia phát triển trên nhiều hệ thống. 51% phản hồi chỉ chọn một hệ thống, phân bổ thành 29% trên Linux, 17% trên MacOS, 5% trên Windows và 0,2% trên các hệ thống khác.

Triển khai Go phân bổ tương đối đều nhau giữa các máy chủ do tư nhân quản lý và các máy chủ đám mây được thuê ngoài.

I primarily develop Go on: (multiple choice) 2,263 (63%) Linux 1,592 (44%) MacOS 682 (19%) Windows 82  (2%) Other 434 (12%) No response

My preferred code editor: (ordered choice, up to 2) 1,359 (25, 13%) Vim 814 (14, 9%) VSCode 676 (10, 9%) Atom 687 (13, 6%) IntelliJ 655 (10, 8%) Sublime Text 305 (6, 2%) Emacs 137 (2, 2%) Visual Studio 153 (3, 2%) LiteIDE 99 (1, 2%) Eclipse 37 (1, 1%) Acme 238 (4, 3%) Other 425 (12%) No response

How satisfied are you with Go support in your preferred editor: (single choice) 69 (1.9%) Very Dissatisfied 52 (1.4%) Dissatisfied 164 (4.6%) Somewhat Dissatisfied 134 (3.7%) Neither Satisfied or Unsatisfied 609 (16.9%) Somewhat Satisfied 1,258 (35.0%) Satisfied 838 (23.3%) Very Satisfied 471 (13.1%) No response

What one addition would make the biggest improvement to Go editing in your preferred editor? 180 (5.0%) debugging 136 (3.8%) debugger 116 (3.2%) refactoring 79 (2.2%) integration 72 (2.0%) tools 68 (1.9%) completion 58 (1.6%) editor 46 (1.3%) debug 43 (1.2%) code completion 43 (1.2%) work 41 (1.1%) vim 40 (1.1%) autocomplete 40 (1.1%) vscode 37 (1.0%) package 37 (1.0%) plugin 36 (1.0%) definition 36 (1.0%) easier 36 (1.0%) good 36 (1.0%) ide 36 (1.0%) intellij 35 (1.0%) faster 35 (1.0%) function 34 (0.9%) atom 34 (0.9%) interface 33 (0.9%) vim-go 32 (0.9%) gopath 31 (0.9%) integrated 30 (0.8%) working 29 (0.8%) auto 28 (0.8%) refactoring support 27 (0.8%) delve 27 (0.8%) type 26 (0.7%) guru 26 (0.7%) syntax 25 (0.7%) error 25 (0.7%) method 25 (0.7%) packages 25 (0.7%) plugins 24 (0.7%) compile 24 (0.7%) jump 23 (0.6%) features 23 (0.6%) find 23 (0.6%) goimports 23 (0.6%) navigation 23 (0.6%) performance 23 (0.6%) refactoring tools 23 (0.6%) works 22 (0.6%) autocompletion 22 (0.6%) debugging support 22 (0.6%) errors 22 (0.6%) gofmt 22 (0.6%) run 21 (0.6%) highlighting 21 (0.6%) save 21 (0.6%) setup 21 (0.6%) visual 20 (0.6%) documentation 20 (0.6%) great 2,291 (63.7%) No response

My team deploys Go/non-Go programs to: (multiple choice) 1,489 (41%) Self/Company Owned Servers (Go) 1,714 (48%) (non-Go) 928 (26%) AWS EC2 1,122 (31%) 503 (14%) None 249  (7%) 412 (11%) Digital Ocean 360 (10%) 292  (8%) AWS Container 343 (10%) 221  (6%) Google Compute Engine 186  (5%) 188  (5%) Google App Engine 94  (3%) 161  (4%) Google Container Engine (GKE) 115  (3%) 121  (3%) Heroku 185  (5%) 114  (3%) Microsoft Azure 210  (6%) 104  (3%) Linode 100  (3%) 94  (3%) AWS Lambda 233  (6%) 301  (8%) Other 297  (8%) 639 (18%) No response 660 (18%)

Làm việc Hiệu quả

Chúng tôi hỏi mức độ đồng ý hay không đồng ý của mọi người với các nhận định khác nhau về Go. Người dùng đồng ý nhiều nhất rằng hiệu suất của Go đáp ứng nhu cầu của họ (tỷ lệ đồng ý so với không đồng ý là 57:1), rằng họ có thể nhanh chóng tìm được câu trả lời cho câu hỏi của mình (20:1), và rằng họ có thể sử dụng hiệu quả các tính năng đồng thời của Go (14:1). Mặt khác, người dùng ít đồng ý nhất rằng họ có thể gỡ lỗi hiệu quả các tính năng đồng thời của Go (2,7:1).

Người dùng hầu hết đồng ý rằng họ có thể nhanh chóng tìm thấy thư viện cần thiết (7,5:1). Khi được hỏi còn thiếu thư viện nào, yêu cầu phổ biến nhất là thư viện để viết giao diện đồ họa (GUI). Một chủ đề phổ biến khác là các yêu cầu xung quanh xử lý dữ liệu, phân tích và tính toán số học và khoa học.

Trong số 30% người dùng đề xuất cách cải thiện tài liệu của Go, đề xuất phổ biến nhất là có thêm nhiều ví dụ hơn.

Các nguồn tin tức Go chính là blog Go, /r/golang trên Reddit và Twitter; có thể có một số thiên lệch ở đây vì đây cũng là cách khảo sát được thông báo.

Các nguồn chính để tìm câu trả lời cho các câu hỏi về Go là trang web Go, Stack Overflow và đọc mã nguồn trực tiếp.

To what extent do you agree or disagree with the following statements: (strongly disagree, disagree, somewhat disagree, neutral, somewhat agree, agree, strongly agree) 3,094 (1, 2, 5, 6, 27, 32, 12%) I have a good understanding of Go best practices. (9.6:1) 3,083 (0, 1, 3, 4, 17, 41, 20%) I am able to quickly find answers to my questions. (20:1) 3,053 (0, 0, 1, 2, 7, 32, 42%) Go's performance meets my needs. (57:1) 2,523 (1, 3, 5, 14, 15, 26, 8%) Go's support for language interoperability meets my needs. (6.0:1) 3,049 (1, 2, 6, 7, 24, 34, 11%) I am able to quickly find libraries that I need. (7.5:1) 3,083 (1, 2, 4, 5, 18, 37, 20%) Go language, library, and tool documentation meet my needs. (11:1)

What Go libraries do you need that aren't available today? 208 (5.8%) gui 144 (4.0%) library 121 (3.4%) libraries 63 (1.8%) native 60 (1.7%) ui 53 (1.5%) good 33 (0.9%) orm 33 (0.9%) standard 33 (0.9%) web 32 (0.9%) framework 32 (0.9%) gui library 31 (0.9%) mobile 28 (0.8%) android 28 (0.8%) database 28 (0.8%) desktop 28 (0.8%) libs 28 (0.8%) sql 26 (0.7%) cross platform 25 (0.7%) processing 25 (0.7%) xml 24 (0.7%) api 24 (0.7%) machine learning 24 (0.7%) official 24 (0.7%) windows 23 (0.6%) soap 22 (0.6%) toolkit 21 (0.6%) pdf 21 (0.6%) python 20 (0.6%) bindings 20 (0.6%) graphics 20 (0.6%) package 2,498 (69.5%) No response

What changes would most improve the Go documentation? 512 (14%) examples 300  (8%) more examples 134  (4%) documentation 69  (2%) example 62  (2%) docs 49  (1%) godoc 34  (1%) usage 32  (1%) functions 32  (1%) package 31  (1%) good 29  (1%) function 29  (1%) great 29  (1%) packages 29  (1%) search 28  (1%) cases 26  (1%) best practices 26  (1%) libraries 23  (1%) doc 23  (1%) more example 22  (1%) code examples 21  (1%) syntax 20  (1%) interface 2,532 (70%) No response

To what extent do you agree or disagree with the following statements: (strongly disagree, disagree, somewhat disagree, neutral, somewhat agree, agree, strongly agree) 3,002 (1, 2, 6, 7, 23, 34, 11%) I am able to effectively diagnose bugs in my Go programs. (7.2:1) 2,725 (1, 2, 6, 13, 22, 24, 7%) I am able to effectively diagnose performance issues in my Go programs. (5.8:1) 2,932 (1, 2, 3, 5, 17, 33, 22%) I am able to effectively use Go's concurrency features (goroutines, channels, select). (14:1) 2,801 (2, 5, 11, 14, 23, 18, 5%) I am able to effectively debug uses of Go's concurrency features (goroutines, channels, select). (2.7:1)

Rank the following in terms of where you get Go answers from: (ordered choice, up to 5) 2,226 (23, 18, 12, 7, 3%) Stack Overflow 2,101 (30, 15, 8, 4, 1%) golang.org 1,814 (13, 17, 12, 7, 2%) Reading source code (e.g., standard library, open-source packages) 1,200 (3, 8, 12, 7, 4%) GitHub 854 (3, 7, 7, 5, 3%) golang-nuts mailing list (groups.google.com/d/forum/golang-nuts) 682 (2, 3, 5, 5, 3%) Reddit (r/golang) 630 (3, 4, 5, 3, 2%) Coworkers 334 (2, 2, 2, 2, 2%) Gopher Slack (invite.slack.golangbridge.org) 214 (1, 1, 2, 1, 1%) Friends 161 (0, 0, 1, 1, 1%) Twitter 156 (1, 1, 1, 1, 0%) IRC 126 (0, 1, 1, 1, 1%) Go Forum (forum.golangbridge.org) 262 (2, 2, 1, 1, 1%) Other 643 (18%) No response

Rank the following in terms of where you get Go news from: (ordered choice, up to 5) 1,659 (17, 14, 9, 4, 2%) blog.Golang.org 1,153 (17, 8, 4, 2, 1%) Reddit (r/golang) 1,053 (14, 8, 4, 3, 1%) Twitter 903 (6, 8, 6, 3, 1%) Hacker News 777 (9, 6, 4, 2, 0%) Golangweekly.com 633 (2, 6, 5, 4, 1%) Community Blogs 430 (2, 3, 4, 2, 1%) GitHub 418 (3, 3, 3, 2, 1%) golang-nuts mailing list (groups.google.com/d/forum/golang-nuts) 394 (3, 3, 3, 1, 1%) Coworkers 212 (1, 1, 2, 1, 1%) Gopher Slack (invite.slack.golangbridge.org) 203 (1, 2, 1, 1, 1%) Golangnews.com 199 (1, 2, 1, 1, 1%) golang-announce (groups.google.com/d/forum/golang-announce) 176 (1, 1, 1, 1, 1%) Go Time podcast 65 (0, 0, 0, 1, 0%) Go Forum (forum.golangbridge.org) 42 (0, 0, 0, 0, 0%) Facebook 160 (1, 1, 1, 0, 0%) Other 747 (21%) No response

I have attended: (multiple choice) 1,315 (37%) None 879 (24%) A Go meetup 523 (15%) A Go themed conference (GopherCon, GothamGo, etc) 276  (8%) A Go remote meetup / online event 186  (5%) Go training 165  (5%) A technical conference for it's Go content 43  (1%) A GoBridge event 37  (1%) A Women Who Go event 65  (2%) Other 993 (28%) No response

Dự án Go

55% người tham gia bày tỏ sự quan tâm đến việc đóng góp theo một cách nào đó cho cộng đồng và các dự án Go. Tiếc là, tương đối ít người đồng ý rằng họ cảm thấy được chào đón khi làm điều đó (3,3:1) và thậm chí ít hơn cho rằng quy trình đó rõ ràng (1,3:1). Trong năm 2017, chúng tôi dự định tập trung vào việc cải thiện quy trình đóng góp và tiếp tục làm cho tất cả người đóng góp cảm thấy được chào đón.

Người tham gia đồng ý rằng họ tin tưởng vào ban lãnh đạo của dự án Go (9:1), nhưng họ đồng ý ít hơn nhiều rằng ban lãnh đạo dự án hiểu nhu cầu của họ (2,6:1), và họ đồng ý thậm chí ít hơn rằng họ cảm thấy thoải mái khi tiếp cận ban lãnh đạo dự án với câu hỏi và phản hồi (2,2:1). Trên thực tế, đây là những câu hỏi duy nhất trong khảo sát mà hơn một nửa người tham gia không đánh dấu “đồng ý một phần”, “đồng ý” hoặc “hoàn toàn đồng ý” (nhiều người trung lập hoặc không trả lời).

Chúng tôi hy vọng rằng cuộc khảo sát và bài đăng blog này sẽ truyền đạt đến những ai không thoải mái khi tiếp cận rằng ban lãnh đạo dự án Go đang lắng nghe. Trong suốt năm 2017, chúng tôi sẽ khám phá các cách mới để tương tác với người dùng nhằm hiểu rõ hơn nhu cầu của họ.

I contribute to open source projects written in Go: (single choice) 1,227 (34%) Infrequently 890 (25%) Never 345 (10%) Monthly 295  (8%) Weekly 234  (7%) As part of my daily routine 604 (17%) No response

I have contributed or am interested in contributing in the following ways to the Go community and Projects: (multiple choice) 892 (25%) Standard library 663 (18%) Tools (go guru, go vet, go doc, etc) 602 (17%) Tutorials 560 (16%) Documentation 557 (15%) Community support via Stack Overflow, Slack, mailing list, etc 472 (13%) Community involvement (workgroups, meetup attendance) 440 (12%) Being a technical mentor 374 (10%) Toolchain (compiler, linker, etc) 275  (8%) Go Project maintenance (issue triage) 246  (7%) Event planning (meetup, conference, etc) 236  (7%) Language translation 165  (5%) General UX & Design contributions 154  (4%) golang.org website (code, UX, IA, content, etc) 92  (3%) Other 1,621 (45%) No response

To what extent do you agree or disagree with the following statements: (strongly disagree, disagree, somewhat disagree, neutral, somewhat agree, agree, strongly agree) 2,091 (1, 3, 5, 19, 10, 14, 6%) I feel welcome to contribute to Go (compiler, standard library, documentation, website) (3.3:1) 2,168 (3, 7, 9, 16, 10, 11, 4%) The process of contributing to the Go project is clear to me (1.3:1) 1,900 (1, 2, 5, 22, 8, 11, 3%) The Go project leadership understands my needs (2.6:1) 2,114 (2, 4, 6, 18, 10, 14, 5%) I feel comfortable approaching the Go project leadership with questions and feedback (2.2:1) 2,374 (1, 1, 3, 12, 9, 24, 15%) I am confident in the leadership of Go (9.0:1)

What is the biggest challenge facing the Go project today? 71 (2.0%) community 68 (1.9%) google 63 (1.8%) generics 62 (1.7%) management 49 (1.4%) adoption 45 (1.3%) lack 43 (1.2%) features 43 (1.2%) people 40 (1.1%) dependency management 37 (1.0%) java 32 (0.9%) languages 31 (0.9%) keeping 29 (0.8%) c 27 (0.8%) developers 27 (0.8%) leadership 24 (0.7%) good 24 (0.7%) libraries 24 (0.7%) package 23 (0.6%) simple 21 (0.6%) core 21 (0.6%) feature 20 (0.6%) programming 20 (0.6%) team 2,771 (77.1%) No response

Cộng đồng

Ở cuối khảo sát, chúng tôi hỏi một số câu hỏi về nhân khẩu học. Phân phối quốc gia của các phản hồi gần tương ứng với phân phối quốc gia của lượng truy cập vào golang.org, nhưng các phản hồi thiếu đại diện từ một số quốc gia châu Á. Cụ thể, Ấn Độ, Trung Quốc và Nhật Bản mỗi nước chiếm khoảng 5% lượng truy cập vào golang.org trong năm 2016 nhưng chỉ chiếm 3%, 2% và 1% phản hồi khảo sát.

Một phần quan trọng của cộng đồng là làm cho mọi người cảm thấy được chào đón, đặc biệt là những người từ các nhóm ít được đại diện. Chúng tôi đặt một câu hỏi tùy chọn về nhận dạng trong một vài nhóm đa dạng. 37% người tham gia để trống câu hỏi và 12% chọn “Tôi không muốn trả lời”, vì vậy chúng tôi không thể rút ra nhiều kết luận rộng từ dữ liệu. Tuy nhiên, một so sánh nổi bật: 9% người xác nhận họ thuộc nhóm thiểu số đồng ý với nhận định “Tôi cảm thấy được chào đón trong cộng đồng Go” theo tỷ lệ 7,5:1, so với 15:1 trong toàn bộ khảo sát. Chúng tôi muốn làm cho cộng đồng Go trở nên thân thiện hơn nữa. Chúng tôi ủng hộ và được khích lệ bởi những nỗ lực của các tổ chức như GoBridge và Women Who Go.

Câu hỏi cuối cùng của khảo sát chỉ là để vui: từ khóa Go yêu thích của bạn là gì? Có lẽ không có gì đáng ngạc nhiên, câu trả lời phổ biến nhất là go, tiếp theo là defer, func, interfaceselect.

To what extent do you agree or disagree with the following statements: (strongly disagree, disagree, somewhat disagree, neutral, somewhat agree, agree, strongly agree) 2,701 (1, 1, 2, 11, 10, 31, 19%) I feel welcome in the Go community. (15:1)

What changes would make the Go community more welcoming? 115 (3.2%) community 52 (1.4%) people 32 (0.9%) r/golang 31 (0.9%) go community 30 (0.8%) google 30 (0.8%) reddit 24 (0.7%) welcoming 23 (0.6%) official 23 (0.6%) open 22 (0.6%) code of conduct 21 (0.6%) golang 21 (0.6%) team 3,017 (83.9%) No response

In which country do you currently reside? (single choice) 928 (26%) United States of America 253  (7%) Germany 168  (5%) United Kingdom 148  (4%) Russia 119  (3%) France 112  (3%) Canada 91  (3%) India 73  (2%) China 72  (2%) Australia 55  (2%) Netherlands 54  (2%) Spain 45  (1%) Sweden 43  (1%) Poland 40  (1%) Italy 36  (1%) Brazil 36  (1%) Switzerland 35  (1%) Ukraine 27  (1%) Japan 24  (1%) Czech Republic 23  (1%) Belgium 441 (12%) Other 772 (21%) No response

We want the Go community to be inclusive; we want to see how we're doing and how to improve. Please select the groups you identify with: (multiple choice) 1,499 (42%) I do not identify as part of an underrepresented group 438 (12%) I prefer not to answer 101  (3%) I identify as LGBTQIA 95  (3%) I identify as ethnically or racially underrepresented 77  (2%) I identify as neurodiverse or as having a disability 49  (1%) I identify as a woman 47  (1%) Write-in: objection to the question. 38  (1%) I identify as part of an underrepresented group, but I prefer not to specify 34  (1%) I identify with an underrepresented group not listed. 1,332 (37%) No response

Just for fun: What is your favorite Go keyword? 854 (24%) go 455 (13%) defer 253  (7%) func 240  (7%) select 227  (6%) interface 145  (4%) struct 139  (4%) chan 129  (4%) range 67  (2%) fallthrough 56  (2%) switch 53  (1%) for 48  (1%) type 47  (1%) map 44  (1%) goto 36  (1%) import 22  (1%) if 20  (1%) package 19  (1%) var 17  (0%) const 14  (0%) continue 13  (0%) return 12  (0%) break 3  (0%) else 2  (0%) case 2  (0%) default 678 (19%) No response

Is there anything else you would like to share with us? 95 (2.6%) thanks 94 (2.6%) great 86 (2.4%) thank you 47 (1.3%) keep up the good work 47 (1.3%) programming 43 (1.2%) community 39 (1.1%) c 37 (1.0%) awesome 33 (0.9%) i love 31 (0.9%) people 29 (0.8%) golang 27 (0.8%) great work 27 (0.8%) java 27 (0.8%) languages 26 (0.7%) fun 26 (0.7%) job 26 (0.7%) time 25 (0.7%) love go 24 (0.7%) generics 24 (0.7%) team 23 (0.6%) projects 22 (0.6%) best 22 (0.6%) wish 22 (0.6%) years 21 (0.6%) simple 2,886 (80.3%) No response

Bài tiếp theo: HTTP/2 Server Push
Bài trước: Go 1.8 đã được phát hành
Mục lục blog