How To Slowly Kill A Coding Dojo


4 min read

Have you ever found yourself in a coding dojo with just you, your thoughts, and the lonely hum of your CPU fan? Yep, that's where I was last Thursday. Well, not really. I'm working on a MacBook with an M1 Pro, so there's no humming of a CPU fan. But the rest is true. I have been running weekly coding dojo sessions for my department's engineers for over a year now. Initially, we had a good turnout. Sure, it was not like the entire department joined, but we had multiple pairs working on the katas for a long time. Fast forward to today, and it’s mostly just me and one brave soul.

This is not the usual "Here is a cool thing I am doing, that you might want to try as well" post. It's more like a "I think I've done something wrong. Let me tell you about it and maybe you can give me a hint as to where I messed up".

The Time Slot

Just like most other engineering organizations, we have a lot on our plate. There are a lot of features waiting to be implemented. And not just that. Of course, there are meetings. Stand-ups, team meetings, backlog refinements, you name it. When it comes to the time slot, I had two objectives:

  1. Avoid conflicts with other meetings

  2. Not disturb the engineers in their focus time too much

That's why I decided to do it in the morning. A coding dojo is a great way to start your workday, isn't it? The first stand-ups in our department start at 9:00, so I decided to do the coding dojo at 8:30. And it worked. Most of the early birds joined. But I got many "What a cool idea. I would love to join, but it's just not my time of the day". After hearing that repeatedly from multiple people for almost one year, and a slowly decreasing turnout in the dojo, I thought "Fair enough! If they want to join, I should set up an alternative time slot." So I switched from "every Thursday 8:30 - 9:00" to "every Thursday, alternating between 8:30 - 9:00 and 17:30 – 18:00". One week I'll do the "Early Bird Version" and the other week I'll do the "Twilight Version".

Now, guess who showed up to the "Twilight Version"... πŸ˜‰

The Structure

The structure of the dojo is simple. First I present the kata for the day and an optional constraint. After that, I created random breakout rooms in which the pairs worked on the task. At the end of the dojo, we did a 5-minute wrap-up. Let's look at the steps in detail.

The Kata

I did everything from the classics (FizzBuzz, BowlingGame, RomanNumbers, etc.), to legacy code katas (I highly recommend the Github profile of Emily Bache. She has a ton of great legacy code katas there), to special AI dojos during which we worked with ChatGPT (or any other AI helper) as much as possible to solve the problems.

The Constraint

Every time, I presented an optional constraint to spice things up, because sometimes, the kata itself is so simple, that experienced engineers needed a little extra challenge. The constraints ranged from the classic "no mouse" and "don't talk", to "use a programming language that is not your default language" and "test && commit || revert".

The Coding

Well, there is not a lot to say about that. As mentioned before, (as long as there are more than 2 attendees) assigned random pairs to work on the kata. That way, the Java devs worked with iOS folks, and the Android dev had a nice pairing session with one of our QA managers.

The Wrap-Up

The last 5 minutes of every dojo was spent on a short wrap-up. I asked how the attendees liked the kata and the constraint and we looked at at least one of the solutions. Maybe the most fun part of the dojo. A lot of times they sparked interesting conversations about possible solutions.

Now what?

For me, preparing and hosting the coding dojo is always fun. I like doing the katas myself, forcing me to do "TDD as if you meant it", and thinking about small but tricky tasks. It's fun to rack your brains now and then.

But there is something in this dojo that stops people from attending. Maybe it's the time slot? Maybe it was too often and people got tired of it? Maybe the tasks were too simple? Or too difficult?

But if I think that through, I assume the best chance to get an answer is to ask the people who stopped attending or never attended the coding dojo in the first place. Wish me luck, that the answers are more helpful than "I would love to join, but it's just not my time of the day" πŸ˜„