Note: I am a lower-middle-class guy living in an upper-middle-class community, so a lot of what I say here has part to do with the parenting atmosphere present in such communities (at least in the US).
I have a very... different... take on this. People should learn how to use and understand a computer better, yes, but I honestly don't think that it's a good idea to get
everyone to learn how to program (notice the non-use of the verb "code," it leaves a foul taste in my mouth), at least, not the way we go about it today. In my town, occasionally I see road signs near the middle and elementary schools that advertise a programming class of sorts (not related to the school at all, mind you). The problem is that the sign is very much aimed at parents. The thing about that is that I feel like parents have been brought up with this notion that their kids need to learn every possible skill at a young age. A lot of times, uninterested kids do things that their parents want them to do, and they hate it. This is no exception. The problem is that these parents push this upon their kids, and there is no choice.
That said,
if someone wants to learn how to program at a young age, they should have the
resources more easily available. Example: myself, seventh grade. I wanted to learn to program, so I had to research what language I wanted to learn, decided on Java, and bought a book, meant for adults, mind you, for me to learn out of. If there were classes at my school or an out-of-school thing (the thing above didn't exist then) I could do to learn, I would have signed up or asked my parents to sign me up. The thing is that this "programming is a useful skill for everyone" mentality only became a
major thing about two years ago. Yes, it existed before, but it wasn't a major, pop-culture, "thing," per-se, until about two years go.
Which brings me back to the first point: Parents and schools want children to learn everything possible. This is shown everywhere, especially in our school systems. The thing is that not everyone wants to or needs to or (and I use this term loosely. I will explain)
can learn to program. When I say "can," I mean that the person would have it learned without much difficulty. Honestly, I hate the push towards "STEM for everyone" because only not everyone has an interest in STEM to begin with. The kid might be the next american novelist, but they still have to go through the classes that are unrelated and boring to them (until college). Not to say that we should have students have a choice in whether or not they should have math and science classes. They should, but it shouldn't be the number one thing that schools push on them
if that is not what they want to do.
In addition, pushing everyone to learn how to program slows down the pace at which people who have interest get taught because there are other people holding them back. It's just not fair to those with initiative. In my experience, people who want to learn how to program learn how to program one way or another. People who don't don't. It should stay that way.
And think about it, programming is just another form of math (it's logic, after all
). Just let students learn that instead, oh wait, they already do. The problem with that is that there's a "one size fits all" mold on that, and it just kills me. Accelerate the students who can be accelerated as far as they can go, for crying out loud!
I guess my point is that STEM/Programming should be pushed not as "everyone should learn all the things," but should be pushed as "everyone should have the resources available to learn all the things."
Note: This may seem a bit ranty and at points not coherent, but that's the gist of it
EDIT: Yes, I know this is about learning programming and not about how it works, but I find this relevant anyways