a companion discussion area for blog.codinghorror.com

Please Don't Learn to Code


Hm. What I think: People learning to code MIGHT help them to think correctly. Basically, people should learn how to design programs, rather than the syntax of some language or other. They should also be taught to apply the necessary analysis and design skills to other areas.

I’m not explaining this very well.


As both a plumber and programmer, I’d be happy to see more people learning both. I’m a little tired of hearing ‘Why does the [non-descriptive noun] do this [vague and unhelpful verb] when I tap the [unrelated object described using a made-up word]’.


The question shouldn’t be: “Do or don’t code”, but how much.

Teaching secondary students bound to study English Lit in college, a month of text processing skills, could help them find that reference they need.

There is some efficient intersection for everyone between the time / opportunity costs of learning to operate a computer better and the PV[benefits] of that degree of knowledge.


This post with its muddled arguments really does feel like a “jump the shark moment”, and it’s left me with a strong urge to finally unsubscribe. How about making a distinction between programming professionally and as a hobby? How about not creating a false dilemma between learning to program and doing other important things? Bloomberg can both be mayor and learn to code beyond the stupid GOTO example. How about not making posts titled "Please Don’t Learn ", especially if the “whatever” is an increasingly important and accessible topic, and especially if there exists a marked lack of learning habits in society? How about not using bad analogies, like between plumbing and programming? Maybe your logic isn’t that sound if you need to use comparisons to significantly dissimilar things to make it compelling. Just ugh!


All activities that make one think help with other activities that require thinking.

Some people study languages for fun, just to keep their brains busy. Others paint or learn to play a musical instrument. Learning to code is not only a fun hobby (for those who like it) but it also trains the brain and can be useful.

Not everyone who learns French needs to become an interpreter. Not everyone who attends pottery class will try a career in the tableware industry. So why shouldn’t people learn to code without it being part of a career as a programmer?


I feel that this was a pretty douchy post. If he wants a new hobby, why the hell not? It’s not like he’s a mayor 100% of his time awake.


People should learn what they want to learn, for any reason (yes, even hyped marketing campaigns), with only a few exceptions related to wackos learning how to make and use weapons, mostly.

Now, I agree that as professionals the focus shouldn’t be on (just) programming and that research and communication skills are more important in general than programming skills. This is irrelevant to the point. Unless you are planning to design a course that most people could follow on those topics.


Although it’s already been said I will say it again. You are wrong. Not everyone needs to be be a software engineer. Your plumbing example is a good one to illustrate. If your drain is clogged and drain cleaner doesn’t work you could call a plumber. You could also use plunger or plumbers snake. Most people won’t however because they think it’s scary.

As for the Mayor, this guy is making decisions with respect to technology. How is it not a good thing for him to at least have a basic understanding on how it works.


I broadly disagree, although I see where you are coming from. The reason is that I’ve found coding useful in every non-coding job I’ve had where I have sat in front of a computer in an office…

Office jobs, and general running of any business can be improved with knowledge of code - as well as code itself imo. The understanding of how to define procedures explicitly is great - although humans are error prone I’ve worked with enough broken procedures to know that the vast amount of errors I seem to encounter when dealing with… everyone, could be reduced with some good practice.


That mayor should learn how to use Linux, and then implement in all public departments and schools. With that approach, he not only will save millions and millions of dollars in software licenses, he also will give a job to a lot of independent developers (not only to Microsoft) to implement great features to GNU software that will be available to all the community.


Judge Asup, of Oracle vs. Google, learnt Java for this case and the result seems to be great: http://news.ycombinator.com/item?id=3979899
"But Judge Alsup wasn’t convinced. He told the court he had learned to code in Java for the trial — implying that he knew other languages as well — and he said that he had written some of the infringing code at least a hundred times since Oracle filed its suit in August 2010."


This is a great post, and makes a great point. But I think it also misses the point of the “everyone should learn to code” meme, which would more appropriately be named “everyone should learn computational thinking”, as my friend Roger Magoulas notes.

I don’t think that the comparison to plumbing is apt. The comparison to literacy or numeracy or perhaps even public speaking is closer. Not everyone is a professional writer, but being a good written communicator has great impact on everything else you can do.

I’m thinking right now of two people I know in a small company, one in marketing and one in administration. Neither of them is a professional coder, but one of them knows enough to do tasks that are completely beyond the comprehension of the other. And that literally makes the first person 10x more capable.

And I remember early days in my publishing company, wishing that my production editors would learn more coding skills because it would have allowed them to recognize which problems were amenable to algorithmic solutions that they were currently solving by brute force.

And as to plumbing, I have to say that there’s something to that too. Enough experience with any hands-on skill to know how to solve common problems is essential. You say that you know enough plumbing to recognize a problem. Well, a lot of people don’t.

E.M. Forster wrote about the endgame of this kind of ignorance in “The Machine Stops.” It isn’t pretty.


“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?”

Well… one way to find out is to try to code it…

Or in other words, the questions that you are asking are the ones that are naturally asked - by a programmer.


Maybe he’s learning to code so he can figure out why his voting machines are overheating? http://www.itworld.com/security/276580/overheated-vote-counter-automates-election-places-60k-votes-itself


I think maybe you are taking this a little personally, many, many people learn a small piece of other peoples trade.

I fitted my own kitchen, does not make me a kitchen fitter.
I fitted a new bathroom, did the plumbing and all, doesn’t make me a plumber.
I wired up my oven from the junction box, doesn’t make me an electrician.

I did all those things for 2 reasons, to save money and to achieve something, the other reason which I didn’t find out until the end was to appreciate how hard those trades are, it’s the same for programming.

Everyone will give programming a go, they’ll do their own website and maybe write a little desktop app, doesn’t mean they will, or intend to, become full-time programmers, or certainly to enhance their existing careers.

It’s cool to code these days, just like it’s cool for husbands to take on DIY :slight_smile:


It’s not the power of code, it’s the creativity of solving meaningful problems through the code. The benefit of a car isn’t a faster horse, it’s what it spurred as result. Suburbs wouldn’t have happened without it. The highway infrastructure, the sprawl, the mobility, all impossible. That’s the power of technology, and that’s the power you’ll give each of us by enabling us, at least on a fundamental level, to code our own solutions. [We are Code Academy].


You sound like the Wizard of Oz - terrified of anyone peeking behind the curtain. Computers are not magic. There is absolutely no reason people should not learn the basics of how computers and software programs work, given their ubiquitous nature. I do not use programming in my professional life, but I took programming courses in high school and college. They taught me how to construct a logical argument, break a problem down systematically, and chain together processes to achieve a goal. These are skills applicable to every aspect of my life, computer-related or not. Why anyone would advocate ignorance over curiosity is beyond me.


Personally, I’d settle for users learning how to use the tools they already have. Excel in particular (I spend a good chunk of my week fixing people’s formulas and teaching what VLOOKUP does).

Programming is still mis-understood in the world - it varies between “oh, this is simple, why aren’t you done yet” and “this is arcane mystical power you wield, please help me I beseech you”, with little middle ground. (And oddly, the really simple Excel stuff is treated like dark magic, and the complicated database work is the stuff they think must be really easy.)


You point out that a bad programmer can cause lots of unnecessary work. That’s relevant, but importantly, that destructive force is even more true when it comes to politics.

Now, in both disciplines it is obvious that you need to design well (code and laws). But only in programming it is really obvious that you need to refactor all the time. A coder is himself hurt when the code deteriorates or lose simplicity and structure. A politician is likely insulated quite a bit.

Laws are typically too complex, too intrusive, too buggy and non-coherent. Politicians commit pork-barrel nonsense together with important structural changes. Laws need to be constantly refactored and simplified to cause as little unnecessary work as possible among “customers”, i.e. citizens and corporations, and also among architects such as lawmakers and laywers. AND it’s important that laws are simple and coherent for citizens to be able to understand them and exercise their political rights.

This I would like politicians to learn from coding. The power and necessity of refactoring!


Saying that the Mayor of New York City shouldn’t be interested in code because “he’s got better things to do” strikes me as very backward thinking. What if he could update city websites or web scripts himself unassisted? What if he could create apps for New Yorkers to use? Think of the possibilities. Yes, things could go terribly wrong, but things go terribly wrong with dedicated teams of software developers. Just imagine the possible upsides for a minute. Or what people in other high authority positions could do if they knew how to code.

I agree wholeheartedly with your learn to write/communicate line of thinking. However, learning to write and learning to code aren’t mutually exclusive.