Please Don't Learn to Code

Sorry man, but you couldn’t be more wrong. Learning is never a bad thing and your example of NY’s mayor is a perfect example of that. Imagine if every politician spent time learning rather than playing golf.

I’m not going to chew your head off here. It’s been done enough here:

I disagree. The more scientists, for example, that learned how to code well, the less old obfuscated and obsolete fortran code would need to be maintained by the physics community, for example. I don’t know about everyone but certainly people who work with numerical or symbolic data for a living (to wit: scientists, economists, and mathematicians) should know how to write code and good code at that.

Also, presumably Mayor Bloomberg is allowed to have a personal life and free time as much as people in other jobs.

Yeah, Jeff, sorry, I gotta agree with everyone who disagreed with you. This is a shockingly short-sighted blog. Did you write this just to get a bunch of views?

Taking your approach, why would students be taught history? Handwriting? Mathematics beyond what you’d need to balance your checkbook? Should people not learn science if they aren’t going to be scientists?

Learning for the sake of learning is pretty damn virtuous. Learning only what you need to learn in order to get through life… Well, that’s pretty horrible.

My 8yr old son asked me to teach him HTML, because he wanted to understand how all that stuff gets into Google Chrome. Because he wants to understand things. Just like he asked me how radio works, and how the internet works. Should I not explain it to him because he isn’t going to directly leverage this in his life?

Yikes. Geez, every time I go back to look for more examples of how absolutely inane your arguments are, I find more things even more inane than the last.

As people, we are tool using animals. The computer is the ultimate tool. That is what people should learn. A computer engineering education means learning about logic gates, the von Neumann architecture, CPU design, assembly programming, a low level language, operating system construction, compiler construction – and then a computer becomes useful to you as a tool you can fully control.

I will grant that an extremely high functioning individual like Bloomberg can probably deduce a lot about how computers work through experience and running a technology company, but half his middle management probably couldn’t get a clue in a field full of horny clues in the middle of clue mating season – they’ll have to learn the hard way, and if learning Ruby in X weeks gets them closer, then I can hardly disapprove.

If this article is satire (a “Modest Proposal” about the year of code?), it is genius. Otherwise, it smacks of trolling and makes me sad.

  1. You discourage the mayor of New York from bothering with any knowledge over a basic High School education (but really, does he even need to know Geometry? (Never mind that politicians are the ones making the rules controling the interweb tubes)

  2. Nobody should know how their plumbing works? A wrench is just a tool (like programming)… not everyone needs to know how to turn one. Being able to fix your own leaky faucet is a waste of time and cannot possible help you in other areas

  3. Laymen don’t need to know about programming… they just need to understand how computers work? You know, they should have a good feel for how a computer “thinks”, and why it only does exactly what you tell it.

Nevermind that government is run on Excel spreadsheets… which are filled with formulas and function calls and maybe a little VB (pointed out by WimD and others)

Nevermind the assumption that everyone who reads Learn Java in 24 hours will start looking for a dev job (covered well in other comments)

Sorry, but Jeff got this right in his post. If you are a programmer then you already have lost perspective about what programming offers to a person who is not or will never really be a programmer. The best schools cannot teach this stuff to a very high percentage of people! Don’t hack your friends (this little movement to turn friends into coders) unless they show a deeper interest and desire to understand problem solving through programming. It’s somewhat of a dead end job anyway as we self cull our ranks and If we continue to do our jobs right won’t we will eventually make ourselves obsolete anyway? The point isn’t to make people better at adapting to machines, it’s to make the machines adapt to the needs and desires of everyday people, to improve and enhance the human condition, not mire all humans (or even your geeky friends) in an extrapolation of logical instructions that will be outdated in a year, and all but forgotten in less than a decade (to eventually be a footnote in an intro to computers course). Latin, French, Mandarin Chinese, and even English are not likely to become just a historical footnote in less than many centuries so please stop comparing code to real languages. Code as a language has none of the mental, emotional, cultural or social benefits that learning a second language does (Mostly, only programmers are capable of missing the point and thinking it does).

Imagine if Mike Bloomberg wanted to learn to play the guitar. To which guitarist guild would reply: “NO! Don’t learn to code! There are millions of terrible guitar players, we don’t need any more!”.

Then Mike Bloomberg decided to learn astrophysics. To which Neil deGrasse Tyson would take offense. “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 knowing the total mass of Andromeda?”

The “everyone should learn to code” movement isn’t just wrong because it falsely equates coding with essential life skills like reading, writing, and math"

Programming is math.

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?

Which makes me wonder what is Jeff’s problem with more people learning plumbing?

So, why not. If you want to learn plumbing why not. Worst case scenario, plumbing is not for you and you trying to learn it will make you figure that out.

Our schools teach us music, calculus, sports, chemistry and a lot of stuff that we won’t necessarily use in our lives. So what? And again, What is wrong of learning for the sake of learning? As humans that is what we do.

What Jeff is saying is simply this. If more people learn to code, we will have more bad coders. Boohoo. Somehow we have gotten back to medieval time, and we are suddenly afraid of other people learning our precious knowledge, really?

Also the call to learn math and reading instead of coding is useless. So, are we really saying that you have to choose between improving coding and improving your reading skills? Sorry but not.

Just because industrial engineers exist, does not mean you shouldn’t ever give carpentering a try. And in that regards, just because your job uses something as lovely and wonderful as programming as part of the million of times more ridiculous, silly and frustrating process that is making software for boring business, it does not mean that everyone else should be denied the joy of programming. There are a lot of ways amateur programming can work as an entertaining hobby that is outside of the lame thing that software development is. We got modding, the demo scene, scratch, algorithm contests, games.

More so, more programmers means not only more bad programmers, but also due to any law of proportion, more good programmers.

Probably your most misunderstood and misquoted article ever Jeff. Thumbs up for a good article that I thoroughly enjoyed (like all the others) and agreed with.

It reminded me of an article ( published in a Quebec newspaper that made me realize the “programming is essential omg” trend from people who literally can’t tell the difference between actual programming and @'ing someone on twitter. Sorry for the article being in french but I think it’s a good example of what Jeff is talking about, even when Google-translated.

I take the point that it’s not inherently a net positive.

But it’s also not inherently a net negative. I don’t think the movement is about everyone learning to code so they can get a job coding. It’s about learning to code so you have SOME understanding of what is going on with these things that so define every aspect of our lives.

I don’t need to know the general details of how an internal combustion engine works, and how the car system as a whole is put together. But I personally do (even though I’m not a mechanic and have no plans to become one) because it does benefit me in certain situations. Understanding the world and around you and more importantly, the machines and systems that enable your life IS a useful skill.

With the car example, I can do some of the work my self, which is faster and cheaper. And I can begin at least initial diagnostics my self to know when my car needs professional help. And when I do get professional help, having some knowledge about cars helps me not get ripped off.

The same goes for general programming knowledge. There are tasks that can be automated, bug in existing products that can be understood, and even worked around, if the user has some cursory knowledge of programming.

I do think everyone should get some understanding of programming because it underpins so much of what they do every day. Just as I think everyone who owns and drives a car should have some basic understanding of how it works, so they can be responsible owners.

[vaguely @Moritz]

I don’t agree with the notion that you need to know how to code to effectively use a computer.

Making technology more accessible is our job as designers and developers of software. Same as making an automobile more accessible is the job of the talented engineers and designers that bring you the award winning Camry at the end of every year.

The reason the iPhone is so popular is because it’s stupid simple.
Jobs set out to make the computer a toaster, and he succeeded. He did the same thing to the smartphone, and he succeeded.

My mother, who hasn’t used a smartphone a day in her life, was able to figure out my iPhone almost instinctively. The same cannot be said for some previous-gen dumbphones and Android phones, and even some land-line phones I’ve bought her over the years.

I know plenty of people who don’t have the faintest idea of how ABS works in their car. Aside from: it makes the pedal vibrate, and this orange lamp here means it isn’t working.
Does that make ABS any less effective when used in an emergency braking situation? Certainly not.

Problem solving and logic are very important life skills. Understanding how and when technology is applicable is also a valid life skill.
Is programming the appropriate way to teach this? Or even a good way to teach this? I don’t think so. Programming is hard.

This isn’t to discourage young programmers. Its to say that there are things far easier and far more fundamental that you must learn and understand.
Programming includes obscure compiler bugs and discrepancies, dependency management, complicated syntax, among other things.

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.

Coding is fun and almost instantly rewarding, in fact with only basic programming skills you can make simulation models that are a lot more advanced than really complex Excel-models or really advanced math.

Niklaus Wirth style stepwise refinement might be a lot more appropriate than jumping into design patterns.

I think sites like Codeacademy have the opposite effect of what they advertise. They only show the boring part of programming. Writing code IS boring and indeed not "that" hard. The fun part about programming is finding a way to systematically solve a problem or rather have a computer solve it for you.

Code training sites just spoon feed you the documentation that's already available and aren't practical if you actually want to code. There's already a tool for that called an API.

It's cool to learn the guitar by jamming some of your favorite songs but it doesn't teach you any music theory or how to compose music.

A similar argument, I would guess, would have been made by secretaries in the 1980’s if Ed Kotch had decided to type up a few of his own memos on this new thing called the word processor.

Programming is getting easier and easier as languages improve and processors become faster. It’s no surprise that it is becoming democratized.

I think it’s great Mayor Bloomberg is learning to code. He will probably really enjoy it and it will increase his general literacy about technology.

I can’t argue against anyone wanting to learn something.

I don’t know… I think posts like this are kind of snobbish. I say let people dig in and see what it’s about. The ones who fall in love with it will seek out the finer aspects of the craft. But to suggest we hold back the keys until people prove they are worthy sounds arrogant to me.

And by the way, I might be mistaken, but I think CodeAcademy is based in New York City. The Mayor was doing some PR for a local business. That’s all.

I think the spirit of your post is mostly wrong, even though you make a lot of good points on what the BEST way to learn would be.

You’re only real points are:

  1. Code is a means to an end. So teaching the means before the end is worthless.
  2. Learning to code isn’t necessary for success, so learning it is worthless.

All your arguments would apply to Calculus, learning a foreign language, or an instrument, or sports. Those are all a means to doing greater things, and they aren’t necessary for success. The awesome parts of life are completely optional.

(that was completely stolen from xkcd):

It’s not a bad thing if people decide to learn more. As a programmer, I don’t feel threatened by it.

You can learn to code without learning Java.

I imagine that you can learn Java without learning to code. (Or, that’s the impression I get after seeing some java programs…)

Anyways, we have far too many people right now who are satisfied with getting at their data only via a UI tailored to that particular data store, rather than by manipulating the data using simple “generic” tools. Even people that “know how to code” seem to not care that they are only capable of using toy systems, and are not capable of aggregate operations until someone else does their thinking for them.

Do I expect that the New York “learn to code” initiative will fix this? No…

In a sense, it’s not “learn to code” that’s needed it’s “learn to work with data”. And, before we can teach people that we need to learn how to do that properly, ourselves.

Put differently, maybe people need to “learn how to get rid of code”.

But to do a good job of that, they are still going to have to learn to code.

Such is life.

It is unfair and callous to deny people the ability to automate. No one should be stopped from learning and realising that a lot of the drudgery in the world can be solved by something as simple as a loop.

Furthermore this article seems to ignore the increasing popularity of end user programmable tools and applications.

As Wil Wheaton would say, “Don’t be a dick.” And right now, you really sound like one.

This is your jump the shark moment.

I understand the sentiment behind this blog post. I get irritated by the, “Hey! I’m going to learn to code!” New Years resolutions that will start as quickly as they die out…

If coding was fun and easy, everyone would be doing it. I have to support this blog post, we should be building up an understanding of technology at the basic level instead of trying to convince people that learning a little bit of JavaScript is a worthwhile endeavor.

You learn to code by coding because that was the chosen solution for a problem, not because the world is filling up with software solutions. Knowing how to code is not going to become quintessential to jobs in the future. For all we know, we could move outside the need for a lot of programmers and have a more tight-knit team of experts at a chosen company. Then, what good to Code Academy do you? Nothing.

Also, for those who believe that getting the average person to learn how to code might create some form of bond or kinship with code illiterate people… I point you to the Big Bang Theory as what mainstream does to your subcultures.

I think you miss the point, which is especially surprising considering how much you’ve complained about the state of job candidates in the field. The idea is to get more and different types of people coding–the pipeline to jobs in computer programming is fundamentally broken in several places, one of which is the extreme lack of diversity in who enters it. We are missing out on many, many people with the passion, intelligence, and capability to be excellent coders, and these initiatives are one way of mending that.