Tips and tricks for teaching beginners to code: inspired by HackerYou Lead Instructor Wes Bos
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.
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
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!"
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:
- Talk about what the notes say.
- Go into the editor and do the example in the notes.
- Do another example that is not in the notes.
- 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:
- Ask for input.
- Accept input without question and test it.
- Allow tests to fail.
- Ask class to suggest why it failed.
- 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.