# Announcing the 2020 Go Developer Survey
20 Oct 2020
Tags: survey, community
Summary: Please take the 2020 Go Developer Survey. We want to hear from you!

Alice Merrick
amerrick@google.com

## Help shape the future of Go

Since 2016, thousands of Gophers around the world have helped the Go project
by sharing their 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,
the latest generics draft, the module mirror, and so much more.
And of course, we publicly share [each year's results](https://blog.golang.org/survey2019-results),
so we can all benefit from the community's insights.

This year we’ve streamlined the survey to shorten the time it takes to
complete and improved the survey’s accessibility.
The specific questions each person will see are randomly selected,
so folks who’ve taken the survey in prior years may not see all of the
questions they are used to.
Rest assured that they are still there. This approach allows us to ask about
a wider variety of topics than in prior years while also reducing the survey’s length.

Today we are launching the 2020 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 10-minute survey by November 8th:
[Take the 2020 Go Developer Survey](https://google.qualtrics.com/jfe/form/SV_1O0A5f70Q38dlVr).

## 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 virtual meet-ups, and in other communities. Thank you!
