This post was inspired by my interview on Hanselminutes podcast
For the first few days, my son and I were both pretty frustrated with the idea of potty training. After Lysoling and mopping the floor for the billionth time, I remember trying to explain to him once again that he needed to stay seated until he “went.” He wanted to go play. He stood up again. I could tell from the tired look in his round eyes he just wanted things to go back to the way they were before. I did too.
“Forget it,” I sighed. I exhaustedly put down the empty paper towel roll in my hand, turned up the sound on the TV, and quietly walked into my closet and shut the door behind me - jaw clenched the whole way. Confident that my baby wouldn’t hear me, I screamed at the top of my lungs until I ran out of breath.
I used a potty training method from a book that promised to have him trained in 3 days. It came highly recommended from parents I trusted. They swore the method worked like magic. Instead, I was emotionally drained and ready to quit on day 2.
Feeling defeated, I called my mom for advice. “I’m following these instructions exactly and there’s absolutely no way he’ll be potty trained by tomorrow. Maybe it’s just too early to be trying this. We’ll try again in 6 months.”
I could almost hear her shaking her head through the phone. “No. He’s ready now,” she said. “Remember, all of this is completely new for him. Think about what you’re doing. You’re giving him a tool he’s never seen before, language he’s never heard before, and expecting him to just put it together to ‘instinctively’ do something he’s never done before. You need to rethink the way you’re trying to teach him.”
As usual, my mother was right. With small changes to my teaching style, my kiddo was potty trained in a day.
When it came to teaching programming, I wanted to avoid the mistakes I’d made when I first started to potty train my toddler. Often, I hear stories from students whose learning starts out the same way. They’re given:
- tools they’ve never seen before (ex. VS Code, new libraries)
- language they’ve never used before (new technical terminology),
- ...and an unfair expectation to ‘instinctively’ put these together to do something they’ve never done before.
In the end, both the teacher and student end up frustrated or just giving up because the concepts just aren’t clicking for the student. Though the teacher means well, there’s a huge piece missing here - the part where the teacher closes the gap in understanding by providing context.
Initially as a potty training teacher (potty trainer?? Potty coach?? Potty sherpa.), I let the curse of knowledge] get in the way of my ability to be effective. I’d forgotten what it was like to be an absolute beginner at this. After empathy, context is the most important resource I could provide to my little student.
Context is the language before and after a statement that helps you to understand its meaning.
When it comes to teaching, providing context involves relating the new concept to something they’re familiar with. Making the connection between difficult and already-familiar topics helps the student to
- Understand concepts quickly and thoroughly
- Retain information for longer periods of time
- Apply learning effectively and accurately (because they have a deep understand)
For me, this translates to using a lot of analogies and storytelling. Here’s an example of using analogies to explain React state and setState
Analogies don’t have to be an elaborate 1-to-1 metaphor. Stories can be silly. In fact, I’d argue that if silliness is what captures your students’ attention and makes a difficult topic more approachable, silly content is that much better. Just because it’s technical doesn’t mean it needs to be complicated!
When building educational content for a large demographic, providing context also involves setting upfront expectations with people who consume your content to make sure that you are meeting them at their current level of understanding (well, getting them to meet you at the right starting point).
Here are some examples of how to set expectations:
- “This post assumes the reader has a working knowledge of AWS”
- “If you don’t yet know what recursion is, here’s a link to a blog post that explains more. Read this first!”
Potty training also helped me to realize that simply “spewing a bunch of technical jargon” is not the same thing as teaching. Words are, after all, just symbols we use to represent thoughts and actions. Without the actual concepts behind the words, words are meaningless.
With my 2-year-old, a mistake I made was trying to use too much vocabulary (ex: “you need to tell me when you need to use the potty”) when he hadn’t gotten the actual concept (connecting a feeling to an action) down yet. Once I instead focused on limiting my use of vocabulary and SHOWING him what I wanted him to do, I saw a night-and-day difference in his understanding.
This doesn’t mean technical terms aren’t important. It does mean that the technical jargon shouldn’t be the only thing we’re teaching. I’d argue that in most cases, technical terms shouldn’t even be the first thing we teach. If we effectively teach the how, the what can come so much more easily afterward.
But Shaundai - how can I teach technical concepts without starting with the technical terminology?
Here's an example explaining how heat is transferred from one object to another:
Let’s say you’re cooking food on the stove in a big pot. A metal spoon is sitting inside the pot. When you touch the spoon, you realize that it’s hot. The pot is warmed by the fire on the stove, but how did the spoon get hot? This happens through convection, where the solid spoon is warmed by the hotter solid pot it is touching. This is 1 of 3 methods of heat transfer between objects.
The two technical terms I wanted you to learn were “convection” and “heat transfer”. Both came later in the paragraph, after I’d described a scenario you were familiar with. What if I instead gave you the definitions upfront?
Convection is the movement caused within a fluid by the tendency of hotter and therefore less dense material to rise, and colder, denser material to sink under the influence of gravity, which consequently results in heat transfer.
Most people would check out after reading the first few words. Instead of putting such a strong emphasis on teaching the technical terms, put an emphasis on teaching the concepts and what the code is doing. The jargon can always be injected at the end.
...or find me on Twitter