This post was migrated from my previous blog managed by an old CMS. Some parts may be broken or poorly formatted, images may be missing, etc. Feel free to report an issue.

It's been tossed around a lot in the past year or two: "You should learn to code". In fact, it's been tossed around a little too much. There's article, after article, after article, after... well, you get the idea. It's gotten to the point where many are sick of hearing it.

Jeff Atwood, a well-respected web developer, recently wrote an article titled Please Don't Learn to Code. His arguments are completely valid, but I fundamentally disagree with his conclusion. The problem at hand isn't whether or not people should learn to code. The problem is why people should learn to code.

Almost everything I've seen about learning to code claims that it will somehow help your career. And I guess that's true, if you plan on being a developer, or working closely with developers. But aside from that, there's not a ton of benefit for your job. But I firmly believe there is still value in exposing everyone to programming.

Look at mathematics, for example. Beyond algebra, what value is there for day to day life in learning it? Will knowing anything about parametric and polar equations help me? Or finding the volume of a shape by rotating it on an axis? Fat chance. But the primary goal for most people taking upper level math is the logical skills that come along for the ride. Is programming any different? Arguably, programming can be a more valuable problem-solving tool than absurd levels of calculus because that's literally all programming is. It's problem solving.

During my freshman year of high school, my English teacher brought up the subject about what we (the students) wanted to do with our lives. I proudly proclaimed I wanted to be a "computer programmer" (in retrospect that's an absurdly generic term, but the point remains), to which my teacher responded almost angrily. There seemed to be a perception that wanting to be a computer programmer wasn't aspiring to much. In reality, I think you'd be pretty hard-pressed to find a developer who doesn't find their work mentally stimulating. Programming can be absurdly difficult. Yet somehow, my English teacher seemed to believe otherwise. That striving to be a developer was, somehow, a waste of my talent.

For the past two summers, I've been teaching for iD Tech Camps. I've had the immense pleasure of teaching children how to program in Java. What they quickly learn is that coding is rarely the challenge. Writing code is pretty straight forward. The issue they face is never with code, but problem solving; figuring out what they need to write. It's an entirely different learning experience than they get from their schools because most of them don't have an opportunity to take a programming class. That said, that's not the biggest reason I believe everyone should learn to code.

There was one week this summer where a kid in my class wasn't that interested in Java. Sports were more his thing, but his parents wanted him to spend a week at computer camp to be exposed to something new. It was a challenging week for him. Staying motivated was tough. In the end, however, he walked away with something very important. Even the kids who were really into learning it, I wanted them to walk away with the same thing: a renewed appreciation for the software they use. Until they learned to write a program themselves, they didn't have a grasp of the amount of work real software takes.

At the end of the week, they're really impressed by their simple hangman game. "300 lines of code!" they say excitedly. Then the real lesson comes. I tell them about Google's transition from Webkit to Blink, followed by the amount of code they removed right off the bat: 8.8 million lines. It's not meant to belittle their own achievements, but to demonstrate the sheer size and scope of modern software so they walk away understanding how much work it takes. And that kid who wasn't too thrilled to learn Java? At the end of the week, he gave me one of the most sincere thank-you's I received all summer. "It's a lot more work than I imagined," he said. That's why everyone should learn to code.

Most of us dissect things in high school biology, but do we go out and dissect things every day? A vast majority of us don't, but we learned it anyway. If computers are the way of the world now, is programming any different? I do not for one second believe that teaching everyone basic coding skills will result in a lot more bad code in the world, as Jeff Atwood does. What will happen is more young people will be exposed to possible careers, and more people will have an appreciation for the work developers put into software. The issue isn't whether or not you should learn to code. The issue is saying that it's definitely good for your career. The real reason you should learn to code is a personal one. Everything else is bullshit propaganda.