Not too long ago I gave a workshop on using TDD. Not because I like to give workshops or presentations, I am horrible at public speaking (this is worthy of a blog post on its own by the way). However, I believe that the best way of studying something, is by teaching it. It forces you to take a different look on the subject, writing down what you know, questioning your current views. And it sparks debate. I got questions on what I thought was common sense, but afterwards didn’t seem to be so sensible after all. All in all, a very rewarding and meaningful experience. The workshop itself consisted of a short presentation of TDD (because there was a wide range of TDD experience in the public), a live part where the start of a TDD Kata was done and a workshop part where the public would attempt to finish the kata with supervision. Here is how I did it.
Partner up
Find somebody who is willing to help you in a significant way. I don’t mean just for advice on a specific subject, but somebody who will coach you, be a mentor to you or will be a co-host.
When I had the first idea of doing a workshop on this, I proposed it to my manager. He told me that just the day before a colleague of mine had the exact same idea, and he asked me of we could cooperate on this. Luckily I could get along with my coworker very well and we had the same ideas, so that worked out pretty good. During preparations we had close contact: on who would present what, which ideas were important and who would pick up on some practical stuff. This had made me much more comfortable than when I had to do it all alone
Ask for input
Since the audience was very mixed (ranging between interns and professionals with 20+ years of experience) we had to carefully consider what to talk about. I asked several people for input, which gave us a good idea on where to start and what topics to include.
Revisit the basics
To make sure that I was not talking out of my ass, I forced myself to look at the basics again of TDD. I followed some introductory courses, did some assignments and exercises myself and read a bunch of blogs and articles. Most of what I read I already knew, but it was nice to have some confirmation. But I also learned a few things I didn’t know yet!
By doing some exercises I could get a feeling on how to implements some details of the workshop. After a short presentation I demonstrated how a red-green-refactor cycle looked like. By practicing with some TDD katas I got a feeling again on how to do these. Yes, I’m aware that they are meant to be done often so you keep your skill up. I am not perfect. I also created and executed the workshop kata several times to make it perfect. It’s not, but it was better fitting than the first version I made.
Set a deadline
For me, setting a deadline gives me something to work to. Too often I have task that I have to do, but never really focus on because I don’t have an incentive to finish it soon. A deadline really helps me! Even if it is set far in the future (say 3 months) I have a bit of feeling on when I should be ready on certain things and I can make a global planning.
Start small
I already said: I’m horrible at public speaking. I get nervous, forgot what I was going to say and start mumbling when I’m stressed. I’ve taken a lot of opportunities to do it again and again. I am getting better at it, but that doesn’t mean I have to like it. By starting this with a small group does help, since it really makes a difference if you speak to 10 people, or to 200. I even felt kind of confident, which was also due to not doing this alone
Conclusion
So, these are things I did to prepare myself as much as possible to push my boundaries and give this workshop. Each of those things helped me on this challenge, but most of all: by explicitly doing these and preparing myself this way, I gained the confidence that is necessary to pull off a workshop like this. Even though it was only for a small group, I had the feeling that I conquered myself and will feel a lot more sure when I have to do something like this again.
[18-04-2020] Addendum: The starting code for this kata can be found on my github: https://github.com/daanwissing/tdd-workshop-csharp
