How does a good training or course look like? In this post, I’m showing how I conduct workshops.
A lot of training companies talk about lecture to exercise ratio. For me, it’s very confusing, because every workshop consists of the following kinds of activities:
- live coding and demos by the instructor,
- “pure” lecture (often includes showing snippets of code)
- and breaks.
Now, what “lecture” consists of? Is it only pure lecture or also live coding? Now, how do you time it if everything is mixed with discussions? Discussion not only between me and participants, but also between participants. And on top of that, what if a participant asks a question during an exercise and, in order to answer her question, I make a demo of an app that I develop? Is it demo, exercise, discussion or everything at the same time?
I never tell what is my lecture/exercise ratio, because that’s always imprecise. What I can tell is that most of the time is spent on exercises. My participants are almost always happy with the proportions. And if they’re not, they can tell me that when I ask them for feedback. Agh, I didn’t mention that in addition to evaluation forms filled at the end of a workshop, I constantly ask participants for instant feedback. In the case of bigger workshops, I use sticky notes.
A trainer must have experience and be an expert in the topic he teaches. He must work commercially on a project involving technologies that he teaches. I hope there is no discussion in this area. That means that you won’t find thousands of workshops covering all possible technologies in my training offer.
However, it’s actually important that the trainer works commercially on a project that they can show. It’s even better if it’s an open source project. That way the trainer can show a demo of real-world application that is actually used instead of out-of-reality example apps. Such projects stimulate discussion about real results of methodologies, its benefits, but what’s more important, also disadvantages (a good trainer can show his successes as well as failures).
In my case, the web application I’m working on (AMY) is open source. In AMY, we have a tool to generate fake data, so that I can make a demo.
Teaching only few skills
Workshops take few days. Let’s face the reality: you cannot learn much in few days. Even with a great trainer, you can learn at most few skills.
A trainer could try to please everybody and teach everything. But to know everything means to know nothing. It’s really important that the trainer decide what won’t be taught. Try to find the only 20% that gives 80% of result. This is why I make discovery calls and meet with participants before training. Customized workshops are always much better.
There is no place for situation when trainer says “stop discussion, otherwise we won’t cover everything”. The trainer can control the pace without avoiding discussion. Since most of the time is spent on exercises, I can just provide more hints or even entire code samples to speed up participants. I avoid skipping exercises – we want to learn few skills well.
There are tons of other small improvements that I use during workshops to make them more convenient. For example, I use white background in my terminal, because it actually turns out that people prefer black on white when using a projector unit.
Or I ask participants what they think about the pace of workshops, just before the first break. If we work in a bigger group, I use sticky notes. Participants vote with one of three sticky notes: red (too fast), yellow (it’s fine) or green (I’m bored, speed up!).
There is a lot of other small improvements that you can make. My point is not to enumerate all of them. Instead, I’d like to emphasize that all of them make a significant difference, even if each one is… just a detail.
This post is pretty short, because I wanted to focus only on the most important points. But I hope that it introduced you to my vision of an ideal training.
I’d like to hear you! Does this vision resonate with you? What would you do differently? Feel free to comment and ask questions!