Ask HN: What is the most compelling reason young people should learn to program?

52 points by JonathanBuchh ↗ HN
What is the most compelling reason young people (13-18) should learn to program—especially if they are not interested in pursuing a career in the tech industry? Why should students use their computers for more than browsing the web and using word processors?

121 comments

[ 2.9 ms ] story [ 188 ms ] thread
If they are not interested in tech they might not need to learn it. Basic literacy might be helpful in some situations, especially since users aren't really masters of their own devices anymore and the technicalities are well hidden from them.

To see if the tech is interesting it might not hurt to have an introductory course though.

It's probably useful to be exposed to a variety of fields when you're at school - that's why we study so many subjects that we won't use directly in our careers. Programming is like that too.

It's like asking why kids should study chemistry or literature - they don't have to but it's probably a good idea. I don't think programming is more special in any way (even though personally I might like it more than those other fields).

Modding Minecraft and other games.
In my experience, this is the most motivating reason. Take something they love and show them how they can get control over it and play around. Kids like to play. They will take literally anything they can play with and play with it.

These high minded ideas about economic utility are for later, when they start worrying about their adult lives. But in the meantime, playing around with the computer and the games and websites and phones and seeing what they can do with them is the best answer.

I can think of at least two reasons:

* Information technology is important enough that it's worthwhile having at least a passing understanding of how it works internally.

* It's important to learn how to be rigorous when organizing information and procedures. Learning to program can help with both.

The same reason we learn any other subject -- to demystify it, and give people a basic understanding of it, so that others are less able to take advantage of your lack-of-knowledge to control you.

Yes, being exposed to a variety of fields in order to choose one and get a job is an important part of school. But I think giving kids a sense of how the important aspects of our lives / society work under the hood is where the true value of education lies.

For the same reason, I think film/media studies should be standard high school curriculum.

Because it's fun. Lots other good reasons, but to me this is the most important.
Simple. Not to fall for marketing slogans and false promises, and not to rely too much on the results of technology. If you know (at least basically) how the sausage is made, you will know it does not work without meat.
Yeah, I sort of liken it to lifting the curtain so that you can see the man [1] behind it. While part of me likes the idea of allowing for some "magic" to be left in the world, I also want my kids to be knowledgeable/informed on the more important technologies that affect your lives like this one.

[1] Not trying to come across as sexist — the reference is to The Wizard from The Wizard of Oz.

Honestly, they shouldn't if they aren't interested.

But moving past that, Excel. Just a little bit of programming knowledge can really up your spreadsheet game.

* You often need to teach the basics to lots of people for the smaller number that will take it up as a career to be exposed to it.

* Lots of work is done on computers and programming is a way of automating that work

* If you don't code, you may well work with others that do and having some exposure to what on earth it is some people are/aren't doing is valuable. One of the most useful things I ever did was fail to run a business as it forced me to understand that sales/etc aren't easy, as many techies like to presume, and require skills I lack

* You can build things. Building things is fun, at least to me

The only compelling reason is to increase your brain plasticity. They could learn a foreign language instead though, or an instrument, or both; then at least they might get laid.
Given they are not interested in a tech career, I'd say they should learn to program if they:

- want to do something with computers no currently existing program allows them to,

- want to create something with artistic value (games, websites, computer graphics),

- enjoy it for the sake of it.

I can't come up with any other reason why they should.

It’s the simplist way to make more than minimum wage.
USA is moving toward an intellectual property economy. Lots of IP, especially informatics requires code.
When I was a kid, we were flying somewhere for a family trip. I remember seeing a man with a laptop with a screen full of code. I had never seen this in person before, and I watched with genuine interest. Much later in life, I found out that I loved coding. I love problem-solving and find programming to be very engaging.

I don't think we need to force every kid to learn to code. We ought to expose them to it, though. Kids who show interest ought to have a way to learn more.

Right, and we're talking about degrees here, obviously. Mucking around with Scratch or Logo for a few hours is one thing, becoming proficient in Javascript is quite another.

There are solid arguments for learning the concepts behind coding. As for making every child learn Javascript, I wouldn't go that far :)

There's not going to be less computers in the future. Learning to program is like learning to read.
Having a basic understanding of how computer work and think will be vital to navigate society, as more and more parts of it are digitized. I'm not saying that everything becomes crystal clear after programming 101, or that IT systems can be understood after learning "Hello World" and IF-THEN-ELSE, but it will become more and more useful to navigate the modern world.
Even if a person is not interested in the tech industry, it's still a highly valuable skill.

I know someone who has a lot of tedious work to do. If they could program they'd be able to do it much more efficiently. They can use that time saved to do anything else they want to do, perhaps they could have earned a promotion rather than slaving away on a repetitive task.

The world moves forward through efficiency, and automation is one of the major factors in that.

Being able to keep things working would be good.

At the very least it can give you some added analytical abilities. Like learning Excel.

Programming a computer is a way of thinking. It in some ways involves the same thinking as determining how to break down a mechanical manufacturing process, or parts of team management (sport or industry), or legal arguments, or considering how biology works.

Basic logic is part of this, as is process decomposition, as is just learning a new way of communicating and many other things.

Learning new ways of thinking makes us flexible individuals. It fosters creativity. These are skills we all need in society, but the modern economy especially.

This is actually, I think, a compelling argument (aimed at adults who are deciding what children will do, less so the children themselves) for almost any subject.

And to the kids I say - you can make a videogame. That was always compelling to me, although I knew I'd never be a game developer professionally.
The video game lure is good for some, but for others it's too complicated. But making flash-style animations using Scratch is also attractive (and easier). You can also make algorithmically-generated 3D models for 3D printing using programs like turtleSpaces. And there's also algorithmic music. So games aren't the only option.
If they want to work with their hands, there aren't many good reasons.

If they want to work with words or numbers, some basic programming will let them automate repetitive tasks and eliminate lots of boring work. Examples include simple calculations in spreadsheets, formatting writing for publication, filing work email, and automating invoices. It's a useful skill like being able to touch-type.

In any case, they should not be forced to program for its own sake, since that has a narrow appeal. Instead, they should program only to do things they actually care about.

For me, it was always simple. Learning to program gives you control over your environment, and in some sense the world. This is more true now then it was when I was a teenager.

For most teens the thing they grate against the most is lack of control over themselves and their direction. Programming puts you back in control. You can make a general purpose computer do anything you can imagine.

This was the answer I was hoping to find as it always resonated with why I've stuck around computers and even gone head-first in the linux world. In this day and age when everyone and their corporate overlords are trying to lock down expression, action, speech, privacy ... even knowing basic "tech health" goes a long way.
Knowing how to write code in any specific language is ultimately a fairly useless skill except in a handful of jobs. Unless you're someone who is either a developer or a spreadsheet user the chances are pretty high you'll sail through life without even seeing a line of code.

However... the parts of programming that are useful to everyone are applied logic, critical thinking, and 'debugging'. Being able to break down a problem, find a metaphor for a problem, evaluate what you know and don't know about a problem, etc are useful skills that apply everywhere, and that programming teaches really well. When something isn't working, being able to ascertain why by changing things one at a time, or by knowing that you can iterate to a solution instead of jumping to the last step, are immensely powerful ways of thinking about things.

There may be other ways to teach those skills instead of abstracting them to programming but I've not encountered any good ones yet.

debugging mechanical engineering is quite similar, just more expensive ;)
I think there's a key difference that puts programming a bit further ahead in my opinion - you can make a backup with software. You can 'undo' what you've tried, or reset the whole thing. In general with physical things you can only move forwards, and potentially you can make things way more broken than they already are. That's a useful lesson in itself, but if people are learning it's good that they're not scared of making mistakes. It's a lot harder to make things catastrophically broken with code (despite my best efforts).
Computers and software are involved in pretty much every aspect of modern life. Having a basic understanding of them allows you to understand and predict their behaviors.