# Resources for New Speakers

Go needs everyone's help.
We want to see more new speakers with new perspectives at Go conferences,
especially more women and others underrepresented in the Go community.

The process of applying to speak at a tech conference can be a bit opaque and confusing 
for first-time speakers.
In general, please remember that, first and foremost,
conferences organizers want to find great talks;
there is no single format or recipe for a great talk;
and you need not be a Go expert to give a great talk.
All that you need to be is excited about sharing something
you've observed or learned about using Go.

Here are some good blog posts with tips for writing conference talk proposals:

- “[How to write a successful conference proposal](https://dave.cheney.net/2017/02/12/how-to-write-a-successful-conference-proposal)” by Dave Cheney
- “[How to write a successful conference proposal](https://medium.com/@fox/how-to-write-a-successful-conference-proposal-4461509d3e32)” by Karolina Szczur
- “[Is your conference proposal good enough?](http://rckbt.me/2014/01/conference-proposals/)” by Raquel Vélez (rockbot)
- “[What your conference proposal is missing](http://www.sarahmei.com/blog/2014/04/07/what-your-conference-proposal-is-missing/)” by Sarah Mei

Elsewhere on the wiki, we maintain a list of [upcoming conferences](Conferences) with links to CFPs.
The same page also lists past conferences with links to talk videos.

Right now, these conferences are looking for new speakers:

- [GopherCon Singapore](https://www.papercall.io/gopherconsg-2018), May 4, 2018. Proposals due February 28.
- [GopherCon Iceland](https://www.papercall.io/gophercon-iceland), June 1-2, 2018. Proposals due March 3.
- [GopherCon, Denver](https://www.papercall.io/gophercon2018), August 28-29, 2018. Proposals due March 15.
- [GoLab, Italy](https://www.papercall.io/golab2018), October 22-23, 2018. Proposals due April 4.

They welcome speakers of all experience levels and backgrounds!

## Contact Us

We, the Go community members listed below,
are happy to discuss or review talk proposals
and answer other questions about the overall speaking process.
Feel free to contact any of us directly.

- Russ Cox, rsc@golang.org, [@_rsc](https://twitter.com/_rsc)
- Steve Francia, spf@golang.org, [@spf13](https://twitter.com/spf13)
- William Kennedy, bill@ardanlabs.com, [@goinggodotnet](https://twitter.com/goinggodotnet)
- Cassandra Salisbury, cassandra@golangbridge.org, [@cassandraoid](https://twitter.com/cassandraoid)
- Ashley McNamara, ashmc@microsoft.com, [@ashleymcnamara](https://twitter.com/ashleymcnamara)
- Brian Ketelsen, bjk@microsoft.com, [@bketelsen](https://twitter.com/bketelsen)
- Natalie Pistunovich natalie@golangbridge.org, [@nataliepis](https://twitter.com/nataliepis)
- Erik St. Martin, erikstm@microsoft.com, [@erikstmartin](https://twitter.com/erikstmartin)
- Francesc Campoy, campoy@golang.org, [@francesc](https://twitter.com/francesc)
- Sameer Ajmani, sameer@google.com, [@Sajma](https://twitter.com/Sajma)
- Florin Pățan, florinpatan@gmail.com, [@dlsniper](https://twitter.com/dlsniper)
- Aaron Schlesinger, arschles@gmail.com, [@arschles](https://twitter.com/arschles)
- Paul Jolly, paul@myitcv.io [@_myitcv](https://twitter.com/_myitcv)
- Alexey Palazhchenko, alexey.palazhchenko@gmail.com [@paaleksey](https://twitter.com/paaleksey) (English, Russian)

(Experienced speakers, feel free to add your contact information to the list, or email rsc@golang.org if you don't have wiki edit permission.)