Please Don't Learn to Code

Thanks, Jeff. I was making a list of great blogs for beginning developers, but it was getting kind of long. It’s one shorter, now.

I hope one day one of your kids gets told that they shouldn’t do something, because they’ll probably suck at it. Then you’ll get an idea how hard it can be to pull someone out of that hole.

"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?"

Because God forbid the man should have a fucking hobby! How do playing Tekken, or watching The Avengers, or eating cake, make you better at your job? Why the hell should they? Is it so difficult to imagine that he might like to do a thing that isn’t related to running New York every now and again? Just as some people who aren’t mechanics fix up cars in their weekends, and some people who aren’t professional directors make movies in their spare time, some people write code as a hobby, and if you’ve forgotten that there can be enough joy and reward to motivate someone to spend time on a coding project for the sheer love of it, then it’s probably a blessing you don’t have to spend your working day writing code anymore.

I might point out to the vast majority of commenters that similar sentiments were all the rage during the first ‘home computer’ boom. 30 years ago. Machines like the Atari 400/800, Commodore 64, etc. made computers cheap enough that everyone would have them in their homes. Everyone would learn how to program and control this magical beast. The general public would benefit from learning critical thinking and logical reasoning skills, etc., etc., etc… Programming books were ‘aimed’ at the general public, even to the extent of a series where Sherlock Holmes was co-opted to use the Difference Engine (programming it in your choice of language!) to demonstrate how programming worked.

And, like most utopian ideas, it pretty much came to nothing. I got hooked a couple of years before this, when a grade school teacher brought in her TRS-80 Model I a few times for us to play with; by time this movement started rolling along, I was reading every computing magazine I could get my hands on, and enthusiastically embraced the idea.

When I got to college in '86, I volunteered as a monitor for the CS labs because I was on fire with the need to spread the gospel by helping out all the students taking their first ‘introduction to computing’ courses. (Many majors at this state university required the CS 200 ‘Introduction to Programming’ course. I think it’s instructive that within a year or two, the CS department came out with a CS 100 ‘Introduction to Computers’ course for these students, that focused on things like basic computer literacy and how to use Microsoft Works.)

So what happened? The same thing that happened when “In the Beginning was the Command Line” was released 15 years later. A few people caught the excitement of tinkering with the system; the vast majority reacted with indifference at best, active pushback at worst. Because most people are more interested in using tech to do cool things, not in tinkering with the tech. Doesn’t matter if it’s computers, cars (how many people like to hot-rod their cars compared to the driving public?), home stereo systems (remember how important assembling your own component system used to be?), home theater (though here there’s still a significant overlap between the hard-core hobbyist and the general public)… off the top of my head, I’m having trouble thinking of a tech-related field that hasn’t followed this general pattern.

I’m sure the latest ‘Learn to Code’ initiative will follow the same basic course. A few people (relatively speaking) will try it, find out they like it, and learn more about how the machine works. A very few will actually find a calling and get good enough to work at a professional level. A lot of people won’t be able to make that mental leap into thinking algorithmically, get frustrated, and drop it. And the majority of people just won’t care.

i think this guy is being way too cynical, and this is coming from someone who doesn’t think our civilization would survive an oil crash, so i know cynicism pretty well.

people aren’t so one dimensional that they could be defined by their occupation and nothing else. the author implies that the mayor should just stick to his job, and as should every other non programmer. this is a terrible mindset. there’s nothing wrong with programming as a hobby, and with it comes exercise for your critical thinking and problem solving faculties, which is not a bad thing, i’d say.

i don’t see how this initiative is in any way a bad thing.

as for learning plumbing, hey, if you have free time, it’s not such a bad idea either. plumbers are expensive!

i upvoted because downvote != disagree

I’m sorry but I think you totally misunderstood the point of the « everybody have to learn to code » movement.

This article is off topic.

I did learn math. I do not use it in my job on a daily basis, but it help me to understand the world I live in. I far away from being a professional mathematician.

I did learn physic. I do not use it on a daily basis. Still, I help me to understand the world I live in. I’m far away from being able to run the LHC.

I did learn french, english, italian and esperanto and basics of dutch. I far away from using all of them on a daily basis. Still, it helped me to understand many things. Still, I wouldn’t advice you to translate your blog in any of the language above, except english, my cut paste skill is still working fine.

I did learn some mechanic. Still I’m unable to repair my car myself, but at least, I can understand how it work.

I can go on and on, but I think the point is clear. Nobody that is sane would consider that you can be a professional programmer easily. But computer are everywhere, and people should understand how they work. And knowing some basics of programming is a good way to do so.

Talk about constructing a bunch of fake arguments to make a point. You are right - if learning to code creates such sloppy thinking as demonstrated in this post, then it’s best avoided.

“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 math 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.”

Well sure, but it’s not about variables and functions, pointers and recursion. (Michael Bloomberg probably won’t even learn a language that has pointers in!)

It’s about things like learning how to define abstractions (in the abstract sense, not in the ‘which keywords to use’ sense). It’s about learning how information flows and changes through an interconnected system. And crucially it’s about learning how getting those things wrong can make it damn near impossible to get things done. These are crucial problem-solving skills.

As it happens, Michael Bloomberg is probably already pretty good at those things. I imagine one can’t be the mayor of a city like New York and not already be pretty good at picking out the important details from the unimportant details. So I don’t imagine that him learning to code really will make him a lot better at his job. That said, he’s a thought leader - so him talking about learning to code means hundreds of people at least thinking about learning to code, and those people aren’t mayors of New York; some of them will benefit from it.

And as Michael Bloomberg would no doubt be able to show us, there are other ways to learn all these things. But I’ve yet to see any that are as efficient and focused as coding other than studying pure philosophy, and that tends to go wrong because most academic philosophy is utterly crap (see http://paulgraham.com/philosophy.html).

God forbid people learn how to code as a hobby. You know, because it’s fun and they actually enjoy doing it?

I disagree.

Everyone should learn to code != Everyone must code.

Jeff Atwood seems to imply that most people are implying the latter, but I think most proponents of the idea are suggesting the former. For example, a long time ago, I learned French. I barely speak it now, but it definitely made me a more well-rounded person and gave me a deeper understanding of English.

Now, consider someone who learns to program a few lines of javascript to make text scroll across a web-page. Most likely, this person will not become a programmer, but hopefully Facebook and other sites will seem a little less like magic. That in itself is a good thing. No reasonably educated person would think that something like plumbing is magic, but ask many university educated people how the internet works and you will get blank stares.

Most of the time, Jeff writes insightful posts, but this time, I think he missed the point.

Learn how to think. The 7 liberal arts - rhetoric, music, logic, arithmetic, geometry, grammar, and astronomy were the standard.

If you can think - both linearly and in patterns, programming will be easy.

Google ‘the perils of java school’

Other things might be nice and make for nice people, but people can’t think these days. Fast food cashiers can’t make change without the register (shocked looks when I get exactly a quarter back).

My university had a series of “Programming for Non-Majors” courses.

Having tutored them, I’m pretty sure the whole purpose was to make the non-majors just go away.

Perhaps not so bad an idea.

On the other hand, it just might be a good idea if everyone were required to be trained in “looking through the menus of whatever program you’re using to see if one of those commands might help you get unstuck.”

Oh please. You want to talk about “meme”, how about we talk about the meme of code bloggers who think it’s impossible/irresponsible/foolhardy/laughable/pointless for the hoi polloi to learn to better use and understand the code and computing technology that underlies almost every aspect of their modern lives.

Why should developers learn lots of languages even if they will only use a couple for their entire career? Because it gives them a new way to think about a problem.

Same for the non coding mass, if they learn to code they might never use write any code for their job, but it teaches them new ways to look at problems in new ways - and that’s a good thing.

When people say they are learning to code they really mean they are learning to solve problems and using code as the method to lean it.

How do we downvote this?

Bloomberg’s written more code & developed a more substantial business than you look likely to.

Don’t pick on him just because he’s aged and in politics.

How angry do some of you readers get???

I’m feeling the heat sitting here, not even being the target of the anger.

Anyhow, there’s obviously a lot of truth in what you’ve said in this post.

Others make the good point, that you owe to know a little about everything e.g. plumbing.

As someone working as a Software Developer, I have to say that it would do Business Analysts, project managers and others (in none-technical roles) in the industry much good to get an idea of how programming, and software development works.

As for Mr. Bloomberg…it’s hard to disagree with the guy who’s software runs on a big chunk of the financial systems!

Just saying.

Code (which I currently know close to zip about) IMO is part of a basic set of skills kids should have. As a volunteer for numerous organizations, I see this huge gap in how these offs are reaching humans. They can’t utilize the awesome connections available through technology bc they do not know even the basics of how the online world works. I can’t even effectively communicate w the programmers willing to help, I don’t know my options, & idk if they r doing a good job (which I so know my geeky friends take advantage of which is fine but I’d like to be able to help). Anyways, like how you highlighted some issues the city could be focusing on but getting government to work for the people currently related directly to technology.

Richardathome has it right. Programming is not about code. It is about critical thinking, the process, more than anything. Now if we restructured other subjects (specifically maths and/or physics) we could perhaps get kids to do what I get paid to do. Solve problems. Sometimes it takes just talking, other times code, a few times even just retraining staff to do it right… But that analysing is what they should be learning. Maybe there even needs to be a problem solving course where you present kids with obscure problems and they have to solve them within certain limitations. They are told the problem, they have to probe it and find the reasons for the problem. Explain those. Try and find solutions within certain constraints. Hell, even through in trick problems.

Personally I would love it if people understood better how computers work. I do which is why people always ask for my help. There are things I see when looking at a problem that others dont because I look and think what would I have done to solve this and go from there.

Nobody learns to code, everyone who is learning programming is learning to build and have there own logic about how thins work.

The logic learnt can be applied anywhere and everywhere.

There is no need to learn the same by learning programming but programming somehow seems to me the best amalgamation of physics and maths, the basics.

So there is no harm in everybody learning programming, but the logic that you build needs to apply and find better solutions.

You just don’t code meaninglessly.

Yeap i’m with the camp that advocates that Mayor Bloomberg, or anyone else, can choose to learn something new even if it is nothing to do with their job.

Or should musicians or artists or mechanics or carpenters also write discouragement blogs if he decided to learn a new instrument, oil painting, car engine tuning, DIY home improvement, respectively?