# Invisible Stumbling Blocks

05/08/2012

There is an interesting paradox in teaching: the better you know a subject, the harder it is to talk to beginners. Experience means you have forgotten what tripped you up when you were a beginner.

Consider typing. Or division. Or even reading this sentence. Easy now, right? Looking back, it’s hard to remember why they were hard. Looking back, the stumbling blocks are invisible.

Let’s consider a sophisticated concept you know and love: variables.

Variables are so fundamental that it is impossible to write useful code without them. I bet you think about them about as much as you think about breathing. But they weren’t always that easy. Consider the following code:

``````>>> myValue = 5
5
>>> myValue + 3
8
>>> myValue
``````

What will this third command print? The answer is 5, but many beginners will say "8."

Why? Most misconceptions are the brain enthusiastically applying previous knowledge to new situations. If you can figure out what rules and knowledge your students are bringing to the table, you can start to anticipate their misconceptions and design lessons and error messages accordingly.

For example, in basic arithmetic, adding two numbers yields a third number. It is not at all obvious to students that addition does not come bundled with assignment. And from your perspective this is an invisible stumbling block, because this is knowledge you know so well you didn’t even remember it was there to be learned.

Before we go on, take a moment to write down everything you know about variables, or know how to do with variables. Try to state the "obvious."

Nice! Now check your list against this one and see if there are any invisible stumbling blocks missing from your list. (The specific bullet points will, of course, depend on the programming language you have in mind, but the purpose of this list is to help you spot invisible concepts.)

• why they are so hugely important for writing software
• how to change the value of a variable
• how to perform operations on a variable without changing its value
• how to check the value of a variable, both on the interpreter and in a script (crucial for debugging)
• variables can store any data type, including strings, objects, and in some languages, functions
• variables can refer to other variables
• multiple variables can point to the same thing
• variables can have no value, or an undefined value, and this is different from a value of ‘0’ or ""
• changing the name, and even capitalization, means a totally different variable to the interpreter.

Want more practice? Try unpacking some other "obvious" concepts, like printing (with a printer, right?), strings (let’s make a sweater), and functions (this is a hard one—make sure to practice on a real human).

Crucially important note: this does not mean that you should try to explain all of these things to a beginner, but it is very important to remember that they exist so you don’t blithely run your students over rough terrain.

So how can you help students around these stumbling blocks?

1. State the "obvious." It’s only obvious once you already know it.

2. Plan to spend 2x-4x more time on the basics than you think students will need. Regardless of the elegance of the explanation, students need time to wrap their heads around new concepts.

3. Iterate on feedback. Put your lesson in front of students and ask them to think out loud as they take it. Asking probing questions will help you uncover their misconceptions, but don’t jump in with explanations. Tweak your lessons, then rinse and repeat.

Share your thoughts and collaborate with other teachers and course creators in our course creator forum.

Thanks to E.O. Stinson and Kyle Conroy for their insightful draft feedback.

7 articles

# What is the Waterfall Model?

06/07/2024
7 minutes

T​​he waterfall model follows a linear sequential flow where each phase of development is completed and approved before the next begins. Here’s how it works.

# 8 Organizations Helping Girls & Women Build Careers in Tech

03/05/2024
7 minutes

There’s a gender gap in tech — but it’s getting smaller thanks to organizations like these.

# 30 Bite-Sized Goals for Learning to Code in 2024

12/18/2023
6 minutes

It’s that time of year again — the time for making New Year’s resolutions! This year, let’s resolve to make resolutions we can keep.

# 6 High-Paying Jobs You Can Get Without a Degree

11/06/2023
4 minutes

Learn about some of the high-paying jobs you can get without needing a degree. Discover what each job entails and how you can succeed with our classes.

# What Boosting Retention Looks Like During “The Great Resignation”

10/21/2021

People are leaving their jobs in record numbers. But as the “Great Resignation” continues on, employers have an opportunity to better support their teams and ultimately boost retention with an increasingly popular solution.

# How To Make a Web Developer Portfolio

05/25/2021

Need help creating a web developer portfolio? Learn what to include (and what not to include) to make a great first impression with employers and clients.

# 7 Tips That’ll Help You Stick With Online Learning

04/08/2020

We know that learning from home can be challenging. That’s why we’ve put together a list of tips to help you stay focused and motivated.