2013-11-30
I’ve begun teaching programming workshops for upward.io, and have learned a few things about what makes a great workshop. If you haven’t tried teaching I’d recommend it, even as a hobby. It’s rewarding to see the students having a good time and to know you’re helping them achieve their goals. Here’s what I learned.
If participants have to install things on their computers it will cause many problems. Period. There is no amount of preparation that will make it perfectly smooth.
The most effective thing you can do is reduce (and hopefully eliminate) the installation requirements for your workshop. One great trick is to use web-based tools wherever possible. My favorite tools for teaching development are
When installation is necessary, follow these steps to make it less painful.
Everyone in your workshop will learn at a different speed. Some people arrive late, some have installation problems, while others are better prepared. You need to give people resources they can use to catch up at their own speed.
Friendly oblique responses actually make students more confused. Answer students directly – if someone asks “should I click this button?” respond “yes, click it” rather than something vague and chummy like “if you would.”
A class is happiest when their assignments are clear and when they realize that you have a plan for them. The best way to begin a class is to show you have a plan. Remind the students succinctly what you’ll be covering, how long the class will last, and when you will be taking breaks. If students are new to the venue, point out the bathrooms and coffee.
If you will ask students to run commands or programs, try each one on your own system first. An oversight can lead to difficult live debugging. It sounds obvious, but even the tiniest oversight can confuse a beginner, and often beginners will not alert you that they are stuck.
If you’re using a microphone or a projector, try it out before the class begins. Fumbling to mirror your display on the projector is a horrible way to begin.
Think of a new teaching venue as a harsh wilderness bent on destroying your class. You need gear to survive. Here is what I bring
We learn by doing. The more you can get your students experimenting and playing the more fun the workshop will be. So don’t structure your lesson around your talking to the class, structure it around carefully chosen incremental challenges. Any time you are tempted to give the class verbal advice, try to imagine an example hands-on project that could teach them better.
Use tools that give students instant feedback. For instance jsbin.com can show the effects of changing CSS as the student types it.
You want your interactive lesson to be creative and fun, but not distracting. The first time I ran my Git training course I asked the class to fork the US Constitution on Github, add some bad laws, then send me a pull request. I wanted to keep the subject matter eclectic and interesting. However this task was distracting from the core objective of learning Git. Students were puzzling too long over the legal stuff. (Apparently thinking about the government is taxing work!)
You have to remember that the class is learning a lot already. They are focused, not bored, by unambiguous assignments.
Charge even if you’re teaching for fun and don’t care about the money. If you’re teaching friends or acquaintances you can do it for free, but if the general public is invited you should charge. Free stuff plus the public equals total disrespect. Free classes get a ridiculous amount of no-shows (often greater than 75%).
When you charge people they take the course seriously. The more you charge, the more seriously they take it and the more they respect you. Ultimately you’re charging to provide a better experience.
Written by Joe "begriffs" Nelson