How To Teach Like A Bos

Tips and tricks for teaching beginners to code: inspired by HackerYou Lead Instructor Wes Bos

HackerYou students hug Wes goodbye
Students of HackerYou cohort #1 saying goodbye to Wes Bos(Photo credit: @brnnbrn)

How I came to watch Wes Bos teach for over 450 hours.

On June 9 of 2014 I decided to take a one-day workshop at Ladies Learning Code in Toronto. The workshop was Introduction to HTML & CSS. It was the first time I had learned any HTML or CSS and it was love-at-first-angle-bracket.

Thus began my journey into a total transformation from philosophy grad/coffee entrepreneur/non-profit marketing professional to full-time web developer.

My journey began at LLC and continued at HackerYou, home of the finest workshops in front-end development and Ruby on Rails in Toronto. I took an evening class in the Fall of 2013 and in January of the next year I leapt into full-time studies with HackerYou’s Front-End Development Bootcamp.

Both my part-time and full-time courses were taught by the incredible Wes Bos: a freelance front-end developer based in Toronto. I am one of those life-long learners that loves school. With two BAs, one MA, and a post-grad certificate at the Schulich School of Business under my belt I can still say that never in my life have I learned as well and as quickly as I did under the pedagogical skills of Wes Bos.

In the past year alone I've taken the equivalent of 440 hours of class-time with Wes and have now mentored his current students for over 23 hours. In the hundreds of hours spent observing Wes’s teaching, I’ve been able to formulate some ideas as to why his teaching is so successful.

Last Saturday my colleague Jana Hue and I taught our first workshop at Ladies Learning Code. It was the same workshop I took a year ago.

To be back at LLC teaching the workshop that changed my life so soon after taking it myself was a momentous occasion for me. Though I have worked very hard to get here, I owe much of my success to Wes who inspired me to keep going and taught me most of what I know today about web development.

Jana and I did our best on Saturday to employ some of Wes's best techniques. We sat in a room with our slides and asked ourselves "What would Wes do?"

Teaching skills like these must be recorded and they must be repeated. I believe the world would be a better place if more programming teachers taught like Wes so here's what I've gathered from watching the "Bos" at work:

1. Be Humble

Wes is an excellent developer. You never doubt this when you sit across from him in a classroom. But you don't understand the extent of his abilities until you reach the 300th hour of class and he solves the impossible JavaScript problem that had you stranded in callback hell for days, in just minutes. That's because he's incredibly down-to-earth and humble.

From day one, Wes always makes his students feel like he's one of them. Totally empathetic to their struggle as newborn developers. One example of this is when he shows off the website he built years ago as a teenager. His first website. A hilarious looking website on the subject of PlayStation2. The class always laughs as he convinces them that they should have no fear because they are so much more prepared than he was when he made his first.

It is this humility and empathy that make him so trustworthy and accessible. This humility has a huge impact on the safety students feel in the classroom. That safety leads to confidence, and that confidence leads to learning. Wes makes you believe that you can be as good as him because "not too long ago" he was exactly where you were. And once you believe, very little can stop you.

2. Be Excited

I'll never forget the night when, after a full day of instructing our bootcamp, I heard Wes walk into his evening class and exclaim with genuine enthusiasm something to the effect of "Are you guys ready for CSS floats!? I'm pumped!"

If you're a programming teacher who covers the same material over and over again, maintaining enthusiasm for the same “beginner” material day in and day out is a super important skill to develop. This same material is very confusing for beginners and it becomes a lot easier to digest if everyone around you is excited about it. If you're in Wes's class you're always pumped. Pumped about everything. CSS Positioning? PUMPED! CSS Advanced Selectors? PUMPED! JavaScript Objects? OMG SO PUMPED!

3. Never Assume Anything

When you've been a developer for a long time, so many concepts that are foreign to beginners will become second nature to you. These are the same concepts that you may assume your students already know about. Never assume anyone knows anything you already know. Don't skip steps, don't worry about boring anyone who may already know. Teach it slowly, teach it step by step. Don't skip steps! Even those who already know the material will learn something new the second time they hear about it - guaranteed. I've taken the same material with Wes at least twice and each time I learn something new. Even while mentoring his classes that I’ve already mastered, I always learn.

4. Repeat and then Repeat Again

Wes doesn't use fancy slides. He uses very clear notes typed in markdown, styled like Github. They're easy to follow and easy to read. They're a great reference for the students to follow along with but what works even better is the number of times Wes will go into the text editor and repeat teaching us each concept with live examples. The process is basically like this:

  1. Talk about what the notes say.
  2. Go into the editor and do the example in the notes.
  3. Do another example that is not in the notes.
  4. Repeat 3 until everyone understands.

The key is that Wes will repeat each concept with as many examples as are necessary. Most of the class will be spent doing live coding in the editor.

5. Make Mistakes

Wes encourages mistakes. If he asks for student input on a particular coding exercise, he'll let the students take him somewhere wrong. He will never reroute their thinking before testing out their first attempt. It goes like this:

  1. Ask for input.
  2. Accept input without question and test it.
  3. Allow tests to fail.
  4. Ask class to suggest why it failed.
  5. Try again.

This method captivates the class and forces everyone to problem-solve together. This process is the very foundation of any developer's day to day work so it makes complete sense that people should be taught how to code by employing the same process. It's uncomfortable to be in front of a group and make mistakes. Having done this myself, standing there accepting bad suggestions is almost like what it feels like to sit through awkward silences on a bad date. But you just have to do it. It's so worth it for the students. You have to ride out the mistakes. Make them often. Let the class fix them.

6. Encourage Big Dreams

If you've followed the first 5 steps, your students should be pretty excited about all the material you're teaching them. And if they're excited, they'll probably start dreaming big and want to go beyond what you taught them. Resist the urge to tell them to hold off on going in a difficult direction that may seem impossible to pull off. As one of these students I've benefitted greatly from Wes's encouragement to push myself to learn things that are not in the course notes. Even things that may stump me. He always encourages his students to go big on their projects and helps them get there. Encourage the same.

8. Use Rewards

It always helps to lighten the mood during a long day of learning with small prizes. In fact, Wes will sometimes use invisible prizes and still manage to get great participation from the class. For a long time Wes handed out "Werthers" to anyone that answered a question, asked a great question, or contributed in some useful way to the class. The Werthers were invisible because he never got around to bringing any but they were just as good as if they had been real. Then of course there were stickers and book giveaways. At the end of the day, even the most childish reward can make learning a lot more fun for adults.

9. Share The Latest and Greatest

Staying informed on the latest technologies related to what you're teaching is extremely important. Not a week goes by that I don't hear Wes tell the class something new that he either just added to the notes or just brings up in class during the lecture.

It may seem like sharing news from the tech industry may lead to information overload. After all, things change constantly in web development. However, it is keeping your students informed about all the cool things happening in tech that will make them even more excited to learn the material, push themselves beyond the material to catch up to the new cool thing out there, and think about how they will contribute to the community when they're developers.

By hearing about conferences, interesting blogs, tools, Twitter influencers, resources and even the latest in the specs, I learned that there was a vibrant community of developers that I wanted to contribute to. Knowing how rich in sharing and learning this community is, makes me want to be a part of it.

10. Give Feedback

Your students need to receive feedback for what they're doing. And I don't mean just feedback on their code, which of course you should do. I mean public feedback on what they've accomplished. Tell your students how awesome their work is, in front of everyone else in the class. Get excited about the little details on their website. Every time I presented a project I was so excited when Wes reacted positively to an animation by saying something like "Woahhhh! Refresh, do it again!" He always found something in everyone's project to oooh and aaah about. He publicly celebrated and helped his students. If someone has questions outside class hours, it takes Wes no time to send out an answer to the whole group via basecamp. He's on the ball, always.

This is crucial: be present and connect with individual students in front of the rest of the class. It creates a spirit of support and collaboration that your students will carry with them to their next endeavour. Make your students into positive forces of acceptance that will create safe spaces for all in the tech industry.

11. Allow For Self-Directed Learning

As fun and easy as it is to listen to Wes teach, it’s just as important for students to have the time to try things on their own and do as many exercises as possible on their own. One on one mentorship during this self-directed learning is crucial. Both HackerYou and Ladies Learning Code instructors are supported by amazing mentors that assist students as they work on independent or group exercises. Get down there and mentor students one-on-one as well.

12. Dad Jokes

Lastly, never be afraid to be yourself and put your personality out there for your students to see. Wes is always completely himself. It helps that he's one of those all-around great guys. But I think anyone could help their teaching a lot by likewise, being themselves. You may not have the same dad jokes Wes uses to explain every difficult concept in the book. But if you allow yourself to be natural, honest and even vulnerable with your students, they will respond with trust and laughter and attention. Be yourself, even if it involves the cheesiest dad jokes out there. There's no substitute for humour when teaching people how to code.

Go forth and teach

Wes's shoes are very hard to fill. I will keep trying to do my best to take away what I have learned from him and pass it on to others every opportunity that I have to teach. I believe that more people would be developers if their teachers used the same tips I've gleaned from watching Wes teach and learning from him.

Bos' up everybody! And happy teaching :-)

Special thanks to Jana Hue for helping me edit this list, and to all the other amazing mentors and instructors at HackerYou that have inspired and supported me in my path to freelance web development.