# Announcing the 2019 Go Developer Survey
20 Nov 2019
Tags: survey, community
Summary: Since 2016, thousands of Gophers around the world have helped the Go project by sharing your thoughts via our annual Go Developer Survey. Your feedback has played an enormous role in driving changes to our language, ecosystem, and community, including [the gopls language server](https://about.sourcegraph.com/go/gophercon-2019-go-pls-stop-breaking-my-editor), new [error-handling mechanics](https://blog.golang.org/go1.13-errors), the [module mirror](https://blog.golang.org/module-mirror-launch), and so much more from the latest [Go 1.13 release](https://blog.golang.org/go1.13). And of course, we publicly share [each](https://blog.golang.org/survey2016-results) [year's](https://blog.golang.org/survey2017-results) [results](https://blog.golang.org/survey2018-results), so we can all benefit from the community's insights.

Todd Kulesza
tkulesza@google.com

## Help shape the future of Go

Since 2016, thousands of Gophers around the world have helped the Go project
by sharing your thoughts via our annual Go Developer Survey.
Your feedback has played an enormous role in driving changes to our language,
ecosystem, and community, including [the gopls language server](https://about.sourcegraph.com/go/gophercon-2019-go-pls-stop-breaking-my-editor),
new [error-handling mechanics](https://blog.golang.org/go1.13-errors),
the [module mirror](https://blog.golang.org/module-mirror-launch),
and so much more from the latest [Go 1.13 release](https://blog.golang.org/go1.13).
And of course, we publicly share [each](https://blog.golang.org/survey2016-results)
[year's](https://blog.golang.org/survey2017-results) [results](https://blog.golang.org/survey2018-results),
so we can all benefit from the community's insights.

Today we are launching the 2019 Go Developer Survey.
We'd love to hear from everyone who uses Go,
used to use Go, or is interested in using Go,
to help ensure the language, community, and ecosystem fit the needs of the
people closest to it.
Please help us shape Go's future by participating in this 15-minute survey by December 15th:
[Take the 2019 Go Developer Survey](https://google.qualtrics.com/jfe/form/SV_b1xqnBCMpZAhJZ3).

## Spread the word!

We need as many Gophers as possible to participate in this survey to help
us better understand our global user base.
We'd be grateful if you would spread the word by sharing this post on your
social network feeds,
around the office, at meet-ups, and in other communities. Thank you!
