How to create amazing workshops
People like to learn by doing. Also, the best way to learn new things is to teach them to others. Merge these two facts together and you have all the reasons in the world to create a workshop that would benefit both you and your co-workers. Here are some tips that would help you create one of those experiences that your colleagues would remember as the time they actually learned something new and had fun while doing it.
As a software developer, you have to learn new things to keep up with all of the new languages, frameworks and tools that keep popping up like mushrooms after a rainy day. If you don’t, you’ll be left behind. Your next project might require knowledge of some toolset. If you’ve never heard of it, that vacancy might go to someone else. In order to keep being attractive to future employers and project owners, you need to learn new stuff continuously. Besides, learning new stuff is fun! It challenges your brains and broadens your perspective. What’s not to like?
People’s attention span is extremely short. They might find it interesting to listen to a talk about some new technology, but it’s difficult to keep their interest up for a long period of time and if you are boring them for one second they will take out their phones and start checking their social media flows instead. If you want people to engage in a topic, you have to challenge them. And the best way to do so, as far as I know, is to give them exercises. A workshop consist often of a short presentation of some technology, and many exercises in which the attendees experiment in applying these newly learned techniques in practice. That way, you break the teacher and students way of learning and instead work together in order to learn new things. It is an engaging way for both you and your co-workers. All you need is a little preparation.
I like to learn new stuff, like new languages, frameworks and tools. By doing so I can learn new concepts that can make me a better developer even using the languages and frameworks I usually use, and give me a wider choice of options when confronting a problem. Once I learn a new language or a tool and become proficient enough, I might ask myself — and my colleagues — if they might find it interesting to run a workshop on that subject. As I see it, workshops could help us all be better at what we do, and I would personally learn more by teaching it to others. If they do find it interesting, I’d try to solve more exercises and read some more on the subject in order to prepare myself, knowing that my workshop attendees will ask questions, and I won’t always be able to sneak my way out by answering something like well, let’s find out together, shall we?
Try to find the essential topics you want to show your colleagues and find some good examples to how they can be used. I usually write down a row or two explaining the concept, then showing what it’s all about by means of some test code I can run in an editor. The key is to divide things into small enough concepts so they won’t overwhelm people. Take small steps and try to process one thing at a time.
I like my workshop to live inside an IDE, so I wouldn’t have to switch between the presentation and the code. The excerpt above explains the concept of constructors in Kotlin, and the following example code can be run directly inside the editor.
Once a concept or three have been discussed, it’s time to repeat them by trying them out. Find your audience an exercise that will require them to use their newly found knowledge to solve a problem. Write tests that will turn green once the exercise is solved. Try to make the exercises simple enough so they won’t take too much time to figure out but complex enough so they’ll keep your colleagues interest up. Also, see to that the exercise doesn’t cover more than the concepts you’re trying to teach in order to avoid confusion. To summarise, your exercises should be:
- simple enough
- challenging enough
- to the point
I also try to make them entertaining. Or geeky. Or both. I found it more attractive to solve exercises that are constructed like that, and I believe your co-workers might do too.
Need inspiration for your exercises? Have a look at the Exercism platform.
Your examples should explain one concept at a time and should be simple and coherent. This would help you avoid confusion and frustration. However, your exercises should be challenging and interesting, and might contain some mixed subjects you want your colleagues to try out. If they’re too simple you might lose their attention. Too complex and they might simply give up. You have to find a balance, which might turn out to be a tricky task. It is therefore important that you know your audience limits and how much they can be stretched. But hey, they are your co-workers! You should know them, and if you don’t, then find out by talking to them and doing some pair-programming together. This is just another benefit of doing workshops together: you get to know your colleagues and find your common weaknesses and strengths.
Giving your audience a challenging exercise, remember to help them target the concepts you’re trying to focus on. I once asked my colleagues to implement addition between two fractions. It turned out they’ve forgotten how to do so and spent way too much time finding and understanding the algorithm, rather than focusing on operator overloading in Kotlin, which was the task at hand. Next time I ran the Kotlin workshop, I gave them the algorithm so that they could focus on operator overloading rather than a long-forgotten algorithm from elementary school.
Many of us are geeks. There’s no denying it. I find it satisfying to give examples and exercises that remind us of that fact. Here are some examples of geeky themes you can use:
- TV shows like The Big Bang Theory, How I Met Your Mother, Office Space, The Simpsons and of course Game of Thrones (no workshop is complete without “winter is coming”.)
- Films like Lord of the Rings, Star Wars, Avengers, The Matrix and Ghostbusters.
- Computer games like Portal, Super Mario, Doom, Tomb Raider, Fallout and of course World of Warcraft.
Using these themes can surprise your audience and keep them interested and entertained. Just don’t overdo it. Keep a steady level of geekiness without making your colleagues ashamed for joining your workshop.
The end game
I usually end the workshop by giving the attendees a more elaborate exercise that covers most of the subjects we’ve gone through. Your colleagues might not all be able to solve it during the workshop’s time frame, but this is totally ok, as they can continue working on it later and won’t just forget the whole thing after walking out the door. Once again, make it a challenging exercise but not an impossible one. Do not add new concepts apart from the ones you’ve repeated during the workshop, instead try to keep to the subjects you’ve covered. Write many tests and ask your audience to solve them one at a time, in a TDD manner (you can also comment all of the tests and ask them to uncomment one test at a time). To summarise, your last exercise should:
- be bigger and more complex than earlier exercises
- not be too impossible to solve
- cover all of the concepts you’ve gone through
- contain many tests, emulating TDD
- be fun and challenging to solve
So there you have it. Your workshop will help both you and your colleagues learn new stuff and have fun while doing it. It might even inspire them to create their own workshops and hopefully you’ll be invited to them, too.
If you want to take a look at two of my workshops you can find them here:
Now go ahead and create your own awesome workshop!