---
title: 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. These conferences 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)
- Carmen Andoh, candoh@google.com, [@carmatrocity](https://twitter.com/carmatrocity)

(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.)
