In 2018 I gave my first conference presentation. It was quite the journey from being at NDC Minnesota in May — swearing I didn’t have the guts to be a speaker — to presenting at the Kansas City Developer Conference (KCDC) in July to a room of 120+ people.
NDC Minnesota
I was invited to participate in the Agenda Committee for the first NDC Conference in the United States — NDC Minnesota. It was my first opportunity to see how things worked behind the scenes at an international conference.
Going into the selection process I had a sense that being a conference speaker was a pretty high bar. Having to cull at least 90% of the proposals, I built up an even stronger mythology of what it takes to be a speaker at an international conference like NDC.
In early May, I found myself on the boat cruise for the event and talking to a number of the people I had helped select for the conference.
“What are you speaking on?”
I heard that question so many times that night.
It was a fair assumption that most people you were meeting for the first time on that boat were speakers and nearly everyone I met was a friendly speaker. Every single time I was asked that question, I quickly demurred — “Oh, no, I don’t have the guts to do that.”
To their credit, they all tolerated my naive response. Many surprised me by assuring that nearly all speakers feel that way at the beginning. Surely I had something worth talking about and listening to. They related their own journeys and insecurities. They encouraged me to give it a try.
Breakfast
A few mornings during the week of the conference I was joined at breakfast in the hotel by one of the speakers — Jeff Strauss — whom I had never met before. He was speaking at an NDC for the first time but was far from a first-time speaker. In addition to being an experienced speaker, he also turned out to be one of the passionate directors for the successful Kansas City Developer Conference (KCDC) event.
During those meals he was psyching himself up for his What You Need to Know About Open Source - Trust Me, I’m a Lawyer session on the last day of the conference. Despite having given the talk a number of times before, he was very concerned about making it great. (Later we would both find out that he crushed it. As an example, my boss referenced this talk more than any others at the event.)
During those unplanned (by me at least) conversations, I learned more about how speakers prepare — what they go through emotionally and physically trying to put themselves in the best position to demonstrate that it was the right call for the conference to accept their proposal.
The Hallway Track
Many conference goers talk about the value of the “hallway track”. This consists of the discussions between sessions or even in the hall during sessions. For me, the hallway track at this conference was an opportunity to talk about my company to those interested since we had a booth and I often volunteer for outreach.
During one of the sessions, Jeff introduced me to Jonathan Mills — another director of KCDC and experienced speaker. To my shock, Jon mentioned that Jeff was recruiting me as a new speaker! The two wore down my excuses off-and-on over the course of the last day of the NDC conference.
Until that point I hadn’t taken the idea of speaking very seriously. That was something other people did. Other people who knew more. Others who were braver. Sure, I could talk to people one-on-one or in small groups with little trouble, but a whole room of strangers and surely who knew more than I did?
One Final Excuse
The morning after the NDC conference I was in the lobby mulling over the invitation to submit a talk to the upcoming KCDC in July - two months away. Even if I was open to trying to give my first conference talk, it wouldn’t matter if I didn’t have a decent topic and a useful abstract.
The only thing I felt like I could talk about genuinely was my recent exploration of Kubernetes resulting in three blog posts about building up a cluster one component at a time.
I wasn’t convinced this was interesting enough, but I wrote up a draft abstract while watching hotel guests checkout and say goodbye. Eventually, Jeff and Jon stopped over and I ran my idea past them — half hoping they’d say, “Yeah, keep working on ideas.”
Instead, Jon said it sounded like a talk he’d go to.
And with that, I was out of excuses.
Preparing My Talk
Now that I had committed to giving the speaker thing a shot, I felt compelled to put everything I had into making it the best I could. After all, what was the sense of taking this risk if I wasn’t ready to find out if I could actually pull it off?
Presentation Style and Slides
During the NDC conference I briefly met David Neal and saw his very inspiring talk - Leadership Guide for the Reluctant Leader.
I thought David had a very interesting presentation style and made good use of his hand-drawn slides. As he talks about in his post — Captivate Your Audience Using Simple Illustrations — it is a great way to ensure the picture exactly matches what you need without spending a ton of time searching the internet or working with Photoshop. I decided to give that approach a try especially since most of the talk would be walking the audience through examples in the terminal. My few slides would largely be for context and helping folks keep track of where we were in the process.
Since I was already looking at David’s advice, I read up on what he sees as 5 Essential Ingredients for an Awesome Tech Talk. His points like admitting to mistakes and challenges you faced felt like a great fit for what I could offer an audience. However, I suddenly was questioning a major part of my plan — a “live coding” demo of standing up and interrogating Kubernetes components. In the end I decided to take the risk but find as many ways to limit the chance for things to go wrong and to practice the coding portion a lot.
I also thought a lot about what it would be like to give a demo working with container images on conference Wi-Fi. At best, conference Wi-Fi is unreliable and pulling huge files down could conceivably take minutes. I learned how to force Docker / Kubernetes to make use of local images and practiced without all networking turned off on my laptop.
Practice, Practice, Practice
An important step in my preparation for giving my first conference talk was to not have it be the first time I presented the talk. ;)
I am fortunate that the company I work for has a “by developers, for developers” regular internal event we call DevU. It is an opportunity for folks to present something they are passionate about to other devs. It is both optional — show up if it’s interesting to you — and well supported by the managers — devs are encouraged to attend and present but not penalized if they choose to skip it.
As soon as I found out that I had been accepted to KCDC, I arranged to give my first attempt at this presentation at a DevU in June. It would be recorded allowing me to critique myself and see what I should improve on. I would also have about four weeks to incorporate feedback. I didn’t know if anyone would attend but it was a topic I thought would be beneficial for our developers to learn more about so I didn’t think I would be wasting their time.
I rehearsed the 50 minute presentation all the way through well more than 10 times before the DevU. In the end, there were ~50 people in a room that comfortably holds 35. The room seemed engaged and afterward I received large amount of positive feedback.
Not bad for my first outing, but I knew I had some room for real improvement.
Tuning With Feedback
When I reviewed the recording from the internal DevU presentation I learned a few things.
First, I didn’t really smile.
For those who don’t know me, this isn’t really meaningful. For those who do, this is a surprise - I smile all the time and especially if I’m excitedly talking about a topic. In the recording I had decent body language and my eyebrows were emoting but the lower half of my face was super serious. Near the end of the presentation I started to field questions and “smiling Josh” finally made an appearance. I visibly relaxed because this was now a more a conversation than a presentation.
To improve, I realized that I needed to find a way to connect with the audience really early so I would settle down and show my own excitement for the topic. I thought about questions I could ask — “How many have worked with Docker before? Docker-Compose? Kubernetes?” Hopefully there would be something in that interaction to help. Or maybe I would be able to use some of the nervous time right before the session to have a brief conversation with some of the people in the front of the room.
Second, I needed to figure out a more reliable way to get the terminal to be visible in a lit room and also from a distance.
At NDC I also met Spencer Schneidenbach from the dev up conference. He gave me some advice via Twitter on avoiding my usual dark terminal setup.
I began to look for some iTerm2 / Oh-My-Zsh themes that would work well when the text was made much larger.
Third, not everyone dug my choice of hand-drawn slides.
One co-worker told me later that he thought I must not have had a chance to get my slides done in time. I had started the presentation with some more professional-looking images and the transition to hand-drawn threw him off. He’d also never seen that style of presentation before.
I thought about it for a while and ultimately decided I would work a little harder on my drawings but otherwise hope that the conference audience would be more familiar with a style like David Neal’s.
Technology Moves Fast
When I chose Kubernetes as a topic, I new that it moved quickly but I didn’t really understand what that would mean as a speaker.
When I presented at the internal DevU, I used Kubernetes v1.9 which was relatively new since v1.10 had only just come out. For the KCDC presentation I felt that I should try to upgrade to v1.11 since being two minor versions behind is a lot in Kubernetes-land.
So I fired up a new VM and gave it a shot. It failed.
After spending a few hours trying to understand what was “suddenly” broken, I realized that I was going to have to cut bait. Maybe the audience wouldn’t care what version I was running. Maybe sharing the story of this curveball would be a great anecdote for a group new to Kubernetes. All I could tell them at this point was the default security model had changed.
I took a deep breath and hoped for the best.
KCDC X
The journey to Kansas City was full of anxiety.
Flightbuds
I’m twitchy about all the timing things that could go wrong related to flying — traffic on the way to the airport, check in lines, security lines, flight delays, etc.
Thankfully, I had moral support going into this flight — another MN speaker going to KCDC for the first time, Lemon, was on the same flight! He was kind enough to tolerate my incessant questions with good humor. It was also a good distraction to talk about anything other than the upcoming presentations we were going to give. :)
Nerves and Mingling
The time finally came when I was in Kansas City the afternoon before the conference got started.
A common practice is for conferences to host speakers at a dinner the night after the workshops and before the event proper kicks off. This is both a chance to do something nice for the speakers and for the speakers to mingle and meet the conference staff in person.
I remember being in this new city, quite nervous, in a room full of people who I really didn’t know — I’d only met the two conference directors so far — and trying to figure out how to make the most of the time. I knew I wouldn’t be able to spend much time with Jeff or Jon since they would be extremely busy with the other speakers and making sure the event was going well.
Enter Jennifer Wadella.
As I surveyed the full restaurant trying to figure out where to even attempt to find a place to sit, Jennifer turned to me and asked, “Have you been to KCDC before?” I said, “No,” and that was all it took.
“Come with me,” she said with a smile full of confidence.
A minute later I was sitting at a table introduced by the unofficial welcoming committee of Kansas City developers. Jennifer took me under her wing as a “duckling” and made a point of including me in many of the activities that evening.
I can’t fully express how much this meant to me. With all my nerves as a first time speaker and at this large conference for the first time my tendency to be somewhat comfortable meeting new people was crippled.
If you are ever in a position to welcome new speakers to your town / conference do not underestimate how impactful that can be.
The Last Few Hours
I was scheduled to present on the first day of regular sessions after lunch.
I woke up early and rehearsed the full presentation in my hotel room before heading to the conference for breakfast. Now my actual session would be the second time “presenting” this material that day.
After breakfast, I went to sessions to get a sense of what the rooms were like and how other presenters worked with them. Every session was a mental dress rehearsal — how would I handle the questions or challenges that came up?
I found the room I was presenting in during the last session before lunch. Before heading to get food, I took the time to see if I could adjust the podium to work best for my laptop and the screen. I would be behind my machine often enough that I wanted to be sure I wasn’t tucked away in the corner like some presenters prefer to have their laptops.
This was also a good opportunity for me to test how visible the terminal text would be from the back of the room. I tweaked the size a bit more and adjusted the height of the projector slightly.
Eventually, I was satisfied that I was as ready as I could be. I was still nervous but the best thing I could probably do would be to see if I could get a little food in my stomach and get back to the room a bit early.
Giving the Presentation
One challenge I faced was two introductory Kubernetes sessions were scheduled at the same time.
I had learned how hard it was to get a “perfect” schedule during my time working with NDC Minnesota so I didn’t blame the conference. The other session was focused on how to use Kubernetes. Mine instead focused on what makes up a Kubernetes cluster. I was concerned that folks might attend mine but be better served by the other session.
In the 10 minutes I had before my official start time I started talking to some of the people in the room. I knew that making a personal connection would help my nerves. But I also wanted to get a sense of why they chose to attend my session over the other one. I underestimated how much people actually read the abstract — almost all of them had made the decision intentionally and were curious about what made Kubernetes tick.
It turned out that having a mohawk helped too. ;)
With about two minutes to go, one of the people I was talking to asked what the story was with my haircut. I smiled and shared an anecdote about a coworker teasing me that I didn’t have a distinctive enough hairstyle. Telling the familiar and somewhat silly story helped me to settle down.
The time eventually came to get started.
I kicked off with the obligatory “thank the sponsors” slide. Then I took a big risk by specifically calling out the other Kubernetes session. I let the room know that I would not be hurt if they “voted with their feet”. Very few left but it helped me feel more confident that those who stayed were as likely to be interested in my session as I could hope for.
The talk was going fairly well and was nearly done when I realized that I had not set a timer.
Every practice run had included the timer as a way for me to gauge how much time I had left to help me better pace the content. When I eventually got my bearings, I realized that I was 10 minutes ahead of schedule and would still need to fill the session. I had one anecdote I could stretch a bit — my upgrade challenge from a few weeks ago — but then I would probably need to punt and hope Q&A goes well.
I was lucky.
The questions I got were good ones that generally I could answer. A few were ones I could easily admit to not knowing but was able to suggest ways to find out. Somehow I was spared the “I have a statement, not a question,” and “Well, actually,” questions.
And then it was over.
The Aftermath
I thanked the audience and for the first time noticed just how full the room was. It was more than twice the size of the internal DevU group I had practiced in front of, and yet, I survived.
Maybe I even enjoyed it.
While I was packing up to clear the room for the next speaker, I got a few more questions. One or two people even said they enjoyed the session. I don’t really remember the details because things were a bit of a blur and feeling unreal.
Later in the day, I was able to find out how my session was rated using a secret ballot of green (great!), yellow (could be better), and red (I want my time back!) chips as people left the room. It was excellent, especially for a first conference presentation!
Even better were tweets like the following:
You did great! Nobody would have guessed it was your first talk
— Mark Gould (@britishcanuck) July 12, 2018
and
Thanks for all the positive response to my #Kuberbetes presentation at #kcdc2018 - especially since it was my first conference talk! https://t.co/4SaykE0dGZ
— Joshua Sheppard (@joshualsheppard) July 13, 2018
In the end, I decided that I liked the experience — even with all the nervousness leading up to it. While I was still on that emotional high, I submitted the talk to NDC London and agreed to submit to dev up when it opened. More recently, I submitted the talk to CodeMash.
Epilogue
I don’t think I know what the normal path to speaking is like and in many ways I’m still waiting for the other shoe to drop.
My sense is that you start at small meet-up’s and user groups not 2000-person conferences like KCDC. Also, you should probably have a first rough presentation after which your friends pick you back up and help you realize it’s still OK. In addition, I haven’t even gone through what I assume is a more normal set of failed submissions. My talk is 2/2 — dev up said yes, NDC London and CodeMash haven’t made announcements yet.
(Update: only dev up accepted the talk — but it did get posted to InfoQ!)
I feel like I skipped the line. I also suspect the first time my talk is rejected and/or inevitably goes poorly (e.g. I failed to adequately prepare, the audience expected something else, etc.) I won’t be as well prepared to shake it off. I am incredibly privileged to have been supported so significantly this early in trying something new.
In many ways, that’s where this post is coming from — helping me maintain some perspective whatever the future holds.
For now, I will see where this speaker thing goes… At least until this next set of submissions run their course.
P.S. A big “thank you” to those, named and unnamed, who helped make this experience possible and awesome!