a companion discussion area for blog.codinghorror.com

Please Don't Learn to Code


How do you define coding? Making a table in HTML? Writing a Macro in Excel? Doing a little PHP or C++?

I’m not really sure it matters how you define it though; while knowing how to code may only be useful once in a blue moon, but when it is, it’s worth it. How often do you use Algebra in every-day life? I certainly rarely need it other than when I am programming. However, having it as a tool in my arsenal of capabilities when I do need it means I can solve problems that I couldn’t otherwise.

Basically, I’m of the opinion that you should never discourage someone from learning.


@macmnc said it best above:

Programming is a very inefficient method of learning how computers work, or learning how problem solving works. Knowing how to write FizzBuzz won’t help you understand why streaming is taking up bandwidth.

Also, the analogy is not between programming and plumbing, but probably programming and electrical engineering. Shouldn’t all of use coders learn how circuit boards works and gates and transistors and all that shiny stuff on the motherboard? Wouldn’t knowing all of those things help us write better code?

The answer is that it would help marginally and there are far better ways we could devote ourselves to become better coders; much in the same way that normal people would better their own computer literacy through other means than coding.

One final point: Jeff is not dissuading people who want to learn coding for a hobby or out of interest; he’s attacking the notion that coding is a necessary skill that everybody needs to learn.


Try to take a longer view of the situation.

As human communication evolved from grunts to spoken and written language, there were most likely many stages of necessity along the way. It went from not necessary at all, to not necessary but beneficial, to absolutely necessary, with many stages in between.

This process never stops. At some point in the future, it will be not only necessary but commonplace to know how to speak and write logic in order to keep up with a society that is increasingly infused with and reliant on technology. It is inevitable that “programming” will become less and less of a specialty and more just “what people do” without thinking too much about it.

There’s no need to worry about your office day job, though. You and I will most likely be long dead before this happens, just as scribes from thousands of years ago aren’t bummed that there are no jobs on CareerBuilder where the only skill requirement is being able to write down words on paper.

So, in summary, as Reed Richards said, "Don’t be a dick."
You should help to lead your neighbor, and should feel honored that you are at the forefront of something so much bigger than yourself. You could have just as easily been born in a place in the world where there is no written language.


Not everyone should learn to code. I think it works out okay the way it is now; people that are actually interested in coding and want to do something useful with it will because they love it. People that do it because they think that it’s going to be a good career choice will do it and fail or work at mundane places where they can patch monolithic applications day in and day out. The ones that don’t care will be lawyers or some other parasite.


I’ve taken the evening off to play Diablo 3. I’ve come back to re-read this post and the associated responses. (Including the “discussion” on Twitter; if you can even call it that.)

I have to say the criticisms of Jeff’s post seem a bit undeserved. - Yet I can understand where they’re coming from.

Jeff, I feel like you didn’t make it clear enough that you are not dissuading hobbyists from learning to program. This, I feel, invited the opportunity for attack.
In a way, the title you’ve chosen and the visual aid you’ve chosen have invited an attack on an otherwise sound and constructive post.

However, I still think I agree with the fundamentals of your post. People shouldn’t learn to code because of the money. Learning to do anything because it commands a high salary is simply the wrong motivation.

Also, programming is not a fundamental life skill. At least not right now.
In fact, I posit that if we as developers and designers do our jobs properly, we should need less programmers.

If you make increasingly better cars, you need fewer mechanics to keep them all running, no? Programming should be the same. If we create better pieces of software, it should take fewer people to keep the whole charade running.

@Brad Rembielak
Y’know, as the son of an electrical engineer, I’ve only just started learning about circuits and logic gates of my own accord. (http://www.amazon.com/gp/product/0262640686/ref=oh_details_o00_s00_i00)

So your post hit especially close to home.

Clearly it wasn’t required knowledge, but it is certainly nice to know, and it makes things conceptually easier. I have to admit that I’m somewhat glad that my dad never said “you need to learn how circuits work! It is a fundamental life skill!”


Totally agree with you Jeff. Started “writing code” at 15 in high school in C and BASIC. Now a sophomore in college and working at a tech company and its not until working on a huge codebase you start to realise the less code the better.


I am not a professional programmer, but I am a professional educator who knows how to program. I think that there are good arguments to be made for treating programming as a basic skill, to be incorporated in most higher-education systems. A few good reasons (inspired by this post) can be found here: http://fixingpsychology.blogspot.com/2012/05/is-computer-programing-important-part.html


I agree with your article. There is a difference between being able to write code and being able to design and develop software. And learning a specific language will not help a layman when looking at another language.

What makes sense, is to teach people logic and some standard algorithms and patterns. It would be great if the non-professional understood how programming works. When I was in college I took a course in computer logic. It was language agnostic and it involved creating algorithms to solve specific problems.


I totally cracked up reading this. Back in 80s and 90s, before programming became more specialized I wrote a lot of bad code, meaning it took me 20 lines of code to accomplish what a talented programmer could do in 1. These days people who provide graphic design elements to things like websites and animations do not necessarily have to code. There is greater division of labor.


I have nothing else to add except: THANK YOU! Sick & tired of hypes and memes like this that minimize the role of those who don’t program, taking them away from what they may do very well to do something else very badly, and of those who do program, making them look insignificant and nothing more than monkeys who learned a basic skill.


This completely misses the point in multiple ways. Teaching everyone to code does not mean that everybody becomes an expert. It means that everyone is introduced to coding at a young age so more kids can become masters earlier if they want to (especially women and minorities who don’t get exposed to it as much). It means that people who interact with technology every day (the vast majority of us) can understand a little more of what we’re dealing with and be able to control more of how we want things to work (making up scripts and the like). It means being able to do coding projects for your job which will gradually take over most professions. If you think plumbers won’t need any programming skills? You’ve lost your mind. Eventually toilets, pipes and the like will all be controlled by computers and code that will solve most plumbing issues. The earlier more people learn to code, the better they can be later down the line as more and more computer knowledge becomes necessary for the world. When people say, learn to code they ARE talking about solving problems with coding.

Also your implication that to get a job in programming you need to be an expert ie 10,000 hours is completely basis. That takes 5-10 YEARS! Most people don’t get programming jobs or any job in their field that requires that much experience or else that’d be a whole lot of interns working for 5-10 years to get that experience. Ironically that supports people learning to code young so they can get those 10,000 hours of experience and get a great job out of high school/college.


Whether or not Mike Bloomberg learns to code, I can guarantee you that something is indeed deeply, horribly, terribly wrong with politics in the state of New York. But that’s nothing new, and we’re kind of used to it by now.

As for the article itself, I wholeheartedly agree with you. I have no intention of ever learning plumbing, because my time is better applied to other pursuits, and I can pay someone to do it for me. And most users shouldn’t need to learn programming, they should find software that does what they want, or pay a professional to create it for them.


Sure, coding is a way to improve logic skills, but it’s not the only way. People commenting act as if coding is the only path to thinking logically. Coders think you need to code to be smart. Go figure.

But if Bloomberg does code more, maybe he would spend less time ensuring that we don’t feed homeless people without permission.

But then again, he would probably start to micromanage the way every New Yorker codes, so it’s a tradeoff.


I think there is something fundamentally wrong within the software development community which results in this kind of misconceived, elitist opinions.

@Jeff have you ever tried to learn to play an instrument ? …if you can already play, have you tried for instance learning to play Jazz …or have you ever tried to draw ? …or sing ? …or dance ? …or cook ? …all of these are hobbies that require a lot of effort to become even reasonably good at. The professionals in these fields tho’ /actively/ encourage everyone to participate in the fun ! What’s wrong with software professionals ?

Encouraging people to code for the joy of it is what ‘learning to code’ movement is about – it is about encouraging people to appreciate the ‘art’ of coding as much as we coders appreciate it.

It isn’t too far back in the past[1] that people from all walks of life were tinkering with this new kind of thought called science – everyone from potters to painters, from farmhands to aristocrats were learning science. I imagine, there existed then too, a few elitist scientists, who like you, saw this as something bad …for science, for progress …for whatever. However, fortunately science and scientific thought turned out to be as much ‘fun’ then, as programming is today and the average kid out there asking their parents about the sun and the moon and why ships float and planes fly can get a reasonably correct (if not completely scientifically sound) answer.

If you thing this is a bad thing – then you are consistent in your views. If not, your just hypocritical and elitist about software.

To end, as someone who has visited your blog plenty of times, I am surprised (and disappointed, tbh) that you hold this opinion …tho’ you do seem like a reasonable man who’d change his stance after a bit of thought – I encourage you to think :wink:

[1] http://http://en.wikipedia.org/wiki/Industrial_Revolution


“This completely misses the point in multiple ways. Teaching everyone to code does not mean that everybody becomes an expert. It means that everyone is introduced to coding at a young age so more kids can become masters earlier if they want to”

It’s not that I’m completely opposed to this idea, but this borders on the now-popular idea of “teach every kid everything as soon as possible so they will be super smart”.

"If you think plumbers won’t need any programming skills? You’ve lost your mind. Eventually toilets, pipes and the like will all be controlled by computers and code that will solve most plumbing issues."
Most occupations now involve interacting with the computer in some way, but I don’t think most of those occupations require programming knowledge. I imagine most plumbers will use the software without knowing the internals.


I have mixed feelings about “Learn to Code” and #codeyear.

On the one hand, I hate that for years the “suits” have lectured technologists and scientists to understand business and to adopt business speak. So it’s nice now that the onus to understand is reversed a little. It has to be good for managers to have an appreciation of coding.

On the other hand, a great deal of the “Software Crisis” can be blamed on programmers themselves not really understanding what they’re doing! For a couple of decades, we in software have tended to differentiate “software engineering” and yet we are still a long long way from professionalising what is more craft than engineering.

Code is so very unlike the stuff of other professions – soil and gravel, metals and alloys, nuts and bolts, electronics, even human flesh and blood - that the engineering analogy is misleading. By simply coopting the term I fear we have underestimated the fundamental challenge of forging a software profession. It won’t be until software engineering develops the normative tools and standards, culture and patience of conventional engineering that the software crisis will turn around.

Meanwhile, teaching managers to knock up code could give them entirely the wrong impression. Coding should not be so easy.

More at http://lockstep.com.au/blog/software-engineering.html


“Talk with other programmers; read other programs. This is more important than any book or training course.”

Quite right. But for all the resources available, it’s impossible to find a good program to read. A class here. A function there. All interesting. But nothing with a clearly stated problem to be solved much less the solution provided that was good.

Programmers are a secretive lot, by nature. They/we write in code, just for starters. For finishers there’s not much to be found.

Problems solved by code are rare if they exist. And what’s the measure of a successful solution? Was it what was good today? Was it answering the question as asked (rather than the question meant)? Was it what got the money, whether it was good or not? Was it the solution that solved the long-term problem the programmer-analyst solved that no-one else knew, nor cared about.

Friends are calling. I’m running on 8,700 hours towards hitting the mark. Should I answer? I did not. But so what?

Shortcuts to finesse the details; who wants to pay for that? They stand more to gain by proving how hard it is. They don’t know what it’s good for. Better, in a world with 7 billion people, everything falls apart.


"But understanding variables and functions, pointers and recursion? I can’t see it. "

So learning functions in High School (functions), and the how to find the greatest common divisor (recursive) is pointless? Hell, to solve a word problem you create an equation which abstracts away the instances in the question with a variable.

But you claim that learning arithmetic is fair enough. Should kids stop math after long divison?


This is really just programmers thinking their skills are indispensable. It’s absolutely fine to have pride in your skills but always remember, if this was a plumbing website we’d be saying exactly the same things about plumbing.


Yes, we should be celebrating solving problems not coding.

Yes, there has been an overwhelming push for bringing CS to more people, but people can choose to do what they want with it. I would rather have access to it than not. CS for the last 30 years or so is like science before the Renaissance, only a few knew how to do it and the instructions were cryptic.

You say something is wrong if a Mayor needs coding to do his job. I’d actually prefer my elected officials to know how to parse and analyze data thank you very much. Plus, saying we shouldn’t teach everyone to code because not everyone’s job requires it, would be like 150 years ago saying we don’t need to teach literacy because only a few people need to read for their jobs.