| # 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. |