A lot of people are saying that coding is important for your students to learn. And although I may not necessarily agree—you’ve learned that I think the ability to design is more important than the ability to code—I do think that having the ability to code is a skill that’s going to be useful across disciplines.
But you don’t know how to code. If you were to stand up there in front of your students and try to teach them about coding who’s-y-whats-its you’d look ridiculous. Maybe someday, after a summer of professional development or a couple of courses, you can incorporate it into your repertoire.
Don’t think that way!
I approached coding with that attitude… if I’m going to teach students to code, I need to code myself. And I spent a summer working through the tutorials of Basic HTML and CSS, until I finally had the novice skills to build a webpage. It was a waste of my time.
There are dozens of free resources online dedicated to teach your students to code, and your students don’t need an instructor. They need a motivator, a coach, a guide, but not necessarily a teacher. So that’s all you have to do! Here’s how I teach coding without knowing how.
First Off, What is Coding?
We’ve used the word “coding” as a synonym to computer programming, and once you say computer programming, things start to seem confusing and ones and zeroes and screens and operating systems and oh goodness the future is here and I don’t even know what it looks like.
Coding simply means using logic to tell an inanimate object what to do, typically through statements of “if this happens, then that happens.” Your entire interaction with your computer is run by this. For example, if I click twice on Internet Explorer (*shudder*), then my homepage comes up. If I press the “X” key on my keyboard, then “X” appears. And so on.
Some famous intros to the concept of coding are simple… I loved one a former colleague did, in which students were to program someone to make a peanut butter and jelly sandwich. “If the jar is not open, then unscrew the lid.” “If the bread is covered in peanut butter, then stop.” The challenge of coding is the need to be precise. One incorrect line of code, and you’re stabbing yourself in the eye instead of the jelly.
But that’s all coding is! You can code a computer to play tic-tac-toe… or chess… or poker. Or to be a search engine, or a splashy homepage, or to compute market instability. And it all starts just by learning basic logic skills. And lucky for you, you don’t need to have those logic skills…
You Just Need to Know What’s Out There
I don’t need to know how to code. I do need to stay on top of the different free online courses that can teach you how to code. Here’s my favorite options for my middle and high school students:
I’m starting to think Swift Playgrounds is the best entry point for students, as it uses a gamified model and teaches a student a programming language, an important piece of the puzzle that code.org doesn’t do. But any of these can serve as great introductions, and the students who find themselves passionate can then explore further at their own pace.
Build Out the Module
My students meet with me for four 75-minute blocks every seven days. So I make every Day 3 a “coding check” day, in which students are to have progressed to the next stage of their coding, whatever that may be.
I ask students to dedicate an hour of each cycle to coding, and I do my best to ensure that throughout the cycle I provide about an hour of class-time for coding. It’s a great filler exercise for the course, and the students seem to almost find it relaxing—spending the last twenty minutes coding while listening to music, and the like.
Each student fills out their own “time-sheet”:
And then they either submit me screenshots of what they’ve completed in Google Classroom, or when I have more time, I come around the room and see what they’ve done. Websites like code.org even have a terrific system in which you can have a “class” and check in on your student’s coding.
I try to balance pushing students and rewarding them for when they go ahead.
Build Student Excitement
(It’s a useful skill. It’s fun. It’s rewarding. It sounds badass.)
First off, students like the idea of it. “Coding” and “programming” sounds like this cool techie world of hackers and video games and fun. It’s rare in education that something that sounds fun and interesting also aligns with useful skills. So play that up!
Explain how a lot of your students love coding—it’s often like a puzzle game that rewards patience and logic. Explain how having the ability to code gives you the ability to construct the future. We’re in a world where a programmable computer can be had for two-digit sums of money. If you know how to program it, you can create your own smart-home, develop your own personal assistants, make your phone yours. And as we now live in a world with the Internet of Things—computers turn off our lights, they’re in our refrigerator, they’re in our bodies, knowing how to interact with them and command them is extremely useful.
And although extrinsic motivation isn’t as useful as self-motivation… you can remind them that programmers make pretty good salaries. You can throw out a Mark Zuckerburg type success story—no college, billions of dollars, tons of power—too.
Full Transparency – I Don’t Know How to Code
I think this is important—the students need to know that I’m not an expert. I explain to them that I’ve played around with tutorials and have guided students through the modules, but in many cases, they are more experts than I am. There’s some cases where I haven’t tried the module in years, they’re right in the thick of it, of course they’re going to be better than I am.
They then realize that they have no rope, and they have to figure it out themselves. And that should be empowering to them. I’ll have kids give up on very easy coding puzzles and immediately bring it up to me, saying “I don’t get it.” And I can say, “yeah, I’m not sure either. But try re-watching the tutorial video. Or check in with one of your friends. Or skip it, and see if you can get the next one.”
These are the strategies that are far more important than actually being able to code. I learn everything through online tutorials, and being able to follow them and know how to troubleshoot is a critical skill.
Perhaps one more important than coding.
Let’s Teach More Things We Don’t Know
I think this approach can extend far beyond computer programming. New jobs are going to start popping up all over the place, and if a student’s sphere of knowledge is limited simply to what I know… well, they’re doomed.
“Don’t teach kids knowledge, teach kids how to learn” is a cliché, but it’s apt here. Kids learn best when they like what they’re learning and when they feel they have choice. So if we can give them options, give them choices, and build structures to allow them to learn things we don’t know, they’ll be set for the future.