I believe logic and basic computing (this is a folder, that is a keyboard, etc.) are necessary. In fact, these form the foundation for programming later, but how could programming be considered a skill comparable to reading or writing?
For the same reason being able to write English[1] well is: If you can use English effectively, you can better influence the people you have to deal with. If you can write code effectively, you can often find ways to better influence the computers you have to deal with.
[1] (Replace 'English' with any natural language of your choice, if you want.)
Also, if you can tune engines effectively, you can better influence the cars you drive, and most people use one every day. Shouldn't auto shop be up there with programming?
I don't say that to knock auto shop. I want to reinforce the idea that 'programming' is not as important a skill as reading, writing, and math. Programming is a trade skill that builds on the concepts of reading, writing, and math. It's an advanced skill, not a basic one.
It's more important because, frankly, being able to use a computer really well means you can do things the companies in charge don't want you doing. Disabling DRM, making backups of the software you own, blocking virus-laden ads, and so on, all the things I won't put up with being unable to do but the average person just kind of suffers with, like a cow in a thunderstorm unable to find shelter.
I wish this were so, but if you look at most education systems, they seem to be designed with a goal of ubiquitous mediocrity. There's a lot of focus on bringing everybody up to minimal standards of not totally sucking, but anybody who isn't in the bottom 1/3 of the class is usually neglected.
At least, that's the way I remember it, and the way politicians usually talk about it. Remember "No Child Left Behind," where the goals were all based on improving education for the worst-performing students?
(It wasn't all bad. I got so bored that I learned a lot of computer stuff, which turned out to be a spectacularly good use of my time.)
I believe:
[1] Each general subject has a core competency that you have to achieve at a minimum.
It's broken into skills and subjects.
Skills includes: programming, reading, writing, functional mathematics (+-*/ and solving word problems), learning (figuring out how the pupil best learns for themselves, or if you want "meta-learning"). I may be missing some skills here.
Subjects include: english, history, biology, chemistry, physics, mathematics (both higher level functional math and theory / proofs). I may be missing some subjects here.
[2] on top of #1 you have focused subjects of interest which you should support the pupil learning to whatever depth they are interested in learning. Most people I know upon finding something they are truly interested in become a borderline expert. Are they world class? Maybe or maybe not, but they are certainly journeymen. These range everywhere from finance to car repair to engineering to language learning to musical instruments to basically anything people take an interest in.
If your student can reach functional usage in all parts of #1 earlier that gives them more time to learn different things from #2. Note that the skills and background knowledge learned in #1 are reusable to various subjects in #2.
Circling back to the article: It's a stupid idea to even attempt to prevent a student from mastering anything in #1 above faster. It might help if the peer group instead of being defined by age could be defined by what your interests in #2 are. Then you get cross pollination of students by more advanced students in those same interesting subjects.