Participate in the 2018 Go Company Questionnaire
4 Oct 2018
Tags: survey, community

Ran Tao, Steve Francia
spf@golang.org

* The Go project wants to hear from you!

We need your help to create the best programming language for developing
simple, reliable, and scalable software. To do this, we need to better
understand how companies are using Go. Please help by participating in a
7-minute company questionnaire.

*Who:* If you are in a position to share details like “company name,” “if your
company is hiring Go developers,” and “reasons your team or company adopted Go”
then please help us by taking this company questionnaire. We only need one
response per company (or per department for larger companies). If you aren’t the
right person, please forward this onto the right person at your company.

_Please_note:_this_is_different_from_our_annual_anonymous_Go_user_survey,_which_
_will_be_announced_in_November._

*Where:* Please take this 7-minute questionnaire by October 30th:
[[http://goo.gl/nnPfct][Go Company Questionnaire 2018]].

The questionnaire is confidential, but not anonymous. For more information,
please refer to Google’s privacy policy
[[https://policies.google.com/privacy][here]].

The Go project leadership will use your responses to better understand how
companies use Go and in what ways we can improve their experience.

* Spread the word!

We would like as many companies as possible to participate to help us better
understand our global user base. Please help us spread the word by sharing this
post on your social network feeds, at meetups, and in other communities.