Should Everyone Learn to Code
Jeff Atwood, a programmer I respect a great deal, posted a thought provoking piece last week entitled “Please Don’t Learn to Code.” I’ve followed Jeff’s work and writing for many years. I normally agree with almost every word he writes, and I very much enjoy his sense of humor. On this particular point, I found myself agreeing and disagreeing all at the same time.
Two other bloggers whose work I’ve followed for just as long posted in follow up to Jeff’s post. As I read through Jeff’s post, the 200+ comments, the other two posts, and several other responses online, I found myself thinking very carefully about something which I thought I had decided long ago.
I’ve been teaching programming to high school students and directing technology education programs for K-12 students for many years. As a programmer, I always assumed the lessons learned by programming were valuable to all students. I’ve written curriculum and scheduled classes around that very idea. Programming teaches problem solving, and everyone, in my opinion, could stand to learn more about problem solving.
On the other hand, I agree that the recent flood of people learning to code following tutorials of one flavor or another is not all good. I frequently find myself explaining to clients and students that there is a difference between a programmer and a code monkey or script kiddie. My success as a programmer has come from my ability to speak real words to real people and translate problems into solutions and then those solutions into code. In many cases, I could let someone else write the code. It’s the solution that matters, the code just makes it happen.
This is why I take an academic approach to teaching computer science. I don’t care so much if my students intend to become programmers someday. I want them to learn the discipline in such a way that they understand what is going on. The goal is not for them to make something happen with a computer. The goal is for them to learn how to make something happen, AND to learn that they can make something happen, AND to learn that they can learn how.
I also agree that learning to write is even more important. I remind my students frequently that learning to communicate with people is more important than writing code. But if I have to choose sides, I’ll side with the dissenters.
In the comments, a lot of discussion centered around the plumbing analogy.
Look, I love programming. I also believe programming is important … in the right context, for some people. But so are a lot of skills. I would no more urge everyone to learn programming than I would urge everyone to learn plumbing. That’d be ridiculous, right?
Well, yes and no. The analogy is not a perfect one for a lot of reasons, but I would say that understanding what plumbers do is probably something we could all learn from too.
Bottom line for me is that everyone could learn something from trying to learn how to code. Perhaps not everyone can code, but they can try – and that is valuable.
Trying to learn programming can help one …
- learn problem solving and analytical thinking
- understand how computers work
- understand general computing and the danger of the war against it
- understand what programmers do
So, what do you think? Should everyone learn to code?