Hello, Scala eXchange!

In 2 days I'm hitting an intimidating but exhilarating goal: giving my first talk at a conference.

I've got the opportunity to deliver a lightning talk entitled "flatMappy bird: functional flappy bird" at Scala eXchange 2016.

In this post I wanted to share my experience (so far!) of being a first time speaker, and share some tips and encouragement for anybody interested in setting themselves a 2017 challenge!

Hopefully you'll see that I realised speaking is entirely subjective, and just like software it is possible to approach it in an iterative manner to gain confidence. The fact I'm able to write this post before my talk hopefully demonstrates this!

How did it all start?

Well, I'd had an itching to do something like this for a while. It turns out an itching doesn't cut it when faced with the unboundless procrastination potential gifted by a CFP email.

Like most things I've done in life, a healthy dose of peer pressure was required to get me started. This came in the form of badgering from Sofia Cole. I'm very grateful for this, and would almost certainly not have followed through with it otherwise!

Tip 1: Find someone willing to badger.

Why did you decide to do a lightning talk?

For me, the amount of anxiety this was beginning to induce (even before the CFP stage) meant I was mentally refusing to do anything more than a lightning talk. So that was cool: identifying constraints is a good thing.

Tip 2: Work out your mental constraints ASAP (are you confident enough to dive into a full length talk?).

How did you decide on the subject?

I was working on a hacky side project on my commute to work - a flappy bird game.

I found it absolutely fascinating.

But, to be honest, I hadn't taken time to understand how some of the more abstract parts of it actually worked.
I'd kind of lost motivation as I had cracked the interesting part: getting the player moving based on time and key presses using a CoRoutine.

So that was it. I opted to pick something I was dead interested in, but hadn't yet invested a lot of time in. If it got selected I'd be forced to revisit my hacky side project in depth to distill it into a 15 minute talk.

I came up with a click-baity title, and left it to Future Martin to deal with any consequences.

Tip 3: Think of something that interests you greatly - that gets some fire in your belly. It's not an issue if you're not fully confident with the subject area yet.

So then you just waited for the yes/no email?

Nope. In my head I was fairly sure my submission wouldn't amount to anything. But the anxiety I was experiencing at this point was through the roof! "What if it did get accepted?! I'd be screwed - I'm not even confident with the subject area yet!"

I scrapped my original hacky implementation of the game, and remade the project with a view to fully understanding how even the most intricate pieces of it worked. Just in case.

I figured it'd be good to do anyway, I did find the subject incredibly interesting. And it wouldn't be wasted, I could always translate it into a Meetup talk or a blog post.

Tip 4: Use the anxiety/adrenaline (delete as appropriate) of submission, and the lull time to firm up your understanding of the subject area. Your interest in it and the pseudo-commitment can mentally drive you to explore it further.

Flash forward a couple of months

Woke up, checked my emails: "Scala eXchange 2016 - Your submission has been acccepted!".

Oh, crap!

At this moment it was a pure rush, and I was over the moon with the opportunity.

Did you accept immediately?

Pfft, nope. There are several stages of commitment in my mind. The adrenaline rush is but the first.

It was irrational, but I was extremely anxious that even though I now had a decent implementation (which would form the basis of my talk), I had no actual talk. So cue the doubtful procrastination.

Eventually, reason came into play. I had a solid base, and months to turn it into a talk I wanted to deliver. I accepted. Future Martin can deal with it.

Tip 5: With a base project and weeks (if not months) of potential refinement you will be able to deliver something you're happy with. Go for it!

3 weeks before the talk

Now, this point was probably rock bottom for me. Future Martin did indeed have to deal with it!

"I've got a project to base a talk on, but there's so much I want to cover - I've got loads of sample code, diagrams and ideas for interactive demos. But my slot is only 15 minutes. I think I've shot myself in the foot by constraining it to a lightning talk. It's going to end up having no substance!" Martin Carolan, 2016

For me, the way I turned this into a more productive mindset was by having a panic and then:

  • Accepting that on your first ever speaker gig, with a 15 minute slot, you're probably not going to be able to -
    • deliver a groundbreaking talk that fundamentally challenges the audience
    • delve deeply into the intricacies of how a non-trivial data structure or algorithm the audience are not familiar with works, along with applications and critical analysis
  • And then realising that you CAN however -
    • tell a story that engages the audience
    • introduce the background of a potentially new concept and explain (at a high level) how it works
    • demo an interesting application of it
    • mention materials to further their exploration into the area, if they are interested

From this, the anxiety did start to dissipate. I started to feel that I hadn't shot myself in the foot - just the toe. And it could all be worthwhile!

Tip 6: Be comfortable with the audience's expectations of your first 15 minute lightning talk. It need not be earth shattering.

Building the talk

I did the opposite of the stellar advice later given to me in Jenny Martin's brilliant "Giving Engaging Talks at Conferences and Meetups" training course, and:

  • Had no structure or story
  • Dived straight into making slides (with lots of bullet points, sample code, and complicated diagrams!)

My way out of this was to scrap the slides and instead write a narrative (kind of like this!). I never published this, it was just a way to have a soliloquy that could later be recalled and supported by a few images and focus words. Your mileage my vary.

Tip 7: Don't dive straight into slides. I found it useful to write down a story, and later add supporting materials where appropriate.

Practising the talk

People will give majorly conflicting advice about whether to(!) and how much to practise.

I think it's a pretty personal thing, but for me I had to practise over and over to gain some normal level of confidence.

My advice is to run through as much as you can, with people from as many diverse backgrounds as you can muster.

If you can, get yourself a slot at a local Meetup a couple of weeks before your actual conference talk.
Scala Central were kind enough to let me speak. It forced me to have everything prepared, gave me experience of speaking to a decent sized audience, and gave me some feedback to implement before the real deal.
This helped reduce my anxiety tenfold.

In terms of resources to help you be more confident in delivery:

Tip 8: Keep on practising! Speak at a smaller gig a couple of weeks before the conference.

Actually doing it

Well, I haven't actually done this part yet. So who knows how it'll go, and how well it'll be received.

I know for sure that I'll be dead nervous on the day. But I also know I had those nerves for days before my practise run at Scala Central - and I'm still here to tell the tale!

I have areas I need to develop as a speaker, and this presentation will never be a keynote - but cheers to iteration!

Written on December 5, 2016