A reader of my book C++ Brain Teasers recently emailed me and asked:
By the way, I’m curious how one gets to a point in their C++ journey / career when they’re able to give talks at these large conventions. Do you have any insights on this?
I figured I’d reply in blog form, in case someone else is wondering the same. Note that while I’ve spoken at conferences like CppCon, Meeting C++, and others, I’m by no means a big fish speaker. But I at least have the advantage of explaining it while still remembering how it is to be new in the game.
So, how does one become a speaker at these conventions? Let’s first clarify a few important points:
1. Speakers are not special
Conference speakers might seem like they know more than the rest of us, and one might think only the best programmers become speakers. This is not true. Several of the best programmers I’ve worked with, who are certainly more knowledgable and smarter than me, have never spoken at a conference. To speak at a conference, you don’t need to be best, you just need to have something you want to tell, and be decent at presenting it. (See below if you’re not yet experienced with presenting.)
2. Speakers don’t know it all
When I’m in room A talking about CPU memory models, someone else is in room B talking about coroutines. It’s easy to think that all the speakers know all these things. Most of us don’t. I have no idea how coroutines work. Last week I had to google how to use std::cin.
What I’m saying is that you too can become a speaker, you don’t need to be the smartest or most experienced person in your team / class / group of friends. You just need to love learning, and be motivated to try speaking about what you’ve learned.
Getting started
So how do you get started, then? Speaking is a skill, just like programming. The more you do it, the better you’ll become at it. Here are some tips to get started:
- If there are tech talks at work, volunteer to give one. If there aren’t, start organizing some. In my experience, management tends to be very happy when someone steps up to improve the skills of the team. Start simple, 10 minute lightning talks before lunch every second week or something. Give the first talk yourself, then ask others to present too. And if your first talk isn’t great, even better, then the bar is lower for the next person! :) The talks can be on something you feel others need to know, something you want to learn about, some language feature, some cool new thing someone did at work, etc.
- If you’re still in uni/college, volunteer to help your fellow students. This will give you experience with teaching and explaining things. Try to get a job as a teaching assistant.
- Seek out local user groups. Use a search engine, check meetup.com, etc. In Oslo we have Oslo C++ Users Group, there might be something similar near you. See if they have some lightning talk evenings coming up. If not, message the admin and ask. They tend to like it when people take initiative for something to happen.
- Be curious! Read, watch other talks, try things out. If you’re not somewhat passionate about this, chances are you won’t enjoy speaking. It’s quite some work, and typically not paid.
But what should I speak about?
Try to focus on something specific for a while
My best trick for coming up with a talk is to work on something specific for a good amount of time. For instance, in once company I worked at, I took the main responsibility for linking and physical architecture. Whenever there was an issue related to linking, symbols, etc., I tried to get myself assigned to it. This taught me a lot, and resulted in three conference talks.
Write a talk about something you want to learn
To be honest, this approach is a lot of work, but it can be a great way to come up with a talk. For instance, at one point I wanted to better understand the Assembly output on https://godbolt.org. I had learned a tiny bit of Assembly in college a long time ago, but had forgotten most of it. I wasn’t able to find a good talk about it, so I figured, hey, let’s learn this, and give that talk that the world is missing. It took weeks, but resulted in my most successful talk Just Enough Assembly for Compiler Explorer, which I’ve presented at many conferences. While it’s a lot more work to write a talk about something you don’t already know well, you have one big advantage – you still know what’s hard about the topic. It’s also fun to learn, and in my experience, the best way to learn something is to attempt to explain it to others.
Talk about what you wish more people knew / did / cared about
This works especially well for lightning talks. Have you recently discovered a super useful tool that more people should know about? Are you driven nuts by people using technique X wrong? Give a lightning talk about it.
Preparing and giving the presentation
There’s a lot to say about preparing and giving a presentation; too much to cover here, and others have done it better. But make sure to prepare well in advance, use high contrast and a large font, and rehearse a lot. Even the most experienced speakers like Matt Godbolt rehearse their talks over and over.
Have fun speaking!