a companion discussion area for blog.codinghorror.com

Please Don't Learn to Code


Coding is just another way of making things.

We don’t have time to learn how to make everything we use.

Personally, I’d rather knit -
Its social and relaxing. You learn arithmetic and concentration. You solve puzzles or set them for other people. At the end you understand how clothes are made and have something to keep you warm.

Coding has similar claims made for its benefits, but it seems pretty dull in comparison. Fine for a job, but no way to spend your spare time - unless you particularly like maintaining websites.


I fully disagree with your post and I agree with the “everyone should learn to code” idea.

It do not think that more code in the world is desirable, neither that coding is the goal, neither do I put the method before the problem.
In fact I disagree with all you said.

The fact is that people spend more and more time in front of computer.

Some of their tasks can be automated. Many people write small Excell macros. This is a first step in programming. Learning how to program in Excell is very rewarding.

Some other tasks could benefit from a tool that do not exist “on the shell”.

For example, at my work, we have some analyst guy who perform statistics on flight trajectories. He was lacking smart visualisation of the input data. He has learned how to generate a kmz file for google earth and has developped his little conversion program. He has probably spend 10 times more than a real developper to program it, but taking into account all the time needed to ask a developper to do it, the time loss is very small. And now, he can easily maintain and improve his program when the data change.

“everyone should learn to code” does not mean that everyone must become a fulltime developper. It is more similar to cooking: “everybody should be able to cook his own food”. This does not mean that we should never go to the restaurant or that we should become as good as a chef. This means that we have the freedom to eat without going to the restaurant and without buying junk food.

“everyone should learn to code” is the same as everybody should learn how to change a light bulb, how to use the washing machine, how to iron your clothes, how to cook, …

Even if none of these things is your job, you generally knows a minimum to be independant. It is the same for coding.


Not a very popular post it seems. But not many plumbers on here defending their right to learn to code.


Code? Of course not.

I don’t have to be able to code to communicate what I want or need. I can examine the results of what someone else codes for me a tell them whether it is ‘good’ or not if I can think rationally and communicate competently.

In my experience we would all be far better off by developing four fundamental skills

  1. Think logically, rationally - the ability to assemble alternative conclusions from the pieces of information presented
  2. Communicate competently - the ability to transfer understanding of the information or idea
  3. Listen competently - the ability to extract useful information delivered verbally
  4. Read critically - the ability to extract useful information delivered in written form

If only we could all do these four things…


Ultimately, we need to arm ourselves to fight Skynet!


I don’t think that anyone who says “everyone should learn to code” actually thinks that everyone should apply computer programming in his daily life and jobs. I always thought that the spirit behind this movement was to encourage the ability of dissecting and solving complex problems.

Once again, knowing how to code does not imply “more code in the world”. It’s a ability that one might not exercise everyday, however going through it at least once in your life contributes to your intellectual development. My mother was a teacher during the 80’s and she taught LOGO to her students because of this reason. In those times there was a strong line of thought that believed it was very valuable for children to learn how to solve problems by enumerating the required steps and making decisions based on data. Unfortunately I can’t provide you the literature (it was almost 30 years ago!)

You seem to have a very utilitarian point of view. It gives me the impression that you think that if something does not directly contributes to your work then it is useless. I agree with you, however, in that people should not think that they will learn software development from scratch in two weeks and then they’ll be getting fat paychecks. The “fat paycheck think”, by the way, it’s far from being something real in my country, however we still have programmers because many of us actually enjoy doing it.


The logic is that a lot of work consists of one-off data processing. The sort of stuff that Linux users tend to use awk, grep, sed, and miscellaneous bash one-liners for. Modern office software is generally fairly good at automating common, basic tasks, but anything more specific needs a more technical approach. Just knowing how to use regular expressions would make a lot of tasks much easier.

So it’s not so much “everyone should be able to program at a professional level” as “everyone should be able to perform basic tasks on Linux”, though without the OS-specific focus.


Not picking sides in the main fight here, just wanted to say though: real plumbing is hard work both physically and mentally, we should not be ashamed to compare it to programming.


I think you make a fair point about what has been a pretty over-hyped initiative.

As a non-coder, I’ve found it exciting to give some of this stuff a go and tinker around with a bit of javascript and html. I wanted to learn rails and a few people recommended good resources for me to use but I pretty much got stuck at gem install. Some ground knowledge is usually assumed by even the most basic explanations. Even at the humble age of 27, I’m coming to accept that maybe I’m just not willing to invest the time required to learn to code properly and I’m happy to leave it to the experts.

I want to learn to code for two reasons. One of these, which you and other commenters have dwelled on, is so that I can understand how it all fits together. I work with developers so I have a better understanding than many but I still feel I don’t know some of the basics. I want to be informed about the choices we make to solve certain problems. I’d also like to know when I should defer to people with more knowledge, and when they might be bullshitting me.

The second reason I want to learn to code is so that I can create prototypes and hack things together to test out ideas, without having to rely on other people.

I’ve found it difficult to find good resources for picking up this high level knowledge. It seems like often the only way in is just to get stuck in and start learning how to do it from scratch, however long that may take.

So, since you recognise that some knowledge and understanding of what code is and what it means to the world is important, what resources would you recommend for acquiring it?


I’m doing the CodeYear thing, but I don’t want to work as programmer.

I want to work with programmers, though, and I already do. I work for a publisher, which these days means that everything is online. I run a community site there, and I got that job because I already knew “about the internet”. I’m not at all a programmer. I write words rather than code. But to my coworkers, I’m the “tech person”, because I know how to talk to the freelance coders that we do hire, and what goes where on the site, and why we can change some things but not others. I’m not afraid to look at source code.

In my previous job, I was a biochemist, working with lots of people who had never taken a programming course in their life. I took C in undergrad, and a super-basic intro to Bioinformatics in grad school, and those meager credentials alone were enough to be asked to help with a project where biochemists (in the lab) and bioinformaticians (at the computer) had to collaborate.

Most non-programmers avoid even thinking about coding, and have no grasp at all of what you can ask a programmer to do.

If anything, it’s my kind of job(s) that CodeYear participants are after, not programming jobs. They’re not going to be coders, but they’ll understand coding, and they’ll be able to work on projects where programmers are a relatively new, or even temporary, addition to the workforce. They’ll be able to think of things in a new way, and actually provide opportunities for coders, by spotting things in their workplace that could be improved through programming. They won’t be able to do it themselves, but they can hire someone.

To my understanding, that’s been the goal of projects like CodeYear: To give non-programmers an insight into things that can be done, and to better understand how things work. In other words, to explain how a toilet works, without providing a complete plumber certification course.


So, to summarize, I agree with this sentence: “I suppose I can support learning a tiny bit about programming just so you can recognize what code is, and when code might be an appropriate way to approach a problem you have.”

…I just don’t think you realize that there are so many well-educated people in non-programming fields who can’t judge when code is an appropriate way to approach a problem. It’s really not as obvious to many people, and even a tiny bit of exposure helps!


Jeannette Wing put this “whats behind ‘coding’ and why should we teach it”-topic nicely in her article “Computational thinking” over here: http://www.cs.cmu.edu/afs/cs/usr/wing/www/publications/​Wing06.pdf


I’ve said for years now that programmers, like many other occupations, are problem solvers. We just tend to solve problems with code.

We’re not going to solve world hunger that way. But I’d be willing to bet any veteran developer at least has an idea or two how to attack that problem as well.

and if you haven’t ever solved a problem by not writing any code, you’re probably not a very good developer either :wink:


I have only one word to justify for everyone to learn to code: "Analytical Thinking"
Ok, that’s two words! You see? You’re already learning…


How about just learning to “Think like a coder”. The mayor of NYC’s time probably isn’t best spent hacking away on some Ruby code at 3AM. But, thinking like a coder ( e.g. What parts of my job can be automated, what checks do I need to have to make sure one of my decisions doesn’t have unintended consequences, or better yet… assume that unattended consequences are going to happen and try to build policy to contain any bad stuff ).


I worked for Bloomberg LP years ago, and had direct contact with Mike Bloomberg on multiple projects. I once took over his desktop with him watching as I installed a demo IM app we created. He sat at my desk while my team demoed multiple new initiatives, and he even poked his head in one time when we were talking to a new DB vendor, and he even asked some performance/scalability questions.

He may be mayor of NYC, but he did start a really big tech company, and for the first few years, he knew every single employee, including the developers, and he followed every single tech initiative very closely. He was always interested in bleeding edge technology. I definitely had my differences with him on multiple occasions, and my opinion of him as NYC mayor (as a resident of NYC) is mixed, but the one thing I can say is that he is tech savvy.

If there is one mayor in the US who doesn’t have a CS degree but could learn to program, it would be him.

I hate to say it, but you picked the wrong person to be poster child for a non-techy getting too close to the tech fire.


We’re all aware that Bloomberg is a billionaire who made his fortune by becoming the #1 financial information provider in the world, provided through technology (terminals, APIs, etc.). Just sayin…


Personally I think the everyone would benefit from knowing a little bit of plumbing.

Seriously. Learn about how a toilet works. You use one every day! http://home.howstuffworks.com/toilet.htm


We should be teaching the basics of logical thinking before diving too deeply into creating a website.

After all, we’ve been following this pattern pretty well, as the vast majority of Computer Science degrees teach logical thinking, maths, proofs, all kinds of things that aren’t actually code. If that wasn’t recognised as a valuable prerequisite, we would have given up on the CS degree by now.

Please see my blog post here, which discusses whether sites like Codecademy and Stack Overflow are undermining the real craft of coding: http://www.codingkiwi.com/1/post/2012/05/are-we-teaching-people-what-code-is-but-not-how-to-use-it.html


Interesting points in the article, most of it makes sense. OTOH, what if we think of computer languages like human languages, in many high schools in the US, students are required to take something like two years of foreign language instruction, what if we treated computer languages like that?

Much of what you’re saying applies to learning a foreign language, how many people actually make use of their year or two of high school French? But at the same time, if you took Spanish in the US, you might’ve had opportunity and motive to continue with it; you might’ve found the need to speak Spanish, even if that need wasn’t there at first.
I think this analogizes to computer languages too, you’d need to have a basic background in order to be ready /if/ the need arises. If you lived in India and took Russian, or in the US and took Latin, that need might never arise, but some in the former will happen to take English and some in the latter will happen to take Spanish, and they’re better off and their society too is probably better off because they did.

Of course, realistically, it would probably be more beneficial for every computer class to be swapped with Spanish anyway!

Flipping things around a bit, many high schools offer classes on things like “MS Excel” and the like. What if those classes were replaced with “Python” or “C++” or something? Why use excel to manage tables when programming can do that?