This post is part of several discussing how and why I use live coding in my teaching. So far I have discussed why I use live coding, how to set up to live code, and the nuts and bolts of running a live coding class session. This week I wanted to write about best practices for what you say as you narrate through your coding examples/exercises.
I think it pays to be really careful about how you talk and what you describe when you are teaching via live coding. I’ve written here about some of the things I try to keep in mind. It’s a lot at first, but then feels pretty natural!
Coding is scary and/or loaded for many students. They might feel like they are destined to be bad at it because of who they are/how they look (Stereotype Threat). They might just think it is really hard. So you have to be careful. They are standing there next to a well-laid trap. Don’t push them into it!!!
Go slow, explain everything. EVERYTHING, especially early on. “Okay, now I am going to run just this line, to do that, I am going to highlight it, right click, and click run highlighted line.” Note every time you open or close a set of parentheses… EVERYTHING! As the course progresses, you can taper this off. Additionally, especially early on, go mega slow. Watch your students, make sure you are bringing everyone along. It can be hard to remember those early days of learning to code, but at the start there are A LOT of new things students are trying to follow. Going slow and not assuming any prior knowledge helps.
Be careful with your language. Don’t say anything is easy. Hearing “We just do this”, “Doing this is simple”, etc. can feel like a jab if a student doesn't understand what you did. Assume everything is tricky to SOMEONE in the class and then proceed.
Praise effort, not results (Growth Mindset). For example: let’s say a student turns in an assignment that is perfect. I think it’s better to say “Nice work, I can tell you worked hard on this” rather than “Nice work, I can tell you are really good at this”. The idea is that if a student is told their work is good because of some innate talent, they may then feel like that talent has run out when they run into trouble further down the road. If you’ve encouraged the idea that they are doing well because they are working hard, they may be more willing to push when they come up against trouble.
Normalize mistakes. Ask students what “fun” errors they got. HIGHLIGHT when YOU screw up, instead of breezing past the fix. Push students to tell you their errors. Tell them that writing code is like 90% fixing your first attempts to write something. Students can feel like getting these errors means they aren’t cut out for coding when it’s totally good and normal stuff.
Explain that coding can be hard and that is okay! Every semester I tell students that they wouldn’t expect to be able to jump on a skateboard and do tricks, so they also shouldn’t expect to just find coding easy right away. It’s a skill, there is nothing special about it. Like any other skill, it will feel hard or impossible at first, and then you keep doing it, keep practicing, and it gets easier.
As mentioned in another post, I’m trying to keep students from disengaging. I fully believe that if I can just keep them at it, keep them from throwing in the towel, they will all get there in the end.