Go 2016 Survey Results
06 Mar 2017
Tags: survey, community

Steve Francia, for the Go team
spf@golang.org

* Thank you

This post summarizes the result of our December 2016 user survey along with our commentary and insights.
We are grateful to everyone who provided their feedback through the survey to help shape the future of Go.

* Programming background

Of the 3,595 survey respondents, 89% said they program in Go at work or outside of work,
with 39% using Go both at home and at work, 27% using Go only at home, and 23% using Go only at work.

We asked about the areas in which people work.
63% said they work in web development, but only 9% listed web development alone.
In fact, 77% chose two or more areas, and 53% chose three or more.

We also asked about the kinds of programs people write in Go.
63% of respondents write command-line programs, 60% write API or RPC services, and 52% write web services.
Like in the previous question, most made multiple choices,
with 85% choosing two or more and 72% choosing three or more.

We asked about people’s expertise and preference among programming languages.
Unsurprisingly, Go ranked highest among respondents’ first choices in both expertise (26%) and preference (62%).
With Go excluded, the top five first choices for language expertise were
Python (18%), Java (17%), JavaScript (13%), C (11%), and PHP (8%);
and the top five first choices for language preference were
Python (22%), JavaScript (10%), C (9%), Java (9%), and Ruby (7%).
Go is clearly attracting many programmers from dynamic languages.

.html survey2016/background.html

* Go usage

Users are overwhelmingly happy with Go:
they agree that they would recommend Go to others by a ratio of 19:1,
that they’d prefer to use Go for their next project (14:1),
and that Go is working well for their teams (18:1).
Fewer users agree that Go is critical to their company’s success (2.5:1).

When asked what they like most about Go, users most commonly mentioned
Go’s simplicity, ease of use, concurrency features, and performance.
When asked what changes would most improve Go,
users most commonly mentioned generics, package versioning, and dependency management.
Other popular responses were GUIs, debugging, and error handling.

When asked about the biggest challenges to their own personal use of Go,
users mentioned many of the technical changes suggested in the previous question.
The most common themes in the non-technical challenges were convincing others to use Go
and communicating the value of Go to others, including management.
Another common theme was learning Go or helping others learn,
including finding documentation like getting-started walkthroughs,
tutorials, examples, and best practices.

Some representative common feedback, paraphrased for confidentiality:

.html survey2016/quotes.html

We appreciate the feedback given to identify these challenges faced by our users and community.
In 2017 we are focusing on addressing these issues and hope to make as many significant improvements as we can.
We welcome suggestions and contributions from the community in making these challenges into strengths for Go.

.html survey2016/usage.html

* Development and deployment

When asked which operating systems they develop Go on,
63% of respondents say they use Linux, 44% use MacOS, and 19% use Windows,
with multiple choices allowed and 49% of respondents developing on multiple systems.
The 51% of responses choosing a single system split into
29% on Linux, 17% on MacOS, 5% on Windows, and 0.2% on other systems.

Go deployment is roughly evenly split between privately managed servers and hosted cloud servers.

.html survey2016/dev.html

* Working Effectively

We asked how strongly people agreed or disagreed with various statements about Go.
Users most agreed that Go’s performance meets their needs (57:1 ratio agree versus disagree),
that they are able to quickly find answers to their questions (20:1),
and that they are able to effectively use Go’s concurrency features (14:1).
On the other hand, users least agreed that they are able to effectively
debug uses of Go’s concurrency features (2.7:1).

Users mostly agreed that they were able to quickly find libraries they need (7.5:1).
When asked what libraries are still missing, the most common request by far was a library for writing GUIs.
Another popular topic was requests around data processing, analytics, and numerical and scientific computing.

Of the 30% of users who suggested ways to improve Go’s documentation,
the most common suggestion by far was more examples.

The primary sources for Go news are the Go blog,
Reddit’s /r/golang and Twitter;
there may be some bias here since these are also how the survey was announced.

The primary sources for finding answers to Go questions are the Go web site,
Stack Overflow, and reading source code directly.

.html survey2016/effective.html

* The Go Project

55% of respondents expressed interest in contributing in some way to the Go community and projects.
Unfortunately, relatively few agreed that they felt welcome to do so (3.3:1)
and even fewer felt that the process was clear (1.3:1).
In 2017, we intend to work on improving the contribution process and to
continue to work to make all contributors feel welcome.

Respondents agree that they are confident in the leadership of the Go project (9:1),
but they agree much less that the project leadership understands their needs (2.6:1),
and they agree even less that they feel comfortable approaching project leadership with questions and feedback (2.2:1).
In fact, these were the only questions in the survey for which more than half of respondents
did not mark “somewhat agree”, “agree”, or “strongly agree” (many were neutral or did not answer).

We hope that the survey and this blog post convey to those of you
who are aren’t comfortable reaching out that the Go project leadership is listening.
Throughout 2017 we will be exploring new ways to engage with users to better understand their needs.

.html survey2016/project.html

* Community

At the end of the survey, we asked some demographic questions.
The country distribution of responses roughly matches the country distribution of site visits to golang.org,
but the responses under-represent some Asian countries.
In particular, India, China, and Japan each accounted for about 5% of the site visits to golang.org in 2016
but only 3%, 2%, and 1% of survey responses.

An important part of a community is making everyone feel welcome,
especially people from under-represented demographics.
We asked an optional question about identification across a few diversity groups.
37% of respondents left the question blank and 12% of respondents chose “I prefer not to answer”,
so we cannot make many broad conclusions from the data.
However, one comparison stands out: the 9% who identified as underrepresented agreed
with the statement “I feel welcome in the Go community” by a ratio of 7.5:1,
compared with 15:1 in the survey as a whole.
We aim to make the Go community even more welcoming.
We support and are encouraged by the efforts of organizations like GoBridge and Women Who Go.

The final question on the survey was just for fun: what’s your favorite Go keyword?
Perhaps unsurprisingly, the most popular response was `go`, followed by `defer`, `func`, `interface`, and `select`.

.html survey2016/community.html
