Trust me, I don't cook competently, but I live alone and can get food done when needed. We don't all have to be professionals at something but we need to understand it especially when our lives depend on it. Take medicine for example, I'm also not a doctor but that didn't stop my school from forcing me to learn biology (which I loved btw) and I think we should all know things about the world when we deal with them on a daily basis. I also didn't major in electronics but I still know better than showering and cleaning the innards on the hair dryer with water while it is plugged in.
It is the mentality of imperative knowledge that should be considered when talking about teaching programming. Not the idea that all people should know how to compile Linux.
You caught my spirit perfectly. A little biology knowledge can help interacting with a doctor. It's silly to assume people should know how to compile their operating system, but an appreciation and understanding for how data is aggregated and manipulated is useful.
Only a small number of people might be coding competently currently, but that doesn't mean only a small number CAN.
There is nothing special about programming; like learning a language, it is very possible to become competent, and anybody who is not mentally delayed can do so - it just takes effort. If you can code competently well done, but don't think yourself special.
Not everyone needs to code competently. Just like not everyone needs to speak Spanish competently. (Or can learn other languages competently)
But... Learning a little Spanish can increase one's appreciation for Spanish culture. Even attempting to learn some programming can make one much more effective when they hire or direct a programmer, or engage in discussions about online privacy, or ask someone to help analyze a problem.
A much smaller number of people can learn to drive like a professional driver, speak another language fluently, or be a restaurant chef. Coding isn't isn't really different from those other activities: you should learn the basics, because it will help your life, and leave the complex stuff to professionals.
It is the mentality of imperative knowledge that should be considered when talking about teaching programming. Not the idea that all people should know how to compile Linux.