Everyone Should Learn to Code

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.

Category:
Articles

Join the conversation! 8 Comments

  1. I agree with you Tom. I struggled for a few years early in my career wondering if I should really have some strong coding skills since I work in the Internet industry. I’m thankful that I’ve coded in the past and that I can sit down with a developer and understand the language and limitations they have. However, I’m very open that coding, especially of the back end variety, is not something I’m very strong at or really enjoy. I love the puzzle aspect of coding but I’m terrible at figuring out where to start. I use my knowledge of coding in my UX to inform what my possibilities and limitations are, but the furthest I dive into code myself is some front end prototyping, which I actually do enjoy.

    Coding certainly helps think about problems from a different perspective, but I don’t think it’s necessary. One exception I have though is that if you work in the computer/internet industry I do think it’s immensely helpful to have a basic working knowledge of code, current languages and practices, and current trends. I’ve seen way too many execs and marketing people not have a clue and then make ridiculous requests of digital employees because they have no idea how code or software really works or the process needed to create it.

    • One exception I have though is that if you work in the computer/internet industry I do think it’s immensely helpful to have a basic working knowledge of code, current languages and practices, and current trends. I’ve seen way too many execs and marketing people not have a clue and then make ridiculous requests of digital employees because they have no idea how code or software really works or the process needed to create it.

      This is a really good point – even if a person doesn’t truly learn to code, understanding the process and what goes into building a product is useful because they can empathize with what their team is doing.

      In fact, I’d go as far as to say that this is yet-another-reason that coding – in some form or fashion should be taught.

      Though I still contend that we need to truly identify was “coding” means before suggesting that everyone should learn how to do it.

  2. Everyone should learn how to type. It’s useful in their entire lives! It makes them more productive! Cut out the secretary! But what layout? AZERTY? DVORAK?

    Languages is definitely a factor, but fundamentally, getting to know the way in which a computer interprets code and the way it accepts instructions makes it easier to understand how to command them even if you don’t go further than a spreadsheet.

    Whether or not it’s easy to learn, it’s part of a well-rounded education, and that’s not supposed to be fun. Lots of students don’t enjoy algebra.

    • Everyone should learn how to type. It’s useful in their entire lives! It makes them more productive! Cut out the secretary! But what layout? AZERTY? DVORAK?

      Thanks for the thoughts, Simon!

      If you’re referring to true typing, I agree; however, if you’re referring to coding, my stance is pretty clear in the post.

      For secretaries, I disagree. The point of the secretary isn’t to type things for you. It’s to help delegate the amount of a work one person has in order that they can be more productive.

      As far as layouts are concerned, I think that’s a purely personal preference. Though studies have shown that certain keyboard layouts can improve speed, there is a significant commitment to learn a new keyboard layout which does cost time to learn and if you’re familiar with a given layout for decades, is it worth the time to learn it.

      Whether or not it’s easy to learn, it’s part of a well-rounded education, and that’s not supposed to be fun. Lots of students don’t enjoy algebra.

      Completely agree – typing is part of a well-rounded education, and I think a certain level of coding can be beneficial. It just depends what kind.

      I don’t know if a well-rounded education isn’t supposed to be fun or not – I think that’s subjective :) – but for certain people, I think that it definitely can help (as well as hurt) their education experience.

      • When I mention typing, it’s only by way of comparison. There used to be typists in hospitals finishing journal entries for doctors who were much slower on a typewriter than by hand or by dictation. That no longer is the case – there are no more typists. The specifics of how people learned to type are no longer important, the point is that it quickly became a skill that professionals required no matter what they otherwise worked with.

        I used to have a great teacher back in high school. He was super chill, wouldn’t be too harsh on my German grammar, and gave me good grades. At the time, I arrogantly thought he saw my real intellect and not just the casual errors. Then I moved to Germany and couldn’t buy a kebab in the street. Fun education != good education. Good education can be fun, but education that’s supposed to be fun won’t be.

  3. I know this was an old post, but after a quick google search this post seems to be the ONLY page anywhere that directly addresses the stupidity of the phrase “learn to code”. Seriously, what does it mean? It’s like saying “I learned a new language”. Which language? How well do you know it? These things aren’t answered. Nobody says “I learned a new language” – heck, nobody even says “I learned French this summer” – but people throw this phrase around all the time.

    As an amateur programmer (C++ and Java) who has a few professional acquaintances, I find this a little offensive at times. There was a fashion model on youtube who was saying “I learned to code!” and people were giving her accolades. Which language did she learn? The introductory C++ textbook I used is roughly the size of a cookie box and I’m sure there were a lot of things the textbook didn’t cover. If she did indeed learn C++, does that mean she can write a C++ code that has over 20,000 lines, debug it, and execute it without ever referring to any textbook? I’m sure most of native English speakers don’t refer to Beginner’s Guide to English. Cambridge Grammar and OED, sure. Is she at that level, programming-wise? A TI calculator can run simple C programs (that’s what I first learned programming on). Is it that level? Because that doesn’t require any textbook, nor does it merit praise. I did it when I was 13. I’m sure there are a bunch of junior high and high school students who can do the same.

    People need to define what they mean. Don’t all programmers “define”? Why can’t they apply that to real life?

    • Seriously, what does it mean? It’s like saying “I learned a new language”. Which language? How well do you know it?

      I don’t mean to come off as addressing the phrase as stupid, but I do think that it’s definitely a generalization because, as you’ve mentioned, there are so many programming languages that are out there.

      On top of that, there are so many different types of development that someone can get involved with (embedded systems, web development, iOS development, desktop software, server software, networking software, and on and on it goes).

      On top of learning to code, there’s an entire other set of things that come with it. Like, in your case of C++ or C, there’s memory management that you have to understand, header files, pointers, threads, etc. And then there are design patterns, procedural programming, functional programming, object-oriented programming, architectures, best practices, worst practices, and on and on it goes.

      So I bring up this phrase in this post for many of the reasons that you’ve mentioned – I don’t think it’s enough to treat “learning to code” like sitting down and learning how to, say, write and structure an essay. There’s certainly some basic things that are necessary when you start, but then it can quickly get more complicated.

      It’s similar to a musical instrument. Like on a guitar, for example – you can learn a few chords and thus learn a few songs, but why are the chords called the things they called? What’s the theory behind it? When do we cover scales, arpeggios, improvisation, major keys, minor keys, suspended chords, fifths, thirds, etc., etc.

      This is why I stay suspect of the idea.

      Sure, I’d love to see more people involved in computer science but I don’t want to treat it as something that can be picked up in a weekend without knowing just how deep it can get.

  4. I really wish fewer people would learn to code. More business for those of us who know how!

Leave a Reply