The project behind Go, an open-source programming language developed within Google, has surveyed thousands of software developers to uncover what technology they're using and the pain points of using the language.
Go – which Google built for big distributed computing and released just over a decade ago – has become one of the tech world's most popular languages to use, currently ranking 14th in RedMonk's list of top languages.
Besides Google, other large companies that use Go today include Netflix, American Express, Salesforce, IBM, Target, Twitch, Twitter, Uber, and Dropbox.
Google describes it as "syntactically similar to C, but with the added benefits of memory safety, garbage collection, structural typing, and CSP-style concurrency".
SEE: How to build a successful developer career (free PDF)
The Go project has now released the results of its 2019 survey of 10,975 Go users, most of whom use Go daily. It found that 86% of respondents feel Go works well for their teams and that 89% would like to use it for their next project, showing little change since 2016.
Go developers are satisfied with the performance aspects they rate as important, including build speed, CPU usage, reliability, editor support, and memory footprint. Areas they are less satisfied with include debugging, using cloud services, and using modules.
These preferences haven't changed much over the years, with the exception of TypeScript and Rust, which both record an increase in the number of Go users who find them appealing. However, most Go developers prefer Python.
Some 66% of Go programmers use the language for web development, while 45% use it for building databases, 42% use it in network programming, 38% use it in systems programming, and 37% use Go in DevOps.
Go users largely are keeping up with new releases of Go, with 75% moving to the latest version for production use within five months of its release, and 12% moving up within the first year. Google's Todd Kulesza said this trend highlighted "the importance for platform-as-a-service providers to quickly support new stable releases of Go".
The question of Go support by major cloud providers has affected Go developers' attitudes toward Amazon Web Services, Google Cloud Platform (GCP), and Microsoft Azure.
Notably fewer Go developers are satisfied with Go development on Azure compared with AWS and GCP. Only 57% of Azure users are satisfied, compared with 80% for AWS and 78% for GCP. A quarter of free-text responses noted Azure's lack of first-class-support for Go, meaning that Azure isn't keeping current with the latest Go releases and features.
Nonetheless, use of the big three cloud providers is up across the board, but AWS still has a huge lead over rivals, with 42% of respondents deploying Go programs to it, nearly matching the 44% who deploy them on their own servers. Some 24% of respondents deploy Go code on GCP, while 7% deploy Go on Azure.
But Microsoft's popular editor Visual Studio Code (VS Code) remains the most popular choice for Go developers, with 41% using it. However, GoLand grew from 24% last year to 34%. The two editors are used by 75% of the Go developer population.
The order of OSes that most Go developers use for building are Linux, macOS, and Windows. A third report only using Linux, 26% only use macOS, 23% use macOS and Linux, 9% use Linux and Windows, and 6% use only Windows.
The main reason Go users aren't using Go more is because they're working on a project written in another language, but a quarter of users report Go is lacking critical features and nearly 80% of them cite generics or Go's lack of generic types, while 22% said it needs better error handling, and 13% want more functional programming features.
That result won't surprise Google's Go team, which last year said the three biggest hurdles for Go were package and version management, better error-handling support, and generics. Complaints about the lack of generic programming have been around since Go was released and it's been the top complaint in Go user surveys for the past four years.
"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," said Google's Kulesza.
Google's Ian Lance Taylor discussed the pros and cons of generics in Go at last year's Gophercon and has released a design proposal for it.
But he noted that Google was aiming to make it "possible to write the kinds of generic code I've discussed today, without making the language too complex to use or making it not feel like Go anymore".