begriffs

Eight tips for leading a tech workshop

November 30, 2013

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.

1. Installation sucks. Avoid it, or make it easier.

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

  • jsbin.com for HTML/CSS/JS collaboration
  • c9.io for Git, Rails and Node

When installation is necessary, follow these steps to make it less painful.

  • Can you move installation to its own event? For instance RailsBridge has an “Install Fest” prior to their main workshop.
  • Save big files on a flash drive and pass it around. Don’t count on the internet connection being fast enough, especially when the students are simultaneously trying to download required files.
  • Have a web page (or better, a physical print-out) of the instructions for how to install things. People always show up late and it is inconvenient for everyone when you have to repeat information for newcomers.
  • Provide older versions of software on the flash drive if it is needed for people whose computers are outdated.
  • Think of a backup plan for those who drag in a bizarre wood-burning laptop running Windows 95. This plan might include having a spare laptop they can use.

2. Provide ways for people to catch up with the class.

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.

  • Display wifi information prominently on the wall.
  • Provide a link to your slides at the start, so people can review them independently.
  • Include a slide with setup instructions.
  • If the class is building an example project step by step, provide a way to skip steps.
  • Limit the number of steps in a project. It’s better to have independent small projects than longer cumulative ones.

3. Use a tone of respectful authority.

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.

4. Test your equipment and instructions.

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.

5. Bring a Mary Poppins bag.

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

6. Keep it interactive.

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.

7. Avoid creative ambiguity.

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.

8. Charge.

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.