So this article has prompted some interesting discussion – here, on HN, and I’ve seen another article that posits the opposite (i.e. learning the science without the practical is equally dangeours). As is usual for the field, everybody has a different opinion.
I think you’re either underestimating or understating the utility of being able to code, and overstating the need for understanding the science behind it all. To extend the spelling/writing metaphor, I think this line of reasoning is along the lines of “Spelling is not enough, you need to be able to be able to write at the level an author would”, which is not true – literacy on its own is A Good Thing.
The way I see these initiatives is that if they can get people coding to help them in their every day jobs and lives, then great. That what they’ve coded won’t, say, scale to inputs of millions is OK if it works for the inputs they use it for. If they then need it to scale, they can enlist the help of someone more knowledgeable, and better versed in the field. As long as these people aren’t using their programs for safety critical systems, I think I’m OK with this.
I admit, there is a sliding scale of knowledge of the science-y aspects, rather than a simple binary choice, but we need to be careful of taking a stance where we warn people not to learn HTML until they learn about, DOMs, and TCP/IP stacks, etc. (I appreciate this isn’t the main thrust of what you’re saying)
Oh, and the jibe about those with humanities degrees is not cool, it just reinforces the “This stuff is too technical for Joe Average, if you’re not interested in pointer arithmetic, then stay out” tone. If that is your stance, fair enough, but I disagree – there is a middle ground.