You Can Learn To Code — But How Do You Learn To Make Things?
Or: “How I Teach Coding Students To Explore”
What I remember about learning to code is the ugliness:
Web pages with red text on a cyan background. Fractals drawn with three colors — red, yellow, and blue. GOTO statements.
But it was my ugliness. And making something ugly means you’re being true to the learning process.
Now I’m starting my own website of coding classes, Day By Day Coding, whose aim is to teach you the real creative process, warts and all, of making things.
But how do you do that? How do you teach coding as an exploration to adults with concrete goals? How do you get them to embrace the mess you make along the way?
I’m trying to figure that out myself. Here are the counterintuitions and contradictions I try to embrace in teaching how to make things.
1. We all die, so patience counts.
Something happens when you pass from childhood to adulthood, and you gain a sense of mortality, of finiteness. Now all of a sudden everything needs a purpose and a timeframe.
So how do I justify 6 pages of homework on for-loops? Why is my first class’s final project a text adventure game, while students in bootcamps are already deploying Angular webapps in Docker containers?
Here’s my answer, and it motivates every video I make: learn less stuff better, and you can get to work faster.
So in turn I’ve been asking myself, “What do students really need to learn before they can make anything they want?”
The checklist of technologies I use is very short: Python, Flask, maybe some Angular.
But the checklist of skills runs deeper: sitting, thinking, making a sketch, drawing boxes, reading, experimenting...
And these are the skills I try to teach. I think a coding class based on a checklist of technologies makes you feel like you’re on a treadmill. But if you learn to pitch a tent, guide yourself by the sun, and watch for bears, you can leave tomorrow for wherever you’re going.
But how do you teach those skills?…
2. Teaching balances light and dark.
If you’re lost, you’re not learning.
If you’re following steps, you’re not learning.
So as a teacher, I try to balance direction or guidance with letting you wander. To me, a good homework problem is one where I show you point A — where you are — and point B — where you’re trying to get to. Then I leave you to stumble around a little. The trick as a teacher is to be able to judge a good distance between A and B.
Introducing students to the wandering part of learning, even the frustrating part, is tough for teachers to do, because that’s where we as teachers really risk failure. (I don’t have a fix for this, I’m just telling you it’s hard.)
That said, if your students are going to spend an hour looking for a missing curly brace, you have to motivate it. I try to keep a creative goal in mind for every homework problem. So a for-loop exercise is framed as data analysis — because that’s what it is. And I show that sketching out an if-statement is spiritually the same as sketching out a mobile app — because it is.
When students have found their way through the dark, and finished a problem, I want them to feel that they’re capable of something they weren’t before.
Because something’s missing from online coding classes…
3. Real learning isn’t just fun, it’s terrifying.
I’ve taken online classes, and what I don’t typically feel is a sense of joy. They take the creative process and smooth it out into a checklist. Thus it only feels like you’re learning. You finish one of those courses, look around you, and realize you have no new power over the world that you didn’t before.
What I’m really trying to teach is the combined agony and ecstasy of making something from nothing.
The blank page is scary for both teacher and student… But what if that uncertainty was the point of the class? What if instead of working up from addition to multiplication, we told students there’s a wilderness ahead, where numbers need to be added repeatedly, but some experimentation and imagination will see us through?
Maybe they wouldn’t believe you, but your point would be made: “This is an adventure — it’s like a journey, but with rattlesnakes.”
Conclusion
I utilize a program of fear and withholding to teach creativity.
No, I’m kidding, but I do believe that caring, thoughtful teaching has a certain kind of playful respect to it. Respect for the student, for their imagination, for their impatience and for their patience, and for their capacity to explore.
And ultimately, that respect means attempting to illuminate, not to explain. My goal as a teacher is to illuminate, by showing where code fits into a creative process.