The Affogato Approach to Teaching Programming
This post was originally published on blog.charliemeyer.co
The Coffee Problem
Young people usually get introduced to the taste of coffee with their first taste of coffee ice cream. It’s a little bitter, but the flavor is great. Unfortunately for young coffee aficionados, most coffee drinks don’t taste the same. Coffee is an acquired taste.
Young programmers usually get introduced to programming with their first experiences programming in Scratch. It’s a little tricky, but students love making animations and games. Unfortunately for budding engineers, most professional programming environments don’t offer the same experience. Programming is an acquired taste.
All teachers know that students can’t mess around with coffee ice cream forever. Standard arguments for why this is the case are:
- Coffee ice cream isn’t “real” coffee
- America runs on
Dunkincoffee, so you better start learning about it sooner or later - If you’re ever going to work in a coffee shop, you’re going to need to know how to operate a coffee machine
Mildly convinced, students are walked through the motions of booting up a proper IDE and making espresso. Some students even like the taste! But for many more, the tiny cup of brown fibonacci numbers or tip calculator results are at best useless, and at worst outright disgusting.
The Affogato Solution
Image source: NYT Cooking
The affogato gives us the model for our solution here. We can have students do real programming at the espresso machines, but they need to be doing so with the end goal of making something they’ll actually love the taste of. Better yet, in making the affogato, students learn the practical skills they’ll need to make whatever drink they choose once taste of coffee becomes more palatable to them.
Luckily for us, this analogy breaks down pretty quickly when we start applying our learning to real educational tools. We can go much further than just coffee flavored dishes, giving our students experiences making music, chatbots, apps, and websites.
When transitioning students to more advanced programming concepts, we must ask at every step: “Will they like the taste of this?”. It’s hard as a seasoned coffee drinker to remember what it’s like to hate coffee, but most of us were there at some point in our lives.