Of course you should learn to code!

I just wanted to respond to a recent volley in the ongoing “should you learn to code?” blogging wars. Ciara Byrne writes in No–You Don’t Need To Learn To Code:

Imagine being harangued by a deluge of articles with headlines like “Why everyone should learn to knit.”  With all due respect to knitters, it would seem ridiculous. …  I’m a programmer. Do I think everyone should learn how to code? No. Here’s why.

She proceeds to argue that better than learning to code is learning to understand coders, to learn how everyday software works, and to learn something else entirely like yoga.

Since I am putting a ton of energy into creating a new introductory computer science course that doesn’t emphasize programming (“A First Byte of Computer Science“), one might think I agree with the sentiment of the article. I don’t. Here’s why.

I think the issue is: What do we mean by “learn to code”? Or, for that matter, “learn to knit”? I don’t know about you, but I was forced to do arts and crafts in school and summer camp as a kid. Why? Did they expect me to become an expert craftsman? To start a sweater business? No. I’m sure, in part, they were just trying to keep us busy. But, I bet part of it was that learning how to make things with your hands is a huge win in life. Even if you never make things professionally, it helps you understand how things are made, how they can be used most effectively, and what to do when they misbehave. And, sometimes, you need to cobble something together quickly because you have a need that is acute (like fixing my zipper when it got stuck right before a job interview) or short-lived (like creating a halloween costume with my daughter). I have drawn on my experiences as a once-a-summer knitter to bail myself out of many binds as a grown-up. 

To me, “learning to code” is more like “learning arts and crafts” and less like “learning to become a professional-grade knitter”. Casual coding is valuable for analogous reasons: it gives you an understanding of how software works and enables you able to do something when the need strikes.

Here’s another analogy: Imagine you move to Colombia for a year. Should you learn Spanish? No, some might say. Learning Spanish is extremely time consuming. There’s almost no chance you’ll become the craftsman Gabriel García Márquez is or even get rich as a Spanish journalist. But, that’s not the point, is it? By learning some Spanish, you’ll find it easier to get around. You’ll be able to let people know what you need without having to arrange for a translator for everything. And, you might discover your Spanish does help you get rich because it allows you to make valuable connections to the people around you so you know where the needs are and can jump in and bring to bear your own special talents. It’s not the Spanish that’s valuable per se but the ability to communicate. That’s what coding is. It lets you tell machines what you need them to do. It’s a means to an end and not an end unto itself. Yes, you should learn to code. We’re surrounded by machines that are here to help us and most of us can’t even tell them what we want.

Her argument that “Programming is not a get-rich-quick scheme” is a straw man. The article that she lampoons as “Why everyone should learn to knit” is actually entitled “Why every single one of you should learn a little code“. A little code. Take a moment to learn a powerful idea. It’s a small investment of time and it might be fun. It’s just a scarf, not a hundred years of solitude.