Just saw this after being linked to a tweet. Good article. I think the main problem is that everyone thinks that learning to code is just learning how to write some isolated program in some high level programming language. But any professional knows that software is so much more than that.
You're right to say that coding isn't an essential skill like reading, writing, math, etc. Yet, I still believe that programming needs to be taught better and be more available. Music, art, biology, chemistry, physics are all required to be taught in school, but none of them are essential. Also, everything points to the world needing more skilled software developers (emphasis on skilled). Software engineering also holds a more special place in my mind than other engineering disciplines (not saying that other engineers are less important). Software has a major social impact. It affects the way we communicate and live our lives. There's also unlimited potential to software. We are essentially building our own world with software. For the other engineering disciples, you can build a bridge but a bridge can only be built so well and it can only have so much of an impact. You can design a pair of headphones it's only a convenient way of listening to things well without others hearing. You can create a cool computer, but it's all the software above it that makes it useful.
I'm not sure how software should be taught better. But I'm pretty sure it could be. Maybe the basic high level concepts should be taught in high school/college. Like how programs are compiled to machine code which is ran on a processor. Or how TCP and IP protocols are used to send data across an internetwork in a standardized way. I don't necessarily think that a student even needs to start learning software by learning how to code in a high level language.
Maybe the computer science disciple needs to be split up in colleges. In most cases, there's just one degree: computer science. Computer science is becoming too all-encompassing in a world where software is becoming extremely complex and important. Maybe there could be one specific degree of computer science that's focused on theory where math and algorithms and theoretical applications (machine learning) are important. Another specific degree could be focused on systems where compilers, kernels, networking, databases, distributed systems are important. And there might be other topics/degrees that I'm missing. I don't think anyone can or should be responsible for having an in-depth knowledge of all areas.
In conclusion (TL;DR), I think the public's belief that everyone should learn to code is naive and that you bring up good points to why not everyone should learn. But it brings up an interesting question of how software should be taught.