Todd Kulesza, Steve Francia
28 March 2019
This post summarizes the results of our 2018 user survey and draws comparisons
between the results of our prior surveys from 2016
This year we had 5,883 survey respondents from 103 different countries.
We are grateful to everyone who provided their feedback through this survey
to help shape the future of Go. Thank you!
Read on for all of the details.
This year's results show a significant increase in the number of survey
respondents who are paid to write Go as part of their jobs (68% → 72%),
continuing a year-over-year trend that has been growing since our first survey in 2016.
We also see an increase in the number of respondents who program in Go outside
of work (64% → 70%).
For the first time, the number of survey respondents who write in Go as
part of their daily routine reached 50% (up from 44% in 2016).
These findings suggests companies are continuing to embrace Go for professional
software development at a consistent pace,
and that Go's general popularity with developers remains strong.
To better understand where developers use Go,
we broke responses down into three groups:
When asked how long they've been using Go,
participants' answers are strongly trending upward over time,
with a higher percentage of responses in the 2-4 and 4+ year buckets each year.
This is expected for a newer programming language,
and we're glad to see that the percentage of respondents who are new to
Go is dropping more slowly than the percentage of respondents who have been
using Go for 2+ years is increasing,
as this suggests that developers are not dropping out of the ecosystem after
initially learning the language.
As in prior years, Go ranks at the top of respondents' preferred languages
and languages in which they have expertise.
A majority of respondents (69%) claimed expertise in 5 different languages,
highlighting that their attitudes towards Go are influenced by experiences
with other programming stacks.
The charts below are sorted by the number of respondents who ranked each
language as their most preferred/understood (the darkest blue bars),
which highlights three interesting bits:
Reading the data: Participants could rank their top 5 languages. The color coding starts with dark blue for the top rank and lightens for each successive rank. These charts are sorted by the percentage of participants who ranked each language as their top choice.
Survey respondents reported working on a median of three different domains,
with a large majority (72%) working in 2-5 different areas.
Web development is the most prevalent at 65%,
and it increased its dominance as the primary area survey respondents work
in (up from 61% last year):
web development has been the most common domain for Go development since 2016.
This year DevOps noticeably increased, from 36% to 41% of respondents,
taking over the number two spot from Systems Programming.
We did not find any domains with lower usage in 2018 than in 2017,
suggesting that respondents are adopting Go for a wider variety of projects,
rather than shifting usage from one domain to another.
Since 2016, the top two uses of Go have been writing API/RPC services and
developing CLI applications.
While CLI usage has remained stable at 63% for three years,
API/RPC usage has increased from 60% in 2016 to 65% in 2017 to 73% today.
These domains play to core strengths of Go and are both central to cloud-native
so we expect them to remain two of the primary scenarios for Go developers into the future.
The percentage of respondents who write web services that directly return
HTML has steadily dropped while API/RPC usage has increased,
suggesting some migration to the API/RPC model for web services.
Another year-over-year trend suggests that automation is also a growing area for Go,
with 38% of respondents now using Go for scripts and automation tasks (up from 31% in 2016).
To better understand the contexts in which developers are using Go,
we added a question about Go adoption across different industries.
Perhaps unsurprisingly for a relatively new language,
over half of survey respondents work in companies in the Internet/web services
and Software categories (i.e., tech companies).
The only other industries with >3% responses were Finance, banking, or insurance
and Media, advertising, publishing, or entertainment.
(In the chart below, we've condensed all of the categories with response
rates below 3% into the "Other" category.) We'll continue tracking Go's
adoption across industries to better understand developer needs outside
of technology companies.
This year we added a question asking "How likely are you to recommend Go
to a friend or colleague?" to calculate our Net Promoter Score.
This score attempts to measure how many more "promoters" a product has than
"detractors" and ranges from -100 to 100;
a positive value suggests most people are likely to recommend using a product,
while negative values suggest most people are likely to recommend against using it.
Our 2018 score is 61 (68% promoters - 7% detractors) and will serve as a
baseline to help us gauge community sentiment towards the Go ecosystem over time.
In addition to NPS, we asked several questions about developer satisfaction with Go.
Overall, survey respondents indicated a high level of satisfaction,
consistent with prior years.
Large majorities say they are happy with Go (89%),
would prefer to use Go for their next project (85%),
and feel that it is working well for their team (66%),
while a plurality feel that Go is at least somewhat critical to their company's success (44%).
While all of these metrics showed an increase in 2017,
they remained mostly stable this year.
(The wording of the first question changed in 2018 from "I would recommend using Go to others"
to "Overall, I'm happy with Go",
so those results are not directly comparable.)
Given the strong sentiment towards preferring Go for future development,
we want to understand what prevents developers from doing so.
These remained largely unchanged since last year:
about ½ of survey respondents work on existing projects written in other languages,
and ⅓ work on a team or project that prefers to use a different language.
Missing language features and libraries round out the most common reasons
respondents did not use Go more.
We also asked about the biggest challenges developers face while using Go;
unlike most of our survey questions, respondents could type in anything
they wished to answer this question.
We analyzed the results via machine learning to identify common themes and
counting the number of responses that supported each theme.
The top three major challenges we identified are:
This year we added several questions about developer satisfaction with different aspects of Go.
Survey respondents were very satisfied with Go applications' CPU performance (46:1,
meaning 46 respondents said they were satisfied for every 1 respondent who
said they were not satisfied),
build speed (37:1), and application memory utilization (32:1).
Responses for application debuggability (3.2:1) and binary size (6.4:1),
however, suggest room for improvement.
The dissatisfaction with binary size largely comes from developers building CLIs,
only 30% of whom are satisfied with the size of Go's generated binaries.
For all other types of applications, however,
developer satisfaction was > 50%, and binary size was consistently ranked
at the bottom of the list of important factors.
Debuggability, conversely, stands out when we look at how respondents ranked
the importance of each aspect;
44% of respondents ranked debuggability as their most or second-most important aspect,
but only 36% were satisfied with the current state of Go debugging.
Debuggability was consistently rated about as important as memory usage
and build speed but with significantly lower satisfaction levels,
and this pattern held true regardless of the type of software respondents were building.
The two most recent Go releases, Go 1.11 and 1.12,
both contained significant improvements to debuggability.
We plan to investigate how developers debug Go applications in more depth this year,
with a goal of improving the overall debugging experience for Go developers.
We asked respondents which operating systems they primarily use when writing Go code.
A majority (65%) of respondents said they use Linux,
50% use macOS, and 18% use Windows, consistent with last year.
This year we also looked at how many respondents develop on multiple OSes vs. a single OS.
Linux and macOS remain the clear leaders,
with 81% of respondents developing on some mix of these two systems.
Only 3% of respondents evenly split their time between all three OSes.
Overall, 41% of respondents use multiple operating systems for Go development,
highlighting the cross-platform nature of Go.
Last year, VS Code edged out Vim as the most popular Go editor among survey respondents.
This year it significantly expanded its lead to become the preferred editor
for over ⅓ of our survey respondents (up from 27% last year).
GoLand also experienced strong growth and is now the second most-preferred editor at 22%,
swapping places with Vim (down to 17%).
The surging popularity of VS Code and GoLand appear to be coming at the
expense of Sublime Text and Atom.
Vim also saw the number of respondents ranking it their top choice drop,
but it remains the most popular second-choice editor at 14%.
Interestingly, we found no differences in the level of satisfaction respondents
reported for their editor(s) of choice.
We also asked respondents what would most improve Go support in their preferred editor.
Like the "biggest challenge" question above,
participants could write in their own response rather than select from a
A thematic analysis on the responses revealed that improved debugging support (e.g.,
"Live debugging", "Integrated debugging",
"Even better debugging") was the most-common request,
followed by improved code completion (e.g.,
"autocomplete performance and quality", "smarter autocomplete").
Other requests include better integration with Go's CLI toolchain,
better support for modules/packages, and general performance improvements.
This year we also added a question asking which deployment architectures
are most important to Go developers.
Unsurprisingly, survey respondents overwhelmingly view x86/x86-64 as their
top deployment platform (76% of respondents listed it as their most important
and 84% had it in their top 3).
The ranking of the second- and third-choice architectures,
however, is informative:
there is significant interest in ARM64 (45%),
WebAssembly (30%), and ARM (22%), but very little interest in other platforms.
For 2018 we see a continuation of the trend from on-prem to cloud hosting
for both Go and non-Go deployments.
The percentage of survey respondents who deploy Go applications to on-prem
servers dropped from 43% → 32%,
mirroring the 46% → 36% drop reported for non-Go deployments.
The cloud services which saw the highest year-over-year growth include AWS
Lambda (4% → 11% for Go,
10% → 15% non-Go) and Google Kubernetes Engine (8% → 12% for Go,
5% → 10% non-Go), suggesting that serverless and containers are becoming
increasingly popular deployment platforms.
This service growth appears to be driven by respondents who had already
adopted cloud services,
however, as we found no meaningful growth in the percentage of respondents
who deploy to at least one cloud service this year (55% → 56%).
We also see steady growth in Go deployments to GCP since 2016,
increasing from 12% → 19% of respondents.
Perhaps correlated with the decrease in on-prem deployments,
this year we saw cloud storage become the second-most used service by survey respondents,
increasing from 32% → 44%.
Authentication & federation services also saw a significant increase (26% → 33%).
The primary service survey respondents access from Go remains open-source
which ticked up from 61% → 65% of respondents.
As the below chart shows, service usage increased across the board.
The top community sources for finding answers to Go questions continue to
be Stack Overflow (23% of respondents marked it as their top source),
Go web sites (18% for godoc.org, 14% for golang.org),
and reading source code (8% for source code generally,
4% for GitHub specifically).
The order remains largely consistent with prior years.
The primary sources for Go news remain the Go blog,
Reddit's r/golang, Twitter, and Hacker News.
These were also the primary distribution methods for this survey,
however, so there is likely some bias in this result.
In the two charts below, we've grouped sources used by less than < 5% of
respondents into the "Other" category.
This year, 55% of survey respondents said they have or are interested in
contributing to the Go community,
slightly down from 59% last year.
Because the two most common areas for contribution (the standard library
and official Go tools) require interacting with the core Go team,
we suspect this decrease may be related to a dip in the percentage of participants
who agreed with the statements "I feel comfortable approaching the Go project
leadership with questions and feedback" (30% → 25%) and "I am confident
in the leadership of Go (54% → 46%).
An important aspect of community is helping everyone feel welcome,
especially people from traditionally under-represented demographics.
To better understand this, we asked an optional question about identification
across several under-represented groups.
In 2017 we saw year-over-year increases across the board.
For 2018, we saw a similar percentage of respondents (12%) identify as part
of an under-represented group,
and this was paired with a significant decrease in the percentage of respondents
who do not identify as part of an under-represented group.
In 2017, for every person who identified as part of an under-represented group,
3.5 people identified as not part of an under-represented group (3.5:1 ratio).
In 2018 that ratio improved to 3.08:1. This suggests that the Go community
is at least retaining the same proportions of under-represented members,
and may even be increasing.
Maintaining a healthy community is extremely important to the Go project,
so for the past three years we've been measuring the extent to which developers
feel welcome in the Go community.
This year we saw a drop in the percentage of survey respondents who agree
with the statement "I feel welcome in the Go community", from 66% → 59%.
To better understand this decrease, we looked more closely at who reported
feeling less welcome.
Among traditionally under-represented groups,
fewer people reported feeling unwelcome in 2018,
suggesting that outreach in that area has been helpful.
Instead, we found a linear relationship between the length of time someone
has used Go and how welcome they feel:
newer Go developers felt significantly less welcome (at 50%) than developers
with 1-2 years of experience (62%),
who in turn felt less welcome than developers with a few years of experience (73%).
This interpretation of the data is supported by responses to the question
"What changes would make the Go community more welcoming?".
Respondents' comments can be broadly grouped into four categories:
This feedback is very helpful and gives us concrete areas we can focus on
to improve the experience of being a Go developer.
While it doesn't represent a large percentage of our user base,
we take this feedback very seriously and are working on improving each area.
We hope you've enjoyed seeing the results of our 2018 developer survey.
These results are impacting our 2019 planning,
and in the coming months we'll share some ideas with you to address specific
issues and needs the community has highlighted for us.
Once again, thank you to everyone who contributed to this survey!