I agree with this so hard.http://www.nydailynews.com/opinion/jeff-atwood-learning-code-overrated-article-1.2374772
Most people do not need to learn to code. More strongly: most people should not
learn to code. The biggest cost in life is opportunity cost, and for the majority of people, the time spent learning to code could be more profitably spent elsewhere.
Jeff's alternative, which I also agree with, is basically "spend time learning to communicate". In particular, learn to write, and write well. It's amazing how many people, even at Google, struggle to communicate clearly; I feel like the majority of my code review comments are about comments, and in general, most of what I try to help people do is communicate better, whether it be by improving function or variable names, changing code structure to better match the underlying concept being expressed, or the aforementioned comment fixes.
I don't exclude myself either. I've been complimented many times over the years on my communication, but my writing almost always benefits from rewriting and rethinking. Good communication is hard.
Coding isn't all bad. If it helps you learn how to think sequentially, organizing an overall goal into a series of steps to prove, describe, or obtain it, then you've gained something of use in many places. But coding is far from the only way to learn this. Geometry class can do the same thing.
Too many people I know look down on others who don't want to spend their time and effort on the same things. Linux users can't understand why others don't want to spend their lives suffering with bad user interfaces just so they can have a few more obscure configuration options. Expert browser users get up in arms when browser vendors try to simplify how web addresses are presented, and ask why people can't just learn how to read the different parts of a URL. Techies of all sorts bemoan users who get phone calls from "Windows Computer" and blindly give out access to their machines over the phone.
And sure, people could benefit from knowing more in these areas. If everyone understood URLs better, phishing would be less effective. If scammers offering bogus tech support didn't make any money, they wouldn't bother calling. But usually ignorance is rational. People avoid spending time on X because they value Y more -- and there's nothing wrong with that
. Just because you like something does not make it inherently important or valuable to others. (The converse is true too; just because others don't like what you
like doesn't make you wrong.)
Coders have been way too guilty lately of arrogantly assuming that because they like coding and they get value from telling the computer to do something, that it's worth everyone else in the world spending their time on it too. (Mozilla, in particular, has displayed this arrogance in spades.) The people doing this don't realize they're being arrogant; they're not trying to hurt anyone, and they generally believe they're helping out by teaching people a valuable skill.
But I think they're wrong, and Jeff is right. We coders love what we do, and what we do is valuable to the world, but not everyone needs to do it. We can do the coding and let others spend their time on things they like and value more.
So if your kid is interested in computers, by all means, demystify them; encourage the child to experiment and make it clear that a computer isn't a mystical voodoo box, but a machine that does what we tell it, and can be made to do anything you can figure out how to break down into logical steps. But if not, don't force it. Coding isn't for everyone. And it doesn't have to be.