How To Not Hate Public Speaking (Part 2)

This is a continuation from part 1 of my story about my personal speaking career journey so far. I recommend you read that post first as otherwise you’ll lack some important context needed to understand the full journey.

Fair warning once again: This is a long blog post. I plan to create short, more digestible posts that will follow this one to expand on the benefits of speaking and some tips and techniques I’ve used to date. But you’re here now, so why not stick with it? 🙂

I’ll continue from where I left off in part 1

Chapter 3: Becoming a conference speaker

A few weeks after presenting my first external talk, buoyed by the success of the evening the next thing I did seems pretty crazy to me, even now, I submitted a talk to a conference in their call for papers. What!!? Yeah, I’m still not sure exactly what possessed me! I had only given one public talk and one internal talk for goodness sake!

I first heard about a conference in London called Progressive .NET whilst listening to the .NET Rocks podcast. Richard and Carl would be there and it sounded like a lot of fun. I checked out the site to see how much a ticket would cost. It was whilst there that I noticed that a call for papers was open. Why not I thought! I had been avidly blogging about Docker for .NET Developers by this point and realised that I had a lot of content that could be formed into a talk. I spent 30 minutes developing an brief outline for a Docker talk and hit the submit button… Oh good God, what had I done!?

After that I forgot about it for a little while, until weeks later I got an email telling me that my talk had been accepted. Amazing; but also… aargh!

I responded back and started discussing the details of the travel and expenses. Being new to conference speaking I was unsure of the exact process. I knew that to attend the three day conference I would ideally need to stay up in London to avoid early starts and commutes fraught with the risk of train cancellations. I agreed with the organiser of the event that I could book a hotel for a few nights and that they would cover the cost, along with my train fare. This seemed very reasonable to me. I could also invite a friend/colleague on a guest ticket which was an extra bonus.

Now the hard part began; taking my rough outline and turning it into a talk. I had 45 minutes to fill and I knew that I wanted to include some demos along with my slides. I spent many hours figuring out how to take beginners through the topic of Docker. I wanted to share our journey at Madgex, building up to a big finish – showing a docker build and deploy into AWS ECS. After working at it for those many hours I got to the point where I had slides and some demo projects prepared. Then the even tougher work began, practicing. As before I spent a lot of hours in the evenings and at weekends fitting in rehearsals. Some just of the slides, some just of the demos and many of the complete talk. I focused carefully on timing since I had to try and hit the 45 minutes exactly. I was aiming to allow 5 minutes for questions, so needed 40 minutes of content to present. I focused on controlling my speaking speed as my prior experience told me that I would likely speak faster in the heat of the moment. I wanted to balance between practicing at what I expected to be a real speed, whilst also learning how to avoid going too fast.

Something which was often at the back of my mind was the issue of demo failure. What if my demos didn’t work? One of the demos was dependant on having a good internet connection to push a Docker image up to AWS and show how we deploy the image into production. Without a reasonable internet link I would be left pretty much high and dry. I decided to develop some safety nets for my demos, which would become plan B and plan C. Plan B was a set of videos that I recorded, showing the key steps from the demos. I recorded these and could fall back to them in the event of internet issues. For plan C I included screenshots and copied code as slides in a backup PowerPoint file. This was in case I had any laptop issues and ended up needing to present on a backup device during the conference. As a worst case I could present these slides and talk through the steps. Having these backup plans available made me feel much better about my demos.

At around the time I was finalising the main content I happened to be speaking to Dylan Beattie, who helps organise the Progressive .NET event and he suggested practicing the talk for a smaller audience at a user group before the conference. He had the perfect option, London .NET user group which he co-organises. He gave me date options and in the end I chose the 8th of August as it meant I’d have time after to make any changes before the conferences in September. The only downside was that it was only two days after arriving back from a holiday in Norway, so not much time to do final practice runs. I also learned from Dylan that it had helped my chances greatly of being accepted for Progressive .NET tutorials after he’d seen my first talk at ALT.NET in Brighton. So a little bit of luck and good timing had helped me there. It was fantastic that on the back of that first talk it led Dylan to advocate for me as a speaker. Thanks Dylan!

After arriving back from Norway I started to feel a little stressed about the upcoming user group. I hadn’t rehearsed anything for nearly two weeks and I was worried that I would have lost some of my flow. I spent my lunchbreak on the Monday running through my slides and then a few hours that evening as well. When Tuesday arrived I wished I was more rehearsed but there was not much I could do about it at that point. I worked until around 3:30pm at which point I headed for the station and the train which would take me to Skills Matter in London where the user group meets. This would be the same venue as the upcoming conference so it was useful to have a chance to familiarise myself with it.

I arrived at Skills Matter fairly early and went on down to the room the user group would be using for the evening. It was nice being early as the room was nearly empty and I could get settled, while checking my laptop was ready for the demos and connected to the video system. It was at this point I had my first tech failure. The new presentation clicker I had purchased wouldn’t connect to my laptop. After two attempts, repeating something I’d done tens of times at home, it was clear it was a losing battle. Luckily, Dylan had his clicker to hand and this seemed to work just fine in my laptop. Panic over!

The room started to fill and before long the final few minutes were counting down. I was definitely pretty nervous by that point. What if I forgot what I wanted to say? What if I wasn’t clear enough? What would happen if my demos failed? The tech guy from Skills Matter came over and distracted my worried thoughts to get me wired up with a lapel microphone. This would be my first experience of using a microphone when speaking.

Shortly afterwards it was time for the event to start. Dylan kicked off with a quick introduction to the group and all too quickly he was introducing me to the audience. No backing out now! I stood up and felt a small rush of fear, followed by a surge of adrenaline. The room was full and there were a lot of expectant faces gazing back at me. And so I began, just as rehearsed, launching into my introduction. I was conscious of a little shake in my hands as my heart started pumping and the adrenaline kicked in. I pushed through and after a few minutes I settled down. From my experience so far, I still consider these first 3-5 minutes the hardest as I and the audience warm up. As I picked up momentum I was pleased with how things were going. I was able to make regular eye contact with people around the room and the flow I’d rehearsed was working well. Even the demos went entirely to plan. My hours of practice had definitely paid off. At the end I opened to questions and got quite a few. I was a little worried about questions since there is always the risk that you get asked something you don’t know. However, I found that in all cases I was able to offer an answer that I hope was satisfactory.

Later, during the post meetup drinks I was approached by a few of the attendees who thanked me for the talk. The feedback was very positive, people had enjoyed the content and the delivery. It was very pleasing to hear and this feedback was extremely important to realise that I was on the right track. It’s feedback like this which has given me further confidence to consider more speaking engagements.

Another thing which happened during this timeframe was receiving a LinkedIn message from Hannes Preishuber‏ who runs a training company called PPEDV in Germany. Hannes wanted to invite me to speak about Docker at a conference he was organising in Cologne called ADC (Advanced Developer Conference) Core. This was an extremely exciting prospect and one I hoped could become a reality. I checked the dates and realised this would be the week immediately after my first ever conference at Progressive .NET. Other than creating two very busy weeks I decided that I could make it work and so I readily agreed to the offer. As well as my Docker talk, I offered a short talk about Humanitarian Toolbox as I was keen to have a chance to promote that to as wide an audience as possible. Both talks were accepted. The only downside for me was that the session length for ADC Core was 70 minutes. This meant I would need to extend my Docker talk and have a version that could run to this length. Also, 70 minutes is quite an intimidating length of time to be in front of an audience.

The weeks after my talk at the London .NET user group passed quickly. I spent a lot of free time refining my slides and mostly practicing everything many times over. I was also actively working on my extended slide deck for ADC Core. I quickly found that the additional time for that talk meant I could cover some important topics which I had to gloss over for the shorter version. It didn’t take long to develop a few additional slides which brought me up to the required 70 minutes. As I neared my final rehearsals, switching between my shorter and longer versions I soon realised I was getting mixed up with my timings, spending too long on some of the slides during the 45 minute version, pushing me over my time limit. I decided that I would develop timing sheets for each version, listing the exact time that I could spend on each slide. I did this by timing my talks during multiple rehearsals, logging the run time at the point of switching to each slide. After a while I had a decent set of timings for each version. Now, during each practice run I had a timer app running on my phone which I used to keep pace. I found this really valuable since I knew exactly if I was running too long or too short against plan.

The final preparation for my first conference was another user group talk. This time for the new .NET South East meetup group I had organised. I won’t go into the motivation for that group here, but you can read more in this previous post. The opportunity to present the talk one more time in front of an audience was very useful. The night of the user group was pretty frantic as there was a lot to organise. I didn’t have a huge amount of time for nerves. I was more nervous about opening the evening where I would introduce the group and how things worked. I’d had little time to practice what I would say so was feeling less confident. I do remember thinking that I sounded a bit nervous during that introduction. It was a very successful evening and my Docker talk went well. This time around it felt very natural and I quickly got into my rehearsed rhythm. It’s amazing how quickly something so alien and scary had started to feel more normal. Conditioning at work!

Conference No. 1

On Tuesday 12th September I set off for London, ready to start my conference career! I was feeling equal parts excited and nervous at the thought of speaking. The conference was due to start the next day and that would be my day to speak. Arriving on the Tuesday I was going to be able to attend a speakers drink evening at Skills Matter before heading upstairs to listen to Richard Campbell talk about the History of .NET at a special London .NET User Group meetup. The drinks was a great way to meet some of the other speakers and to relax. However, I did feel like a bit of an imposter, amongst such experts and regular speakers.

The next day I got up early to give me time to complete one final rehearsal of my talk in my hotel room. The walls of the Travelodge were quite thin so I hope I didn’t wake my neighbours with my Docker talk. If I did, I hope they enjoyed it! With a successful rehearsal complete I headed out and walked to the venue at Skills Matter. They had breakfast of fruit and pastries laid out which I took advantage of before sitting down to review my slides. I wanted everything as fresh as possible before I spoke later that morning. At 9am it was time for the conference opening Keynote from Jon Galloway. It was a great talk and an example of an expert speaker presenting comfortably to the crowd. After Jon there was one more session before I would speak. I chose to head down to the room I would be speaking in to watch the talk before mine. No pressure for me, it was Jon Skeet! Jon is a well-known and expert presenter and I knew he would be a tough act to follow. During Jon’s talk I started to think about the time ticking away to my start time. As ready and practiced as I was, I was starting to get very nervous about speaking.

Before long I had no time left to be nervous, Jon was wrapping up his talk. During Jon’s talk I had tested that my laptop was working and connected to the network. I’d also done a quick check of the steps for each demo to make sure they were all functioning. Check! As Jon started to clear his laptop away I started to prepare mine at the front of the room. The A/V guy came over to help me get the microphone attached and tested. There was about 15 minutes between sessions, which goes very quickly when you’re getting setup and fortunately the tech check took my mind mostly off having to speak. Before I knew it, it was time to start. Ian Cooper, one of the event organisers, introduced me and that was it, I was off. Launching into my well-practiced introduction I soon found my confidence and the nerves started to ease. Within a few minutes I was enjoying myself and the room seemed engaged with what I was saying. I was trying to scan the faces around the room as I was speaking. The demos also proved to be successful – hooray! I was checking my timer at each slide change and I was nicely on track, generally only a few seconds outside of my target times. I was extremely glad I had prepared a timing sheet as it gave me the confidence that I progressing as rehearsed.

Before long the timer was at 40 minutes and I was wrapping up the final slide. This was spot on since I’d allowed about 5 minutes for questions from the audience. As I was clearing down my equipment a number of people came to speak to me in person and each one said some very positive things. It was nice to be able to interact directly with people, get a feel for how it had gone and also answer some further questions. Hearing from people that it had been a big help and a great introduction made all of the time spent preparing feel very much worthwhile. Later I would get sent my feedback scores for the session, captured via an online feedback system.

Fantastic session! Learned lots!

68%

Session was good, I enjoyed it!

32%

Needs improvement, expected more from this session.

0%

I am very happy with these scores, especially for a first conference talk!

Conference No. 2

I stepped off the plane in Germany, ready for my next conference. I would soon become an international speaker! It was very exciting to have a second opportunity to speak so soon after the first but it was also quite daunting to be doing this one outside of the UK. I’d arrived on the Sunday afternoon to give me time to get settled in and to attend the speaker dinner.

My first talk was on day one of the conference, just after lunch. This would be the 70 minute version of my Docker talk. In the morning I got up early to give me time for a run-through of the presentation. I hadn’t rehearsed this talk since giving the 45 minute version in London, so I wanted to refresh my mind for the timings. Again, I had a full timing sheet for the presentation and it meant that I was able to stick pretty close to the plan. With the rehearsal a success I treated myself to a quick breakfast and then headed to the conference venue, a few minutes’ walk from the speaker hotel.

Being a predominantly German speaking conference this presented some additional time to review my slides and gather my thoughts before my talk. There was little to gain from sitting in a German speaking session. This proved to be a double edged sword though. In London I had been attending the prior talks and so while I didn’t spend time on practicing immediately before my talk, I also had my mind taken off the fact that I would soon be speaking. In Germany this was not the case and so I did have more time to get nervous leading up to my session. I do remember questioning whether I could really present for 70 whole minutes. During lunch my nerves really started to kick in and I couldn’t really eat the food on my plate.

20 minutes before my start time I went into Raum 1 (Room 1) to prepare. I like to have time to be sure all of the demos can connect and that my laptop connects to the HDMI system. As the talks were being recorded I also needed to get my microphone setup and to work with the tech staff to ensure the screen and audio was being picked up by the recording system. During this time the room started to fill with attendees… and kept filling. Just prior to the scheduled start time it was pretty full and a good proportion of the attendees from the conference were staring back at me. In this conference it would be a case of kicking off my session myself without an introduction. As the time ticked over to 1pm I started my timer app on my phone and began my talk.

I’d included a single line of German which translated as “Good day, my name is Steve…. And that is all my German”. As I’d hoped this triggered a laugh and in fact a small applause! It was a nice ice-breaker and put me at ease much more quickly than in London. After that I launched into the rehearsed presentation and the 70 minutes flew by. As in London, all of the demos worked and I was happy with the pace of the presentation. I did manage to make one typo when running through one of the demos but a helpful audience member helpfully pointed it out. It was a tense second or two for me as I realised something had not gone quite to plan, but it was a only minor glitch and no one seemed to mind.

The session generated quite a lot of questions which I spent a few minutes answering. One of the attendees did seem to have missed an early point that I think had led to some confusion on why we were using containers. I spent a bit of time clarifying. Afterwards another attendee found me and spoke to me privately, explaining that I’d been very clear and not to worry that one person had got a little confused. This was very re-assuring as I wasn’t sure if the content or perhaps language barrier had made my talk confusing. He didn’t think so and said that a few other people had commented on learning a lot from the session. It’s important to remember though that it is possible to loose people and that any keys points early in a talk should sometimes be re-iterated to give people a second chance to catch up. It’s a small thing, but something I will try to remember when building my content in the future.

Summary

That brings us up to date with my short but exciting speaking career so far. This is hopefully only the beginning of my journey and as it turns out… I don’t hate public speaking! I had a fear of it which meant I avoided doing it, but fears can be beaten. Having faced that fear, I feel much more comfortable giving talks. Don’t get me wrong, I do still have nerves and stress before speaking, but it’s far more manageable and I now know that the resulting buzz from speaking will outweigh those nerves. I still have lots that I can improve in terms of presentation style and experience that needs to be gained but I’ve made some important early steps. There’s a huge amount of satisfaction from being able to stand up and share with others, to help them understand something new and to inspire them to go and learn more. So what next? I hope to find more conferences and user groups that I can speak at and I already have ideas to start developing some future talk topics as well.

I’m very thankful to a number of people along the way who have offered encouragement and advice. In particular I want to offer thanks to Dylan Beattie, who helped give me the break at my first conference and offered his support to gain some valuable speaking experience. A special mention goes to my wife who put up with me regularly disappearing into the office to rehearse and develop my talks. Many hours of my free time were devoted to these tasks and my wife supported my efforts and encouraged me through periods of doubt I had about speaking. This encouragement and support cannot be underestimated in helping me to start my journey and develop myself as a speaker. I hope by sharing this post that perhaps I can encourage some other potential speakers to take the first step and like me, learn not to hate public speaking.

That’s my candid story and I hope this divergence from technical blogging has been useful to some of the readers who have stuck with me for around 7,500 words across these two long blog posts. Coming up soon I plan to write some much shorter posts where I will get more practical and share some tips and techniques from my limited speaking experience so far. I’ll update this introductory post with links once those posts come online. Thank you for reading and if you’ve been even slightly tempted to try public speaking, please do give it a go and let me know how you get on.

Things I’ve Learnt This Week (12th February)

Week 3 of my series, sharing things I’ve learnt, read, watched and listened to, in the pursuit of expanding my knowledge about software development.

Things I’ve Learned

Dependency Injection in Middleware

An important thing to consider when building custom Middleware in ASP.NET Core – If you are injecting a dependency into the constructor of your Middleware it may have unwanted effects if that dependency is expected to be a scoped/transient resource. The Middleware is constructed once for the app lifetime during Startup and not recreated for every request. If you want a transient/scoped dependency, inject it into the Invoke method’s parameters which is called once per request and therefore will give you the correctly scoped instance of your dependency every time.

Dependency Injection Lifetime Fun

A little long for this weekly post, I wrote up a dedicated post this week about some “fun” I had tracking down a range of errors we were seeing in some code this week. Spoiler alert… scoped lifetime dependencies inside a singleton lifetime registration = not good!

I also published a post this week entitled “Migrating from .NET Framework to .NET Core” which describes the process I followed to move an ASP.NET Core application from the full .NET framework onto .NET Core, enabling cross-platform development.

Things I’ve Read

In no particular order here’s some of the blogs and posts that I’ve read this week.

Things I’ve Listened To

Things I’ve Watched

Tools

  • ChangemakerStudios – Papercut – A useful local SMTP receiver for testing email in your code on localhost. This week I was adding some email functionality to one of our services and I wanted to test the flow locally in development. This tool was really easy to use and worked perfectly for my requirements.