- Go Developer Survey 2020 Results
- Alice Merrick
- The Nuggets translation Project
- Permanent link to this article: github.com/xitu/gold-m…
- Translator: samyu2000
- Proofreader: PingHGao, PassionPenguin
2020 Go Developer Survey report
In 2020, 9,648 people voted in our poll, similar to what we did in 2019. Thank you for taking the time to share your insights and experiences with the Go language in this community.
New modular questionnaire design
You may have noticed that some questions have a smaller sample size than others. That’s because these questions were for all respondents, while others were for some.
Bright spot
- Go language is widely used in the industry. 76% of respondents use Go language at work, and 66% of respondents believe that Go language is very important to help companies succeed.
- The overall satisfaction with Go is very high, with 92% of respondents satisfied with their use of Go.
- After less than three months, the majority of respondents rated Go as productive, and 81 percent rated it very productive.
- Some respondents said they upgrade to the latest version of Go in a timely manner, with 76% doing so within five months of a new release.
- When finding packages, respondents who used pkg.go.dev had a 91 percent success rate, compared to 82 percent who did not.
- Go modules are used 77% of the time, but respondents also stressed that documentation needed to be improved.
- Go language is widely used in API, CLIs, Web, operation and data processing.
- Underrepresented groups tend to feel less welcome in the community. The underrepresented group of respondents perceived themselves as unwelcome in their communities.
Who are we looking at?
We need to distinguish which changes from last year are due to emotional or behavioral factors of respondents and which are due to changes in the group of respondents. Questionnaire design based on demographic principles helps us achieve this goal. Since the statistical principles we used this year are similar to those used last year, we have reason to believe that these changes are largely due to changes in the statistics.
For example, the size of the company, development experience, and the distribution of the industry in which it operates remain basically unchanged compared to 2019.
About half (48%) of those surveyed had less than two years of experience using Go. According to our findings, fewer developers will have been using Go for less than a year in 2020.
A majority of those surveyed said they were likely to use Go both at work and outside of work, with 76% at work and 62% outside of work. The percentage of Go speakers at work is increasing every year.
This year we added a new question to the questionnaire, which is related to key job responsibilities. We found that 70 percent of respondents were responsible for developing software systems and applications, but a minority (10 percent) were responsible for designing IT systems and architectures.
We found that, as in previous years, the majority of respondents contributed very little to the open source community for the Go language, with 75% answering “rarely” or “never.”
Develop tools and practices
As in previous years, the vast majority of respondents said they developed Go applications on Linux and macOS, 63% and 55% respectively. The percentage of respondents developing on Linux systems has gradually declined.
For the first time, editor preference has stabilized: VS Code remains the most used editor (41%), followed by GoLand at 35%. Together, they accounted for 76%, with no consistent decline in other editors as in previous years.
This year we asked respondents to rate how much they would spend to improve the editor if they had 100 GopherCoins, a virtual currency. The result: the largest amount of currency per person is spent on code completion. Half of respondents said they would spend 10 or more coins on four areas (code completion, code navigation, editor performance, and code refactoring).
The majority of respondents (63%) spent 10-30% of their time refactoring code, indicating that refactoring is a common task and should be improved. This also explains why code refactoring is one of the most expensive aspects of editor optimization.
Last year, we asked developers about technical issues and found that almost 90 percent of our respondents were using text logs to debug their programs, so we added a question this year to follow up on the phenomenon to find out why they were doing it. The results: 43% of respondents found this method easy to debug between languages, and 42% consistently preferred this method of debugging. However, 27% do not know how to start a debugging tool for the Go language, and 24% have never used a debugging tool, so it needs to be improved to make it easy to find, use and document. Moreover, since a quarter of respondents never tried debugging tools, the associated pain points are likely to be underestimated.
Attitude towards Go
2020 was the first year we looked at overall satisfaction. 92% of respondents said they were very satisfied with Go in the past year.
This is the third time we’ve asked respondents, “Would you recommend… “And then counted the net recommended value (NPS). This year our statistical NPS is 61 (68% recommended minus 6% not recommended), the same as the previous two years.
Similar to last year, 91% of respondents said they would prioritize using Go for their next new project. 89% said Go was useful to their team. We also found that the percentage of people who think Go is important to the success of their business rose to 68 percent this year from 59 percent last year. Respondents working for companies with more than 5,000 employees were less likely to agree with these views (63 percent) and more likely to agree (73 percent) among those working for small companies.
As last year, we asked respondents to rate the satisfaction and importance of Go in certain areas. In the areas of cloud services, debugging, and modules, satisfaction with Go has increased, but its importance remains the same. We also introduced two new areas: API and Web architecture. We found that the Go language has a lower satisfaction rating (64%) than other areas when it comes to Web architecture. This is not important to most existing users, but newcomers to the industry will take these factors into account.
Eighty-one percent of respondents said it was very efficient to develop using Go. Respondents working for large companies were more likely to agree with this view than those working for small companies.
We know from various informal sources that the Go language can quickly improve development efficiency. So we asked respondents who reported at least a slight increase in productivity how much time they had spent improving their productivity. Less than a year was the answer of 93% of respondents, most of whom took only three months.
While the percentage of respondents agreeing with the statement “I feel welcome in the Go community” is about the same as last year, it seems to be trending down over time, or at least not up as much as in other areas.
We also found a significant increase, to 63%, in the percentage of Go project managers who believe they understand project requirements.
These findings show that, starting about two years ago, people’s acceptance of Go was positively correlated with development experience. In other words, the longer you use Go, the more likely you are to agree with these ideas.
We also asked an open question about how to make the Go development community more welcoming, and the majority (21%) of the suggestions we received were for the community to provide various forms of learning resources and documentation, as well as suggestions for improvements to those materials.
Use the Go language for development
The most common use scenarios for Go include building API/RPC services (74%) and CLI (65%). We don’t see any significant changes from last year, when we introduced randomization in the ordering of options. (The choices at the top of the list don’t make sense until 2019.) We also broke it down by enterprise size and found similar responses to Go from large and small enterprises, although large enterprises are less likely to use Go to develop Web services that return HTML.
We now have a better understanding of the software respondents use at home and at work. Although Web services that return HTML are the fourth most common use case, this is still a non-working use. More respondents use Go for automation/scripting, proxies, and data processing than for developing Web services. Most of the least common types of apps (desktop /GUI apps, games, and mobile apps) are written by developers in their spare time.
Another new topic is how satisfied the Go language is in each application domain. Satisfaction was highest in the CLI area, with 85% of respondents saying they were very, fair or slightly satisfied. Applications in the general domain also have high satisfaction, but satisfaction and general degree are not the same. For example, agents and daemons rank second in satisfaction and sixth in generality.
Other questions focused on different use cases, such as which platforms the respondents developed the CLI for. Given the widespread use of Linux and macOS by developers, it is not surprising that 93% are Linux specific and 59% macOS specific. Still, nearly a third of CLI developers use Windows as their target platform.
A closer look at Go’s use in data processing shows that Kafka is the only compatible engine, but most respondents said they use a custom data processing engine.
We also asked if there are more applications for Go. The results show that by far the most common area is Web development (68%), followed by databases (42%), operations (42%), Network programming (41%), and systems programming (40%).
Similar to last year, we also found that 76% of respondents had evaluated whether the current version of Go was appropriate for project development, and this year we improved the time scale and found that 60% of respondents had started evaluating the new version or two months before it was released. This is important for vendors who offer the platform as a service to their users, and if they know this in advance, they can quickly support stable new versions of Go.
Using the Go modules
This year we saw a significant increase in the percentage of respondents who use Go Modules as a package management tool in general. 96% of respondents said they use Go Modules for package management, up from 89% last year. The number of respondents who only use Go Modules to manage packages increased from 71% last year to 87% this year. At the same time, the use of other package management tools has decreased.
The satisfaction of each module is also higher than last year. 77% of respondents said they were very, fair or somewhat satisfied with modules, up from 68% in 2019.
The official documentation
Many respondents said they had difficulty reading official documents. Sixty-two percent of respondents were worried about not finding enough information to implement the functionality needed by their applications, while more than a third of developers had difficulty learning new things they had not been exposed to before.
The biggest problem areas in official documentation were module use and CLI development, with 20% of respondents saying module documentation was somewhat or not helpful and 16% saying CLI development documentation was somewhat or not helpful.
The application of Go in cloud computing
Go has also been designed with support for distributed computing, and we hope to continue to improve the experience of developers building cloud services using Go.
- The three major global Cloud service providers (Amazon Web Services, Google Cloud Platform and Microsoft Azure) continue to see increasing usage among respondents, while the other providers have only a small number of users each year. Microsoft Azure in particular grew significantly, from 7% to 12%.
- On-prem deployments to proprietary servers, the most common deployment target, continue to decline.
The percentage of respondents deploying to AWS and Azure has increased to the hosted Kubernetes platform, now at 40% and 54%, respectively. The percentage of Azure users deploying Go programs to virtual machines decreased significantly, and container usage increased from 18% to 25%. At the same time, deployment of GCP (which already has a high percentage of respondents reporting using hosted Kubernetes) to a serverless cloud has increased from 10% to 17%.
Overall, the majority of respondents were satisfied with the use of Go on the three cloud service platforms, with the statistics unchanged from last year. Respondents had similar satisfaction with AWS and GCP’s Go development services, reaching 82% and 80%, respectively. Azure has a low satisfaction rate (58%), with the need for improvements to Azure’s Go SDK and more support for Azure functions frequently cited in feedback from free-speaking users.
Pain points
The top reasons for not developing with Go continue to be the current use of other languages (54%), the current use of other languages by development teams (34%), and the lack of some important features in the Go language itself (26%).
This year, we introduced a new option — “I can already use Go in any situation I want” — so respondents can opt out of making choices that don’t prevent them from using Go. This greatly reduces the selection rate of all the other options, but does not change their relative order. We also introduced the “Go language lacks a critical framework” option.
If we only focused on those respondents who filled out their reasons for not using Go, we would have a better idea of the year-to-year trend. Using another language in an existing project will reduce the project/team/leader’s preference for another language over time.
Twenty-six percent of respondents said Go lacked the language features they needed, and 88 percent said generics were the key feature the language lacked. Other key missing features are: better error handling (58%), safeguards against NULL values (44%), functional programming features (42%), and a stronger/extended type system (41%).
To be clear, these numbers are from only a subset of respondents who said they would use Go more if Go provided some key features they needed, not all of them. To put this in perspective, 18% of respondents don’t use Go because they lack the generics they need.
The biggest challenge with Go was the lack of generics (18%), while module/package management tools and learning curve/best practices/documentation issues both accounted for 13%.
Go Developer Community
This year we asked respondents to name five q&A sites they used regularly. Last year we only asked for three, so the results can’t be directly compared, however, StackOverflow is still the hottest, with 65% of respondents using it. Source code remains a popular learning resource (57%), while reliance on Godoc.org has dropped significantly (39%). Package-finding site PKg.go. dev is a new addition this year and has become the top choice for 32 percent of respondents. Respondents who used pkg.go.dev were more likely to say they could find the package they needed faster. 91% chose to use pkg.go.dev and 82% chose other sites.
Over time, the proportion of respondents who no longer participate in offline activities related to Go continues to increase. We revised the questions due to COVID-19 and found that more than a quarter of respondents are spending more time participating in online activities than they did last year, and 14 percent have attended a virtual party featuring Go development, twice as many as last year. Of those, 64% said it was the first virtual meeting they had attended.
We found that 12% of respondents were from traditionally underrepresented groups (e.g., ethnic minorities, gender minorities, etc.), the same percentage as in 2019. Two percent of respondents were women, down from three percent in 2019. Respondents from underrepresented groups were more likely to disagree with “I’m popular in the Go community” (10% vs. 4%). These questions allow us to measure the diversity of the community and highlight opportunities for expansion and growth.
This year we added an additional question about assistive technology use and found that 8% of respondents were using some form of assistive technology. The most commonly used assistive techniques were contrast or color Settings (used by 2% of respondents). This is a timely reminder that we have a large audience with typical needs, and it motivates our design team to meet those needs.
The Go team focuses on diversity and inclusion, not just because it’s the right thing to do, but because different voices can shine a light on our blind spots and ultimately benefit all users. The way we ask for sensitive information, including gender and belonging to traditionally underrepresented groups, has changed under data privacy regulations, and we hope to make these questions, particularly about gender diversity, more inclusive in the future.
conclusion
Thank you for reading our 2020 Developer Survey. Understanding the experiences of developers and the difficulties they face will help us examine ourselves and guide the future of Go. Thanks again to everyone who took part in this survey – we couldn’t have done it without you. Look forward to meeting again next year.
If you find any mistakes in your translation or other areas that need to be improved, you are welcome to the Nuggets Translation Program to revise and PR your translation, and you can also get the corresponding reward points. The permanent link to this article at the beginning of this article is the MarkDown link to this article on GitHub.
The Nuggets Translation Project is a community that translates quality Internet technical articles from English sharing articles on nuggets. The content covers Android, iOS, front-end, back-end, blockchain, products, design, artificial intelligence and other fields. If you want to see more high-quality translation, please continue to pay attention to the Translation plan of Digging Gold, the official Weibo, Zhihu column.