Everyone Should Learn To Program, But Not Everyone Should Be A Programmer

The recent free courses from Pluralsight on teaching kids to program really got me thinking about this subject.

There seems to be a big backlash in development community against the idea that everyone should learn to program.

I’m not sure exactly where it is coming from, but I suspect it has something to do with egos and fear.

Even within the development community, there seems to be a distinction between “real programmers,” and “not real programmers,” based on language or choice.


I have to admit, I have been guilty of this type of thinking myself, because a very easy way to increase our own value is to decrease the value of others.

But what I have come to find is that not only is the distinction between “real programmers” and “not real programmers” a false dichotomy, but that the distinction between a programmer at all and a layperson, is also not quite as clear, or at least it shouldn’t be.

Not everyone should be a programmer

It’s true.  Just like not everyone should be an accountant, or not everyone should be a writer, but I think we can all agree, that everyone should understand basic math and be able to write.

Learning how to program and doing it professionally are two distinct things and they should not be lumped together.

It it pretty hard to imagine a working world where no one except writers could write.

Imagine wanting to send an email to your boss, but you don’t know how to write, so you have to ask the company writer to do it for you.

That is what the world would be like if we insisted that only writers needed to learn how to write.

But perhaps you think I am just being silly, I mean the need to write is so prevalent in everyday situations, but the need to program isn’t.

But I challenge you to consider if whether it is actually true that the need to write is much more prevalent than the need to program, or because everyone knows how to write, the need for writing is just recognized more.

Imagine if everyone you interacted with on a daily basis knew how to write code.  Imagine that, just like everyone has a word processor on their computer that they know how to use, there was an IDE that allowed them to write simple scripts.

Think about how that changes the world.

APIs everywhere!

The first thought that comes to my mind in that world is that there would be APIs everywhere.

Every single program would have an easily accessible, scriptable API, because every user of that program would want to be able to automate it.

In time, the way we viewed the world would completely change, because just like products today are designed with the thought that users of those products can write, products of that time period would be designed with the assumption that users of those programs can program.

Suddenly everything becomes accessible, everything interfaces with everything else.

Doctors build their own simple tools based around their specific process by combining general purpose software from their equipment.

There is a Pinterest full of code snippets instead of pictures.

Every device and piece of software you interact with has an API you can use to automate it.

The point is that we can’t conceive what the world would look like if programming was as prevalent as writing, but such a world can and should exist.

Computers and technology are such a large part of everyone’s lives that it is becoming more and more valuable to be able to utilize this so common element.

It starts with kids

We have to stop thinking programming is hard and realize that it is one of the easier things we can teach kids to do.

If a person can grasp and use a complex language, such as English, that person can learn how to program.

Programming is much more simple than any spoken or written language.

But, we have to stop erecting these artificial barriers that make programming computers seem more difficult than algebra.

Nokids_computert only that, but we need to start integrating programming concepts into learning these other subjects.

Is there really much difference between an algebraic variable and a variable in a programming language?

Isn’t most mathematics solved by learning an algorithm already?  Why not at the same time, teach how to program that algorithm?  Not only would it make the subject much more interesting, but it would build a valuable skill as well.

We spend a great deal of time educating kids with knowledge they will never use—basically filling their minds with trivia.  But, how much more likely would they be to use the skills learning to program would give them?

What was hard yesterday is easy today

Calculus, geometry, probability, the structure of a living cell, electricity… What do they all have in common?

These concepts used to be advanced topics that only the most educated in society knew about or discussed, but now have become common knowledge that we teach children in school.  Ok, well maybe not calculus, but it should be.

Over  time, the concepts that only the brightest minds in a field could possibly understand are brought down to the masses and become common knowledge.

It is called “standing on the shoulders of giants,” and it is the only way our society advances as a whole.

Imagine if it was just as difficult for us to grasp the concepts we are taught in school as it was for the pioneers of that knowledge to obtain it… We wouldn’t ever advance as a whole.

But, fortunately, what is hard yesterday ends up being what is easy today.

The same will eventually happen with computer programming, the question is just how long do we need to wait?

It’s all about breaking down walls

I try to never say that something is hard, because the truth is that although there are some things in life that are hard, most things are easy if you have the right instruction.

It is natural for humans to want to think the knowledge or skills they have acquired is somehow special, so naturally we have a tendency to overemphasis the difficult in obtaining that knowledge or set of skills, but we’ve got to work through the fear of job security and egos and remove the veil of complexity from programming and make it simple.

The value we can bring by helping others to understand the knowledge we have is much greater than the value that using that knowledge alone provides.

If you like this post don’t forget to Follow @jsonmez or subscribe to my RSS feed.

About the author

John Sonmez

John Sonmez is the founder of Simple Programmer and a life coach for software developers. He is the best selling author of the book "Soft Skills: The Software Developer's Life Manual."

  • http://www.mattjcowan.com mattjcowan

    I agree. I think all high school students should graduate with some level of proficiency in at least 1 computer language, in addition to 1 foreign language (at minimum).

  • http://gravatar.com/vipera66 vipera66

    And old is new again. Parts of this sound a lot like the philosophy of UNIX. Every program does just one job and does it well. The user is expected to be able to write shell scripts to tie all of these programs together to accomplish their goals.

  • http://joylax.wordpress.com joylaxpower

    Great post once again John. Keep up the good work. Sometimes I ask myself where I would be today if I started learning how to program in high school!!

  • http://www.facebook.com/phillip.mckeen Phillip McKeen

    I’d throw on this list of things everyone should learn, even if they don’t do it professionally:
    Vehicle maintenance

    It’s amazing how many critical skills fall on the way-side. Basic programming skills have a number of meta elements… logic and reasoning, input/output, resource management… write your congressman!

  • http://noveltheory.com James Curran

    Similarly, I’ve always said that everyone should know how to change the oil in their car — just so the appreciate that they’re getting their money’s worth when then bring it into the shop to be done.

    Funny you cite “send an email to your boss” as an example of something everyone can do by themselves, as if we changed that to “send a (typed, paper) memo to your boss”, not that many years ago, that was something that required a specialist to do. (we used to call them secretaries)

  • Pingback: links of the day | Talipkorkmaz's Blog()

  • David

    “If a person can grasp and use a complex language, such as English, that person can learn how to program.

    Programming is much more simple than any spoken or written language.”

    This quote has been revisited several times in my mind over the course of the past few weeks. Sometimes it seems programming is too complicated. I desire to understand more about how learning a programming language is easier than learning a language like say English? I bounce all over the editor trying to find the sequence flow from class to method to variable attempting to understand what is going on.

    • http://arne-mertz.de/ Arne Mertz

      The difference lies in the ages at which you learned English and programming. If you learn a foreign language as an adult it takesn about as much time to master it as learning how to program. Kids learn nmuch much faster. Mastering the correct syntax and vocabulary of a spoken language is much harder than the very limited syntax and the libraries of a programming language. The only thing that is not so easy about programming is that people will understand you when you don’t speak the foreign language fluently, a compiler won’t.

  • http://twitter.com/CoderCamps Coder Camps

    I think people of all ages should learn to code. My 6 year old sits with me and draws pictures that I animate in little games. He’s getting into the whole process at a level he can understand. For adults, our classes at http://www.codercamps.com can get them coding in about 9 weeks. This is changing the way we think about college and how people learn a new career in a positive way because it no longer takes 4 years and $50k to learn.

  • Pingback: Kamu Cocok Masuk Teknik Informatika Jika… | Kamu Itu Beda()

  • Pingback: Boas dicas para ser um bom programador | Ela é tech!()

  • Pingback: Getting Past the ‘to Code or Not to Code’ Question | My Web Marketing Planner Blog()

  • Pingback: Getting Past the ‘to Code or Not to Code’ Question | Enjoying The Moment()

  • Pingback: Getting Beyond the ‘to Code or otherwise to Code’ Question - Edomain()

  • Pingback: Getting Beyond the ‘to Code or otherwise to Code’ Question - Edomain()

  • Pingback: Getting Past the ‘to Code or Not to Code’ Question()

  • Pingback: Everyone Should Learn To Program, But Not Everyone Should Be A Programmer | Geekness in Words()

  • Pingback: Tiny robots | BrookeLyneNewyork()

  • Pingback: The hunchback programmer | unusualapathy()

  • Pingback: KAMU COCOK MASUK TEKNIK INFORMATIKA, Jika .. | RockStar★()

  • Dale Vivian Ross

    Learning how to code also helps with algorithmic thinking. Not everyone will be building apps (although it’s starting to look that way). However, with the skills obtained from learning A language, the next time Johnny B has a task, instead of calling Sonny M the coder who will gripe about this menial task that’s beneath him, Johnny could see the path and know how to at least Google a solution.

  • Pingback: Kuliah yang paling cocok untuk anak smk jurusan RPL | gudangilmugratiss()