Please Don't Learn To Code

For a while now, we've heard how anyone who doesn't know how to code will be resigned to a life of servitude in the technological underclass. Writer, developer and Stack Overflow kingpin Jeff Atwood disagrees...

The whole "everyone should learn programming" meme has gotten so out of control that the mayor of New York City actually vowed to learn to code in 2012.

A noble gesture to garner the NYC tech community vote, for sure, but if the mayor of New York City actually needs to sling JavaScript code to do his job, something is deeply, horribly, terribly wrong with politics in the state of New York. Even if Mr Bloomberg did "learn to code", with apologies to Adam Vandenberg, I expect we'd end up with this:


Fortunately, the odds of this technological flight of fancy happening — even in jest — are zero, and for good reason: the mayor of New York City will hopefully spend his time doing the job taxpayers paid him to do instead. According to the Office of the Mayor home page, that means working on absenteeism programs for schools, public transit improvements, the 2013 city budget, and… do I really need to go on?

To those who argue programming is an essential skill we should be teaching our children, right up there with reading, writing and arithmetic: can you explain to me how Michael Bloomberg would be better at his day to day job of leading the largest city in the USA if he woke up one morning as a crack Java coder? It is obvious to me how being a skilled reader, a skilled writer and at least high school level maths are fundamental to performing the job of a politician. Or at any job, for that matter. But understanding variables and functions, pointers and recursion? I can't see it.

Look, I love programming. I also believe programming is important… in the right context, for some people. But so are a lot of skills. I would no more urge everyone to learn programming than I would urge everyone to learn plumbing. That'd be ridiculous, right?

The "everyone should learn to code" movement isn't just wrong because it falsely equates coding with essential life skills like reading, writing and maths. I wish. It is wrong in so many other ways.

  • It assumes that more code in the world is an inherently desirable thing. In my 30-year career as a programmer, I have found this … not to be the case. Should you learn to write code? No, I can't get behind that. You should be learning to write as little code as possible. Ideally none.
  • It assumes that coding is the goal. Software developers tend to be software addicts who think their job is to write code. But it's not. Their job is to solve problems. Don't celebrate the creation of code, celebrate the creation of solutions. We have way too many coders addicted to doing just one more line of code already.
  • It puts the method before the problem. Before you go rushing out to learn to code, figure out what your problem actually is. Do you even have a problem? Can you explain it to others in a way they can understand? Have you researched the problem, and its possible solutions, deeply? Does coding solve that problem? Are you sure?
  • It assumes that adding naive, novice, not-even-sure-they-like-this-whole-programming-thing coders to the workforce is a net positive for the world. I guess that's true if you consider that one bad programmer can easily create two new jobs a year. And for that matter, most people who already call themselves programmers can't even code, so please pardon my scepticism of the sentiment that "everyone can learn to code".
  • It implies that there's a thin, easily permeable membrane between learning to program and getting paid to program professionally. Just look at these new programmers who got offered jobs at an average salary of $79,000/year after attending a mere two-and-a-half month bootcamp! Maybe you too can teach yourself Perl in 24 hours! While I love that programming is an egalitarian field where degrees and certifications are irrelevant in the face of experience, you still gotta put in your 10,000 hours like the rest of us.

I suppose I can support learning a tiny bit about programming just so you can recognise what code is, and when code might be an appropriate way to approach a problem you have. But I can also recognise plumbing problems when I see them without any particular training in the area. The general populace (and its political leadership) could probably benefit most of all from a basic understanding of how computers, and the internet, work. Being able to get around on the internet is becoming a basic life skill, and we should be worried about fixing that first and most of all, before we start jumping all the way into code.

Please don't advocate learning to code just for the sake of learning how to code. Or worse, because of the fat pay cheques. Instead, I humbly suggest that we spend our time learning how to …

• Research voraciously, and understand how the things around us work at a basic level. • Communicate effectively with other human beings.

These are skills that extend far beyond mere coding and will help you in every aspect of your life.

Coding Horror is operated by Jeff Atwood, of Stack Overflow fame. It's his personal repository of interesting bits of information acculumated while keeping up with software development.

Image: Vladimir Mucibabic/ShutterStock



    Obviously CEOs and Mayors, etc won't benefit from knowing how to code. But not everyone is the CEO of a large company, and no one starts off as the CEO at a large company - they have to work their way up. And in working their way up, they will probably encounter a task in which programming is useful, even if it is only to write a macro in Excel. Hence, (in my opinion) the argument that all children should be taught programming is quite valid, especially in a world where the reliance on technology is increasing substantially.

      Coding is a form of planning: you give a computer a plan made of instructions, and it carries it out exactly as specified. While coding itself might not be vital, I think CEOs and mayors absolutely must know how to compose a plan made from instructions. Whether the executor is computer or human is a design decision - which will perform the instructions "best" (most efficiently / effectively / intelligently). What I don't understand is why plan authors box themselves into either the "coder" or "manager" role, when the two are just different applications of the same underlying skillset.

        What Martyfmelb said is exactly what I was going to say.
        Coding is instructions, managers &mayors should know how to break problem solutions down into instructions.

    agreed. while i advocate learning what it is and waht it looks like there is nothing that mandates a wintel or network person. i WOULD advocate that windows techs lean powershell scripts. hardly real coding but with a lot of the same advantages for noobs.

    How is expecting people to learn to code any different an analogy from expecting everyone to become a master chef, a master builder, a professional engineer or architect? I could make a statement saying everyone should learn how to cast metal, that doesn't make it instantly relevant.
    Making broad sweeping statements like that is utterly retarded. Hell, 99% of people would probably benefit from learning DIY and home gardening, but that doesn't necessarily make it relevant. Some people wish to be 100% consumers, which I have no problem with.
    I'm fairly happily self-taught with excel, a touch of SQL, and a bit of Access. Love mucking around with Crystal Reports, but I hated Java etc, yet I spend >30 hours a week with Arma2 as well, which involves a fair bit of coding deeper down too if you really wish to get into it.

      Remove the Master (which nobody is suggesting) and all your examples are perfectly reasonable..

      Everyone should be able to cook a basic meal.
      Everyone should be able to cut two bits of wood and nail them together.
      Everyone should have a basic understanding of engineering and the physics behind it.
      Everyone should understand roughly how and plant grows, and maybe plant one in a pot..

      Nobody is suggesting everyone should become proficient to a professional employable level, but a basic understanding is essential.

      Comparisons to basic literacy are fair, to not understand code at all is to be frozen out of much of how the world works now.

    Yes every one should learn to write buggy memory hogging code, that surely will make the world better. Almost any one can learn to write simple programmes, but to write programmes well is another thing.

    I signed up for code academy's 'code year' course and I am loving it, I use my new coding skills every day at work now.
    I have stopped bugging the programming team for what feels like 50% of the things I need done. Hopefully by the end of the year I will not need to bug them at all!

    More half skilled coders means another 100,000 fart apps in the app store?

    Agree about the solutions part. I'm an engineer. I learned to code in order to be able to build and run models of my designs in order to be a better engineer, not to code for the sake of it.

    If you have management and communication skills (something that a lot of coders severely lack), then you can make some top dollar, more-so than any coder, so why waste your time. The guys I work with have spent a lot of time learning code and gaining grey hairs while still earning less than me and being older than me, so what's the point?

    I've done one semester of learning MATLAB's basic functions, and that's been enough to teach me the basics of coding to help me through day to day life (engineering student though). I think it's good knowledge in terms of understanding how computers work in general, but no, not essential at all for most people. Besides, as said earlier, it's basically developing the ability to write logical instructions to achieve a task. Everyone should learn to do this effectively to excel, and there are other ways to learn it than coding.

    Teach everyone good problem solving skills both at school and in the workplace, and you'll improve everyone's competency in everything!

    Ok... Thats fine, but can you explain to me how a programmer would really benefit that much from reading, writing and arithmetic? And therefore, why would he/she need to learn that?

    I've recently read something similar here - . But I just didn't get the answer in non of the articles to the question why I shouldn't learn how to code.

Join the discussion!