Please don’t learn to code. Please do learn to code. This past week, a blogospheric angel and devil has emerged on both sides of my shoulders after the latest and greatest installment of opinions manifested on the internet.

I read the Tech Crunch article. I read the FreeCodeCamp article. For good measure, I also read the Coding Horror article mentioned by the FreeCodeCamp article. My reaction? They all have valid points and are all worth reading. I don’t think these articles are in direct conflict with each other as we might have believed them to be.

This is my happy-medium concoction of the two viewpoints—the “don’t learn to code” (“don’ters”) and the “do learn to code” (“doers”).

But first… just teach it in schools!

Let’s get one thing straight right now.

The strange part about all of this is that there’s actually two different topics being said. There’s the very real conversation about what it means to code as a career. And somehow, amongst all this commotion, there are these random footnotes where we are talking about whether to include computer science in our school education system.

Why are we even

Can we put this to rest? Pretty please? It is, without a doubt, just as important a skill as any other subject you might learn in school. Bear in mind that pretty much every subject taught in school is not utilized by every student. I’d argue that on average 80% of what is taught in schools is never directly applied to the real world. The true purpose of schools then, is to expose developing minds to a variety of subjects so that they might gain interest in a handful and pursue those particular ones further. To say we shouldn’t teach programming because not every single student is going to use it in their professional lives is a logical fallacy at best. Let’s teach it! What do we have to loose?

The [long] road to a coding career.

Should you, on the other hand, learn to code as a Career™? Before taking the plunge, one really should consider the advice of the don’ters.

Coding is definitely—definitely—very hard work. It’s not as simple as taking a three-month boot camp, (although the right one is a proven way to start). The don’ters (and myself included here) are just trying to maintain the integrity of programming, and that’s a noble cause. It’s not something you do on the side, or something you take an online course in and say you are now a professional. And it’s certainly not the glamorous Silicon Valley easy-living sleep-in-till-whenever-party-hard-smoke-weed we see in the moving pictures these days. It. Is. hard. It is agonizing. It is infuriating to deal with on a day-to-day basis. There will be many times when you feel you’re up against a huge immovable wall. So the interest must come from the sheer joy and getting a program to work, and realizing that these skills will not always come to you quickly, especially if you don’t come from a programming background.

Actually, programming is like plumbing… and we all should learn both.

Is it just me, or is plumbing getting a really bad rap out of all of this conversation?

I get the intent of the analogy: perhaps not everyone should learn to plumb, although doing so would leave to a rather lucrative career if one puts in the effort. But even if you didn’t make a career out of plumbing, you’d pocket a nice chunk of change whenever something went wrong in your own bathroom. Most minor potty problems can be fixed with just a little bit of knowledge on the subject, and you can bet there’s a nice upcharge to the plumber who would otherwise do the simple work for you. Maybe you don’t need to do coding professionally, but it sure is nice to know how to open up the Chrome Dev tools and hide elements that were incorrectly rendered in the DOM by supposedly professional Developers in order to get to the actual content in a website, or write a bash script to automate work for you. Or build a simple app because you don’t like the ones available.

Whether it’s for personal convenience or professional ambition, I don’t see how learning to code could ever be a waste of time.

What we can learn from both.

Let’s take the good parts and leave the rest. With the don’ters, there’s the sober reminder that coding is a full-fledged, never ending skill that you gotta be gung-ho about in order to truly stick with. With any movement that gains popularity, we will find a number of new folks who are in it for the hype come out of the woodwork. The don’ters want the hypers out. Hypers are the frauds that want the outcome without the process. They get in the way of the genuine ones trying to do genuine work.

But if you want to put in the work, if you are genuine about building a career, the doers will tell you that it’s absolutely, 100% a possibility. What’s great about code.org, FreeCodeCamp, codecademy, and the learn-to-code movement in general is the massage that coding is not, in fact, magic. It’s an attainable skill, just like calculus or chemistry or English literature for that matter. I’ve had many conversations with people saying how mysterious the computer is to them, but what they don’t know is that it doesn’t have to be that way.

When I was in high school I loved programming video games with Gamemaker. But pursuing programming as a career never seemed like a good option in my young and ignorant mind. At the time, programming as a profession seemed entirely unattainable, even though I was already writing code and dealing with logical gates and data structures at that age! The learn-to-code movement has helped to bridge the gap between wanting to code and how to start actually coding. Not too long ago, it has shown me the [very large, let’s not forget] path to a career in software engineering in my own life. So I happily spend early mornings, late nights, and weekends after weekends dedicating myself to learning the craft in the best way that I can. And you know what? I wouldn’t have it any other way.