The Go team's latest developer survey shows that most "Gophers" like the language but highlight poor debugging tools and lack of generic support as top issues for improvement.
The survey, which was conducted in November and December 2019, attracted nearly 11,000 respondents, almost double the 2018 number.
Go was created by Google in 2007 and became a public open source project in 2009. The project reached a 1.0 release in 2012. It was "born out of frustration with existing languages and environments for the work we were doing at Google", according to the FAQ doc, and is a statically typed, compiled language which also aims to be modern and easy to use. Its natural competitors include Rust and Swift, along with the older languages C and C++. Kubernetes is largely written in Go, as you would expect given its Google origins, as is Docker.
Developers surveyed in today's report were generally happy with the language, with 89 per cent saying they would like to use Go for their next project, and 86 per cent saying it is working well for their team. That said, its usage is growing only modestly – from 7.1 per cent in 2018 to 8.2 per cent in 2019, according to Stack Overflow so as with Rust there is a question about whether its adoption has plateaued.
The survey throws up some notable points. A typical Gopher develops on Linux (66 per cent) and/or Mac (53 per cent) rather than Windows (20 per cent) – a strong showing for Linux compared to most developer surveys. The top application types worked on by Go coders are API or RPC (Remote Procedure Call) services (71 per cent), CLI (Command Line) programs (62 per cent), libraries and frameworks (48 per cent), and web services returning HTML (47 per cent). They are working on web applications (66 per cent), databases (45 per cent), network programming (42 per cent) and systems programming (37 per cent) – all areas where Linux is strong. Still, the preference for Mac over Windows is an indicator of Gopher culture.
IDE preferences are for Visual Studio Code (41 per cent, fractionally up on last year), JetBrains GoLand or IntelliJ (34 per cent, well up on last year's 24 per cent), or Vim (14 per cent, down from 19 per cent). The success of JetBrains has been remarkable, considering the wide availability of strong free alternatives. The company has various cross-platform IDEs built on its shared technology; many will be familiar with it via Google's Android Studio (which is free).
There are a few things bugging Gophers. One is well known: the language does not support generics. Of those who would like to use Go more, 79 per cent cited lack of generics as an adoption blocker, way ahead of any other issue. In January, Google's Robert Griesemer stated that for future improvements, "the primary goals for Go remain package and version management, better error handling support, and generics." He added that "we are making progress on the generics front (more on that later this year)" so watch this space.
Another issue is with debugging. "A large majority of respondents said they depend upon text logs for debugging (88 per cent), and their free-text responses suggest this is because alternative tooling is challenging to use effectively," says the report. Note that percentages do not total to 100 per cent, and 53 per cent do use a debugger such as Delve, but this still indicates a high reliance on text logs.
Working with modules is another areas of dissatisfaction, next after generics, though 89 per cent have now adopted Go modules, which was described as "a big shift for developers".
When it comes to deployment, there is a marked preference towards public cloud. Deployment to on-premises services is at 44 per cent, AWS 42 per cent, GCP 24 per cent, Digital Ocean 8 per cent and Microsoft Azure 7 per cent. Again the figures sum to more than 100 per cent. GCP scores above its general market share here, perhaps reflecting Go's origins, while Azure is well below. A concern for Microsoft though is not only that Azure usage is small, but that its users are less satisfied. 80 per cent of AWS users are positive, 78 per cent of GCP users, but only 57 per cent of Azure customers. Why? A study of the free text responses apparently suggests that "the main driver was a perception that Go lacks first-class support on this platform", such as support for the latest Go version in serverless deployments.
Overall it is not a bad scorecard for Go, with the key pain points all areas of active improvement. There is a less positive note though in Google's programming languages notes for its Fuchsia project, a new operating system. "The Fuchsia Platform Source Tree has had negative implementation experience using Go. The system components the Fuchsia project has built in Go have used more memory and kernel resources than their counterparts (or replacements) the Fuchsia project has built using C++ or Rust," said the team. This is despite wide familiarity with Go among those building Fuchsia. The implication is that while Go may be great for developing APIs and web services, it is not so good at the lowest level, perhaps a price paid for developer-friendly features like garbage collection. ®