Last week, the Everyone Should Learn To Code video was making the rounds around the web. If you’ve haven’t seen it, I’ve shared it below.

In short, the video opens with a quote by Steve Jobs:

I think everybody in this country should learn how to program a computer because it teaches you how to think.

In short, it’s an inspiring video that features some of the most popular technologists discussing their thoughts on programming, their foray into the industry, why others should follow suit.

This idea isn’t new, but the popular nature of this video has really gotten me thinking about my particular stance on this issue. In fact, I read a strong rebuttle to the video last week that – whether or not you agree with it – is a well-written piece.

I shared my candid thoughts with my team on our back channel which resulted in a bit of a discussion primarily between John and myself. The more I’ve thought about it, the more of an opinion I’ve developed, and thought I’d share it here.

TL;DR: I’m not completely sold on the fact that everyone should learn to code. First, I think we need to define what it actually means to code.

My First Impression? Not So Much.

Truthfully, at first glance, I did not agree with the idea that everyone should learn to code.

It has nothing to do with trying to protect my industry, or trying to elevate writing code above any other type of science, engineering, humanity, or liberal art – I don’t buy into that mindset because I think it’s arrogant (and wrong, even) – but my issue has to do with the fact that I wasn’t sold on the idea that everyone was “cut out for it.”

And with good reason!

The Budding Developers

See, I went to a school where every student – regardless of their major – was required to take at least one programming course. Heck, I even TA’d for that class! I wanted to teach those kids how to write code.

I witnessed first hand some students budding desire to learn more about computers, how they work, and the control that they’d be able to have over them by entering instructions into them in order to get them to do whatever it is they wanted.

That was rewarding.

This Isn’t For Everyone

Then there were other students who were not so interested. They were frustrated, they wanted to give up, and they really lost interest in the course. As someone who firmly believe in educating others – and who enjoys it – I found this disappointing.

But could I honestly fault them? There were plenty of classes that frustrated me in which I lost interest. Why should I shove my personal preferences on others?

Though I saw people’s interest come alive, it was the students who were dismayed at the practice that began leading me to believe that maybe not everyone should learn to code.

But as I thought more about this and talked through it more with my team, something clicked.

What Does “Code” Even Mean?

If you were to stick a group of developers into a room and then asking them “what does it mean to code?” You’d likely get an answer like the following:

It means writing code.

That’s a bit of circular reasoning, and maybe I’m not being fair in creating that scenario – I’ll openly admit that – but the truth is that term “code” or “coding” is far too generic to truly represent what the industry offers.

For example:

  • Many designers code. They write front end markup, style their presentation with CSS, and may even know a bit of JavaScript.
  • Client-side developers are likely fluent in CoffeeScript, JavaScript, or some other variant. That may be the only language they know.
  • Server-side developers may know Ruby, PHP, Perl, .NET (or C#, VB.NET, F#, etc)
  • Embedded systems may know assembly, C, or C++
  • …and so on

This doesn’t even begin to touch on topics such as functional programming, object-oriented programming, software architecture, processors, memory management, instruction sets, computer architecture, or any of the like.

And does that matter? For an introduction to programming, I don’t think so.  Why should it have to go that deep?

People don’t start off learning to play the guitar by learning how a guitar is made, how the coatings of different chemical composition affect strings (and how it impacts the sound), and the various modes, scales, and tunings.

What I do think is that people should be able to see how easy to is to get something to happen on their screen learning a basic set of instructions either via HTML, JavaScript, C++, or whatever language they opt to pursue.

Should Everyone Learn To Code?

I think there’s something powerful about teaching others to code. I agree with Steve Jobs in that it can help you to think:

  • Just like taking a philosophy class can help you understand and recognize logical fallacies.
  • Just like learning calculus can help you to explain the world and universe around you in the practical applications of physics
  • Just like studying anatomy can help you to more fully understand what’s going on with your own body
  • …and so on.

So, should everyone learn to code? Personally, I think that it would greatly benefit the younger generation to learn to write code, but I think that we owe it to them to properly present what options their are for actually coding.

Using a term that’s too generic isn’t doing anyone any favors. Instead, perhaps everyone should learn a particular language (or a couple of languages) in which they can write code.

That’s something I can certainly get behind.