aboutsummaryrefslogtreecommitdiff
path: root/content/survey2019-results.article
diff options
context:
space:
mode:
authorTodd Kulesza <tkulesza@google.com>2020-04-10 13:31:57 -0700
committerRuss Cox <rsc@golang.org>2020-04-20 19:00:51 +0000
commit261c0885acdd78a325ab9fecbdbcd812feaa4472 (patch)
tree47e46f64328e64cb70bea10cc6a0d7f136cddc6c /content/survey2019-results.article
parent45267ae64cfc3e9f6c3d21d2a0e65851ad1413f0 (diff)
blog: add 2019 survey results
Change-Id: I2ea51b9b65b215d4d1b647b9ef9b0c7b35907d94 Reviewed-on: https://go-review.googlesource.com/c/blog/+/227923 Reviewed-by: Russ Cox <rsc@golang.org>
Diffstat (limited to 'content/survey2019-results.article')
-rw-r--r--content/survey2019-results.article562
1 files changed, 562 insertions, 0 deletions
diff --git a/content/survey2019-results.article b/content/survey2019-results.article
new file mode 100644
index 0000000..69cc3d6
--- /dev/null
+++ b/content/survey2019-results.article
@@ -0,0 +1,562 @@
+# Go Developer Survey 2019 Results
+20 Apr 2020
+Tags: survey, community
+Summary: An analysis of the results from the 2019 Go Developer Survey.
+
+Todd Kulesza
+tkulesza@google.com
+
+## What a response!
+
+I want to start with an enormous **thank you** to the thousands of Go developers
+who participated in this year's survey.
+For 2019, we saw 10,975 responses, nearly [twice as many as last year](https://blog.golang.org/survey2018-results)!
+On behalf of the rest of the team, I cannot adequately stress how much we
+appreciate you taking the time and effort to tell us about your experiences with Go. Thank you!
+
+## A note about prior years
+
+Sharp-eyed readers may notice that our year-over-year comparisons don't
+quite square with numbers we've shared in the past.
+The reason is that from 2016–2018, we calculated percentages for each
+question using the total number of people who started the survey as the denominator.
+While that's nice and consistent, it ignores the fact that not everyone
+finishes the survey—up to 40% of participants stop before reaching the final page,
+which meant questions that occurred later in the survey appeared to perform
+worse solely because they were later.
+Thus, this year we've recalculated all of our results (including the 2016–2018
+responses shown in this post) to use the number of people who responded
+to a given question as the denominator for that question.
+We've included the number of 2019 responses for each chart—in the form
+of "n=[number of respondents]" on the x-axis or in the chart's legend—to
+give readers a better understanding of the weight of evidence underlying each finding.
+
+Similarly, we learned that in prior surveys options that appeared earlier
+in response lists had a disproportionate response rate.
+To address this, we added an element of randomization into the survey.
+Some of our multiple-choice questions have lists of choices with no logical ordering,
+such as "I write the following in Go:
+[list of types of applications]".
+Previously these choices had been alphabetized,
+but for 2019 they were presented in a random order to each participant.
+This means year-over-year comparison for certain questions are invalid for 2018 → 2019,
+but trends from 2016–2018 are not invalidated.
+You can think of this as setting a more accurate baseline for 2019.
+We retained alphabetical ordering in cases where respondents are likely
+to scan for a particular name,
+such as their preferred editor.
+We explicitly call out which questions this applies to below.
+
+A third major change was to improve our analysis of questions with open-ended,
+free-text responses.
+Last year we used machine learning to roughly—but quickly—categorize these responses.
+This year two researchers manually analyzed and categorized these responses,
+allowing for a more granular analysis but preventing valid comparisons with
+last year's numbers.
+Like the randomization discussed above, the purpose of this change is to
+give us a reliable baseline for 2019 onward.
+
+## Without further ado…
+
+This is a long post. Here's the tl;dr of our major findings:
+
+- The demographics of our respondents are similar to Stack Overflow's survey respondents,
+ which increases our confidence that these results are representative of
+ the larger Go developer audience.
+- A majority of respondents use Go every day, and this number has been trending up each year.
+- Go's use is still concentrated in technology companies,
+ but Go is increasingly found in a wider variety of industries,
+ such as finance and media.
+- Methodology changes showed us that most of our year-over-year metrics
+ are stable and higher than we previously realized.
+- Respondents are using Go to solve similar problems,
+ particularly building API/RPC services and CLIs,
+ regardless of the size of organization they work at.
+- Most teams try to update to the latest Go release quickly;
+ when third-party providers are late to support the current Go release,
+ this creates an adoption blocker for developers.
+- Almost everyone in the Go ecosystem is now using modules, but some confusion around package management remains.
+- High-priority areas for improvement include improving the developer experience for debugging,
+ working with modules, and working with cloud services.
+- VS Code and GoLand have continued to see increased use; they're now preferred by 3 out of 4 respondents.
+
+## Who did we hear from?
+
+This year we asked some new demographic questions to help us better understand
+the people who've responded to this survey.
+In particular, we asked about the duration of professional programming experience
+and the size of the organizations where people work.
+These were modeled on questions that StackOverflow asks in their annual survey,
+and the distribution of responses we saw is very close to StackOverflow's 2019 results.
+Our take-away is the respondents to this survey have similar levels of professional
+experience and proportional representation of different sizes of organizations
+as the StackOverflow survey audience (with the obvious difference that we're
+primarily hearing from developers working with Go).
+That increases our confidence when generalizing these findings to the estimated
+1 million Go developers worldwide.
+These demographic questions will also help us in the future to identify
+which year-over-year changes may be the result of a shift in who responded to the survey,
+rather than changes in sentiment or behavior.
+
+.image survey2019/fig1.svg _ 700
+.image survey2019/fig2.svg _ 700
+
+Looking at Go experience, we see that a majority of respondents (56%) are
+relatively new to Go,
+having used it for less than two years.
+Majorities also said they use Go at work (72%) and outside of work (62%).
+The percentage of respondents using Go professionally appears to be trending up each year.
+
+As you can see in the chart below, in 2018 we saw a spike in these numbers,
+but that increase disappeared this year.
+This is one of many signals suggesting that the audience who answered the
+survey in 2018 was significantly different than in the other three years.
+In this case they were significantly more likely to be using Go outside
+of work and a different language while at work,
+but we see similar outliers across multiple survey questions.
+
+.image survey2019/fig3.svg _ 700
+.image survey2019/fig4.svg _ 700
+
+Respondents who have been using Go the longest have different backgrounds
+than newer Go developers.
+These Go veterans were more likely to claim expertise in C/C++ and less
+likely to claim expertise in JavaScript,
+TypeScript, and PHP.
+One caveat is that this is self-reported "expertise";
+it may be more helpful to think of it instead as "familiarity".
+Python appears to be the language (other than Go) familiar to the most respondents,
+regardless of how long they've been working with Go.
+
+.image survey2019/fig5.svg _ 750
+
+Last year we asked about which industries respondents work in,
+finding that a majority reported working in software,
+internet, or web service companies.
+This year it appears respondents represent a broader range of industries.
+However, we also simplified the list of industries to reduce confusion from
+potentially overlapping categories (e.g.,
+the separate categories for "Software" and "Internet / web services" from
+2018 were combined into "Technology" for 2019).
+Thus, this isn't strictly an apples-to-apples comparison.
+For example, it's possible that one effect of simplifying the category list
+was to reduce the use of the "Software" category as a catch-all for respondents
+writing Go software for an industry that wasn't explicitly listed.
+
+.image survey2019/fig6.svg _ 700
+
+Go is a successful open-source project, but that doesn't mean the developers
+working with it are also writing free or open-source software.
+As in prior years, we found that most respondents are not frequent contributors
+to Go open-source projects,
+with 75% saying they do so "infrequently" or "never".
+As the Go community expands, we see the proportion of respondents who've
+never contributed to Go open-source projects slowly trending up.
+
+.image survey2019/fig7.svg _ 700
+
+## Developer tools
+
+As in prior years, the vast majority of survey respondents reported working
+with Go on Linux and macOS systems.
+This is one area of strong divergence between our respondents and StackOverflow's 2019 results:
+in our survey, only 20% of respondents use Windows as a primary development platform,
+while for StackOverflow it was 45% of respondents.
+Linux is used by 66% and macOS by 53%—both much higher than the StackOverflow audience,
+which reported 25% and 30%, respectively.
+
+.image survey2019/fig8.svg _ 700
+.image survey2019/fig9.svg _ 700
+
+The trend in editor consolidation has continued this year.
+GoLand saw the sharpest increase in use this year,
+rising from 24% → 34%.
+VS Code's growth slowed, but it remains the most popular editor among respondents at 41%.
+Combined, these two editors are now preferred by 3 out of 4 respondents.
+
+Every other editor saw a small decrease. This doesn't mean those editors
+aren't being used at all,
+but they're not what respondents say they _prefer_ to use for writing Go code.
+
+.image survey2019/fig10.svg _ 700
+
+This year we added a question about internal Go documentation tooling,
+such as [gddo](https://github.com/golang/gddo).
+A small minority of respondents (6%) reported that their organization runs
+its own Go documentation server,
+though this proportion nearly doubles (to 11%) when we look at respondents
+at large organizations (those with at least 5,000 employees).
+A follow-up asked of respondents who said their organization had stopped
+running its own documentation server suggests that the top reason to retire
+their server was a combination of low perceived benefits (23%) versus the
+amount of effort required to initially set it up and maintain it (38%).
+
+.image survey2019/fig11.svg _ 700
+
+## Sentiments towards Go
+
+Large majorities of respondents agreed that Go is working well for their
+teams (86%) and that they'd prefer to use it for their next project (89%).
+We also found that over half of respondents (59%) believe Go is critical
+to the success of their companies.
+All of these metrics have remained stable since 2016.
+
+Normalizing the results changed most of these numbers for prior years.
+For example, the percentage of respondents who agreed with the statement
+"Go is working well for my team" was previously in the 50's and 60's because
+of participant drop-off;
+when we remove participants who never saw the question,
+we see it's been fairly stable since 2016.
+
+.image survey2019/fig12.svg _ 700
+
+Looking at sentiments toward problem solving in the Go ecosystem,
+we see similar results.
+Large percentages of respondents agreed with each statement (82%–88%),
+and these rates have been largely stable over the past four years.
+
+.image survey2019/fig13.svg _ 700
+
+This year we took a more nuanced look at satisfaction across industries
+to establish a baseline.
+Overall, respondents were positive about using Go at work,
+regardless of industry sector.
+We do see small variations in dissatisfaction in a few areas,
+most notably manufacturing, which we plan to investigate with follow-up research.
+Similarly, we asked about satisfaction with—and the importance of—various
+aspects of Go development.
+Pairing these measures together highlighted three topics of particular focus:
+debugging (including debugging concurrency),
+using modules, and using cloud services.
+Each of these topics was rated "very" or "critically" important by a majority
+of respondents but had significantly lower satisfaction scores compared to other topics.
+
+.image survey2019/fig14.svg _ 800
+.image survey2019/fig15.svg _ 750
+
+Turning to sentiments toward the Go community,
+we see some differences from prior years.
+First, there is a dip in the percentage of respondents who agreed with the
+statement "I feel welcome in the Go community", from 82% to 75%.
+Digging deeper revealed that the proportion of respondents who "slightly"
+or "moderately agreed" decreased,
+while the proportions who "neither agree nor disagree" and "strongly agree"
+both increased (up 5 and 7 points, respectively).
+This polarizing split suggests two or more groups whose experiences in the
+Go community are diverging,
+and is thus another area we plan to further investigate.
+
+The other big differences are a clear upward trend in responses to the statement
+"I feel welcome to contribute to the Go project" and a large year-over-year
+increase in the proportion of respondents who feel Go's project leadership
+understands their needs.
+
+All of these results show a pattern of higher agreement correlated with
+increased Go experience,
+beginning at about two years.
+In other words, the longer a respondent has been using Go,
+the more likely they were to agree with each of these statements.
+
+.image survey2019/fig16.svg _ 700
+
+This likely comes as no surprise, but people who responded to the Go Developer
+Survey tended to like Go.
+However, we also wanted to understand which _other_ languages respondents enjoy working with.
+Most of these numbers have not significantly changed from prior years,
+with two exceptions:
+TypeScript (which has increased 10 points),
+and Rust (up 7 points).
+When we break these results down by duration of Go experience,
+we see the same pattern as we found for language expertise.
+In particular, Python is the language and ecosystem that Go developers are
+most likely to also enjoy building with.
+
+.image survey2019/fig17.svg _ 700
+
+In 2018 we first asked the "Would you recommend…" [Net Promoter Score](https://en.wikipedia.org/wiki/Net_Promoter) (NPS) question,
+yielding a score of 61.
+This year our NPS result is a statistically unchanged 60 (67% "promoters"
+minus 7% "detractors").
+
+.image survey2019/fig18.svg _ 700
+
+## Working with Go
+
+Building API/RPC services (71%) and CLIs (62%) remain the most common uses of Go.
+The chart below appears to show major changes from 2018,
+but these are most likely the result of randomizing the order of choices,
+which used to be listed alphabetically:
+3 of the 4 choices beginning with 'A' decreased,
+while everything else remained stable or increased.
+Thus, this chart is best interpreted as a more accurate baseline for 2019
+with trends from 2016–2018.
+For example, we believe that the proportion of respondents building web
+services which return HTML has been decreasing since 2016 but were likely
+undercounted because this response was always at the bottom of a long list of choices.
+We also broke this out by organization size and industry but found no significant differences:
+it appears respondents use Go in roughly similar ways whether they work
+at a small tech start-up or a large retail enterprise.
+
+A related question asked about the larger areas in which respondents work with Go.
+The most common area by far was web development (66%),
+but other common areas included databases (45%),
+network programming (42%), systems programming (38%),
+and DevOps tasks (37%).
+
+.image survey2019/fig19.svg _ 700
+.image survey2019/fig20.svg _ 700
+
+In addition to what respondents are building,
+we also asked about some of the development techniques they use.
+A large majority of respondents said they depend upon text logs for debugging (88%),
+and their free-text responses suggest this is because alternative tooling
+is challenging to use effectively.
+However, local stepwise debugging (e.g., with Delve),
+profiling, and testing with the race detector were not uncommon,
+with ~50% of respondents depending upon at least one of these techniques.
+
+.image survey2019/fig21.svg _ 700
+
+Regarding package management, we found that the vast majority of respondents
+have adopted modules for Go (89%).
+This has been a big shift for developers,
+and nearly the entire community appears to be going through it simultaneously.
+
+.image survey2019/fig22.svg _ 700
+
+We also found that 75% of respondents evaluate the current Go release for production use,
+with an additional 12% waiting one release cycle.
+This suggests a large majority of Go developers are using (or at the least,
+trying to use) the current or previous stable release,
+highlighting the importance for platform-as-a-service providers to quickly
+support new stable releases of Go.
+
+
+.image survey2019/fig23.svg _ 700
+
+## Go in the clouds
+
+Go was designed with modern distributed computing in mind,
+and we want to continue to improve the developer experience of building
+cloud services with Go.
+This year we expanded the questions we asked about cloud development to
+better understand how respondents are working with cloud providers,
+what they like about the current developer experience,
+and what can be improved.
+As mentioned earlier, some of the 2018 results appear to be outliers,
+such as an unexpectedly low result for self-owned servers,
+and an unexpectedly high result for GCP deployments.
+
+We see two clear trends:
+
+1. The three largest global cloud providers (Amazon Web Services,
+Google Cloud Platform, and Microsoft Azure) all appear to be trending up
+in usage among survey respondents,
+while most other providers are used by a smaller proportion of respondents each year.
+2. On-prem deployments to self-owned or company-owned servers continue to
+decrease and are now statistically tied with AWS (44% vs.
+42%) as the most common deployment targets.
+
+Looking at which types of cloud platforms respondents are using,
+we see differences between the major providers.
+Respondents deploying to AWS and Azure were most likely to be using VMs
+directly (65% and 51%,
+respectively), while those deploying to GCP were almost twice as likely
+to be using the managed Kubernetes platform (GKE,
+64%) than VMs (35%).
+We also found that respondents deploying to AWS were equally likely to be
+using a managed Kubernetes platform (32%) as they were to be using a managed
+serverless platform (AWS Lambda, 33%).
+Both GCP (17%) and Azure (7%) had lower proportions of respondents using
+serverless platforms,
+and free-text responses suggest a primary reason was delayed support for
+the latest Go runtime on these platforms.
+
+Overall, a majority of respondents were satisfied with using Go on all three
+major cloud providers.
+Respondents reported similar satisfaction levels with Go development for
+AWS (80% satisfied) and GCP (78%).
+Azure received a lower satisfaction score (57% satisfied),
+and free-text responses suggest that the main driver was a perception that
+Go lacks first-class support on this platform (25% of free-text responses).
+Here, "first-class support" refers to always staying up-to-date with the latest Go release,
+and ensuring new features are available to Go developers at time of launch.
+This was the same top pain-point reported by respondents using GCP (14%),
+and particularly focused on support for the latest Go runtime in serverless deployments.
+Respondents deploying to AWS, in contrast,
+were most likely to say the SDK could use improvements,
+such as being more idiomatic (21%).
+SDK improvements were also the second most common request for both GCP (9%)
+and Azure (18%) developers.
+
+.image survey2019/fig24.svg _ 700
+.image survey2019/fig25.svg _ 700
+.image survey2019/fig26.svg _ 700
+
+## Pain points
+
+The top reasons respondents say they are unable to use Go more remain working
+on a project in another language (56%),
+working on a team that prefers to use another language (37%),
+and the lack of a critical feature in Go itself (25%).
+
+This was one of the questions where we randomized the choice list,
+so year-over-year comparisons aren't valid,
+though 2016–2018 trends are.
+For example, we are confident that the number of developers unable to use
+Go more frequently because their team prefers a different language is decreasing each year,
+but we don't know whether that decrease dramatically accelerated this year,
+or was always a bit lower than our 2016–2018 numbers estimated.
+
+.image survey2019/fig27.svg _ 700
+
+The top two adoption blockers (working on an existing non-Go project and
+working on a team that prefers a different language) don't have direct technical solutions,
+but the remaining blockers might.
+Thus, this year we asked for more details,
+to better understand how we might help developers increase their use of Go.
+The charts in the remainder of this section are based on free-text responses
+which were manually categorized,
+so they have _very_ long tails;
+categories totalling less than 3% of the total responses have been grouped
+into the "Other" category for each chart.
+A single response may mention multiple topics,
+thus charts do not not sum to 100%.
+
+Among the 25% of respondents who said Go lacks language features they need,
+79% pointed to generics as a critical missing feature.
+Continued improvements to error handling (in addition to the Go 1.13 changes) was cited by 22%,
+while 13% requested more functional programming features,
+particularly built-in map/filter/reduce functionality.
+To be clear, these numbers are from the subset of respondents who said they
+would be able to use Go more were it not missing one or more critical features they need,
+not the entire population of survey respondents.
+
+
+.image survey2019/fig28.svg _ 700
+
+Respondents who said Go "isn't an appropriate language" for what they work
+on had a wide variety of reasons and use-cases.
+The most common was that they work on some form of front-end development (22%),
+such as GUIs for web, desktop, or mobile.
+Another common response was that the respondent said they worked in a domain
+with an already-dominant language (9%),
+making it a challenge to use something different.
+Some respondents also told us which domain they were referring to (or simply
+mentioned a domain without mentioning another language being more common),
+which we show via the "I work on [domain]" rows below.
+An additional top reason cited by respondents was a need for better performance (9%),
+particularly for real-time computing.
+
+.image survey2019/fig29.svg _ 700
+
+The biggest challenges respondents reported remain largely consistent with last year.
+Go's lack of generics and modules/package management still top the list
+(15% and 12% of responses,
+respectively), and the proportion of respondents highlighting tooling problems increased.
+These numbers are different from the above charts because this question
+was asked of _all_ respondents,
+regardless of what they said their biggest Go adoption blockers were.
+All three of these are areas of focus for the Go team this year,
+and we hope to greatly improve the developer experience,
+particularly around modules, tooling, and the getting started experience,
+in the coming months.
+
+.image survey2019/fig30.svg _ 700
+
+Diagnosing faults and performance issues can be challenging in any language.
+Respondents told us their top challenge for both of these was not something
+specific to Go's implementation or tooling,
+but a more fundamental issue:
+a self-reported lack of knowledge, experience, or best practices.
+We hope to help address these knowledge gaps via documentation and other
+educational materials later this year.
+The other major problems do involve tooling,
+specifically a perceived unfavorable cost/benefit trade-off to learning/using
+Go's debugging and profiling tooling,
+and challenges making the tooling work in various environments (e.g.,
+debugging in containers, or getting performance profiles from production systems).
+
+.image survey2019/fig31.svg _ 700
+.image survey2019/fig32.svg _ 700
+
+Finally, when we asked what would most improve Go support in respondents'
+editing environment,
+the most common response was for general improvements or better support
+for the language server (gopls, 19%).
+This was expected, as gopls replaces about 80 extant tools and is still in beta.
+When respondents were more specific about what they'd like to see improved,
+they were most likely to report the debugging experience (14%) and faster
+or more reliable code completion (13%).
+A number of participants also explicitly referenced the need to frequently
+restart VS Code when using gopls (8%);
+in the time since this survey was in the field (late November – early December 2019),
+many of these gopls improvements have already landed,
+and this continues to be a high-priority area for the team.
+
+.image survey2019/fig33.svg _ 700
+
+## The Go community
+
+Roughly two thirds of respondents used Stack Overflow to answer their Go-related questions (64%).
+The other top sources of answers were godoc.org (47%),
+directly reading source code (42%), and golang.org (33%).
+
+.image survey2019/fig34.svg _ 700
+
+The long tail on the previous chart highlights the large variety of different
+sources (nearly all of them community-driven) and modalities that respondents
+rely on to overcome challenges while developing with Go.
+Indeed, for many Gophers, this may be one of their main points of interaction
+with the larger community:
+as our community expands, we've seen higher and higher proportions of respondents
+who do not attend any Go-related events.
+For 2019, that proportion nearly reached two thirds of respondents (62%).
+
+.image survey2019/fig35.svg _ 700
+
+Due to updated Google-wide privacy guidelines,
+we can no longer ask about which countries respondents live in.
+Instead we asked about preferred spoken/written language as a very rough
+proxy for Go's worldwide usage,
+with the benefit of providing data for potential localization efforts.
+
+Because this survey is in English, there is likely a strong bias toward
+English speakers and people from areas where English is a common second or third language.
+Thus, the non-English numbers should be interpreted as likely minimums rather
+than an approximation of Go's global audience.
+
+.image survey2019/fig36.svg _ 700
+
+We found 12% of respondents identify with a traditionally underrepresented group (e.g.,
+ethnicity, gender identity, et al.) and 3% identify as female.
+(This question should have said "woman" instead of "female".
+The mistake has been corrected in our draft survey for 2020,
+and we apologize for it.)
+We strongly suspect this 3% is undercounting women in the Go community.
+For example, we know women software developers in the US respond to the
+StackOverflow Developer Survey at [about half the rate we'd expect based on US employment figures](https://insights.stackoverflow.com/survey/2019#developer-profile-_-developer-type) (11% vs 20%).
+Since we don't know the proportion of responses in the US,
+we can't safely extrapolate from these numbers beyond saying the actual
+proportion is likely higher than 3%.
+Furthermore, GDPR required us to change how we ask about sensitive information,
+which includes gender and traditionally underrepresented groups.
+Unfortunately these changes prevent us from being able to make valid comparisons
+of these numbers with prior years.
+
+Respondents who identified with underrepresented groups or preferred not
+to answer this question showed higher rates of disagreement with the statement
+"I feel welcome in the Go community" (8% vs.
+4%) than those who do not identify with an underrepresented group,
+highlighting the importance of our continued outreach efforts.
+
+.image survey2019/fig37.svg _ 700
+.image survey2019/fig38.svg _ 700
+.image survey2019/fig39.svg _ 800
+
+## Conclusion
+
+We hope you've enjoyed seeing the results of our 2019 developer survey.
+Understanding developers' experiences and challenges helps us plan and prioritize work for 2020.
+Once again, an enormous thank you to everyone who contributed to this survey—your
+feedback is helping to steer Go's direction in the coming year and beyond.