How I Prepared My First Tech Talk
I interned at React core team during last summer and was partly responsible of experimenting and dog-fooding Suspense inside Facebook, which is a new feature of React, as you may know.
React Suspense is a new design aimed at handling asynchronous operations in React. It brings a lot of improvement on code splitting, async data fetching, and writing more idiomatic React code. As at that time, Suspense was quite a new thing, very few people knew what that was all about. Even in Facebook, the React team put a lot of effort in educating engineers.
So then as you could imagine, I spent fair amount of time building up the mental model, understanding what problems it aimed to solve and how it’s designed, etc. As my internship was about to end, I got closer and closer to being confident to talk about that, both on a high level and in details. Also, I really felt that Suspense is going to change the way we write React applications and bring both the user experience and developer experience to a next level. My desire to talk about it in public grew stronger as day went by. Often, I found myself talking to myself as if explaining Suspense to a total stranger.
Other than that, after some time of learning programming, I gradually came to the conclusion that a big part of learning is done by teaching. How wonderful is that! You can learn the most while giving back to the community and influence people that you don’t even know. It’s definitely not coincidence that the greatest programmers are also great speaker and educator. By saying that, you know who I’m talking about.
Now I want to be one of them. Why not?
Lucky of me that I later got an invitation to a front-end conference hosted in China. It was a perfect timing (January of 2019, after my graduation when I’ll be back in China). It was too good an opportunity to let it slip away.
It was October when I confirmed the invitation, so I got roughly more than two months, which were plenty of time to have everything prepared.
I was at first so thrilled that I wrote up the first version of my slides and demo in less than a week. Another reason why things progressed so fast was because, as I mentioned, I’ve been constantly thinking about it ever since my internship. It was almost like my train of thoughts rushing out of my mind, that have been whispering for half a year.
The next thing to do was to make sure that my understanding of Suspense was correct. You might think this is easy since I had been working closely with Suspense in the React team during the internship. But I have to confess that there were quite some details that slipped away from me that I might not even notice. It’s human’s nature to forget and get away with things they don’t know or they feel uncomfortable with. One of the difficulties that I met with was that, there were very limited materials about React Suspense at that time. One thing I did is to go over the tweets by my co-workers, especially who participated in designing them, like Andrew, Sebastian and Dan. I also re-watched their talk about Suspense a couple of times. Also, I re-read all the unit test cases of Suspense from React’s codebase, to double confirm the code behavior corresponds to my understanding of it. It’s your responsibility to do so, as you are literally educating people. If you deliver the wrong knowledge, people will find it even harder to go back to the right track, as they already had the wrong impression at first.
Although I haven’t given a single tech talk, but I’ve watched and listened a lot from some decent speakers. When I was preparing my materials and designed my lines of talk, I recalled how they usually talk, in what speed and intonation, and how they would throw a new concept to the audience. I also thought about a lot on what I would expect the most, if I were one of the audience. From the slides, to the way of talking, every detail. Do I prefer live coding demo? Do I feel good about a bullet list in a slide? In what circumstances do I tend to get confused, or even distracted? I re-watched a lot of tech talks by my favorite speakers and write down my feelings as audience, along while they’re talking. The more I practice this way, the more I know what my audience want, and don’t, the more I know what I should deliver, what I should not mention and avoid.
But still, I spent a lot of time coming up with a gradual and smooth way of explanation so that the audience could feel like they are climbing up stairs, not a riff. I constantly reminded myself a few things, for example, that it should be one new concept at a time. Don’t assume that people know anything. What’s the tradeoff of mentioning something new? Is it adding redundant noise to the topic? Don’t rush to the conclusion. Recap before going to the next topic. Tell people what you’ll doing…
It’s worth mentioning the way I prepared all the stuff. I feel lucky that I got more than enough time to get everything sorted out. The whole process was not like I set aside one hour per day and sat before a table to start working on the slides and the demo. It’s quite like writing a blog post. You think about it all the day, even subconsciously while sleeping. You get inspirations from time to time and ideas start to sparkling. It’s interesting that the more you think about it, the more decent thoughts you get and then you write it down in your slides and do adjustments. That’s exactly what my preparation was like. Some days I didn’t come up with some good ideas to improve the materials. But when I did, I tried to write it down immediately to not let it slip away.
One thing I learned at Facebook, from my colleagues, is that you can never pay more attention to wording. Wording is important. It’s not like informal talk, where people are likely to talk in a more casual way. When it comes to blog post or tech talk, we should pay attention to our way to phrase things. Are we giving people wrong impressions? Are we creating confusions using this word? Is there better and clearer alternative? I recall that the team spent quite a long time and discussion, naming “hooks”, and switching from “Async Mode“ to “Concurrent Mode“. Don’t assume that people will understand your talk the same way you think you are talking. You’ll be surprised how often they don’t.
With time going by, the material and structure of my talk became much clearer. I then tweeted to ask advice from tech speakers (Maybe I should’ve done this at the beginning). Sophie, who is the manager of the React team and also a great speaker, suggested me that I do more dry-runs with my friends. I couldn’t agree more with it. I’ve mentioned a lot about being empathetic but rehearsing with your friends gives you much more accurate feedback that you might fail to be aware of.
I remember the first time I rehearsed with my friend in a Starbuck, the moment I started talking, I felt so awkward and clumsy. I constantly stammered between words. My tone became flat after I talked a while and it soon appears to be rumbling. And during the dry-run, I noticed a lot of problems, for instance, somewhere missing a recap as a connection between two topics, or I forgot to mention something that I intended to say during this page of slide, etc. Before my friend gave me feedback, I already know what I should be working on for the rest of time.
I have to kindly warn you that talking in your mind and speaking out loud are far from similar. Often, whispering doesn’t truly reflect the content you intend to say. And you cannot really mimic your voice conditions when you talked aloud for a while. Some facts like that I’m easy to get thirsty after talking for a while will be slipped away if you don’t do a real rehearsal.
After that I practiced two more times with my friends, and even more times by myself (using camera to record myself). They were ideal audience in that they knew very little about the topic I was going to talk about, so I can check afterwards if they really got the point or understood the content, based solely on my talk. I was happy that the more I practiced, the more I became fluent in talking and confident in speaking. I eventually got more control over things. At the last time of rehearsal, I got very positive feedback from my friends, which made me relieved. In retrospect, I couldn’t imagine what a disaster it’ll be if I hadn’t practiced with my friends for not even a single time.
Shout out to people who help me dry-run, proof-read my slides and demo, and give me advices on the talk!
There’s not that much to talk about when it’s the time to get on the stage because I’ve almost got everything ready. It’s just like another dry-run, with, at that time, a lot of strangers. I was happy to find that after so many times of rehearsals, I didn’t feel nervous at all standing on the stage and talking. Actually it felt fantastic!
Considering the feedback I got from people, I’m overall satisfied with the result. I delivered almost everything that I’ve prepared beforehand. Of course it was far from perfect, and I know there were a lot of things that I could’ve done better, for example, I could’ve be more humorous so that the atmosphere could lit up a bit and I could’ve interacted more with the audience (It was so quite when I was talking). I was also aware that I’m still not that good at controlling the pace of speaking, and the intonation either.
Not Over Yet
Giving a public tech talk is one of my goals in 2019. I’m happy that it came to realize this early with a decent result and memorable experience. I met a lot of people and learned a lot watching others’ talks. Yet there’re a lot to come. What about giving a talk in English? What about talking another, probably more challenging topic? What if you’re asked to have more interaction with the audience, like a Q&A session?
These are just yet to come.
My Personal Tips
At last I want to give you some tips on preparing your first talk. These are the things that I find very important and I keep reminding myself constantly:
- Is your topic too broad?
- Did you assume people to be familiar with something to understand the topic?
- Are you introducing too many new concepts, which might become noise or distractions?
- Did you forget to recap before diving into the next topic?
- If you’re live coding, have you made it clear what you’re doing?
- Do people feel comfortable watching your slides and demo? It doesn’t have to be fancy, but better be clear and concise.
- Did you introduce some problems to solve? Or are you just talking?
- Did you put too much information on a single page of slide?
- Is your voice becoming lower and flat after a while of talking?
- If you’re typing, are you typing too fast or slow?
- If you have a coding demo, does it have features that are irrelevant to your topic?
- Did you give enough time of interval while talking, so that the audience could take to consume the knowledge?
I wrote up this blog post when I was on the train back home. Hope this helps you eliminate your fear to be a conference speaker!