I don't think everyone should have to learn to code. I don't think everyone should learn chemistry either, but schools still do a reasonable job of teaching basic chemistry for kids who choose to pursue it.
The real issue is where I live when it comes to kids taking the option to learn to code is the awful "ICT" curriculum. The problems, in a nutshell are:
1. No environment for the kids to actually learn.
2. The curriculum is mainly nothing to do with ICT, it's really "office skills", in other words how to use wordprocessors, spreadsheets, make a simple website, that kind of thing. Nothing about how computers actually work and how to bend them to your will.
Point (1) is probably the most serious. The school I went to didn't teach any kind of computing class (out of sheer snobbery - it was available as GCSE and A level subjects when I was at school), however, what they had was a room full of computers where those of us who had an interest were provided with all the materials we needed and told basically "do what you want, except play video games - unless you coded the game yourself". We did code games as a matter of fact, which meant some kids who were too lazy to learn trigonometry in maths classes still ended up getting a good grasp of trig and some linear algebra as a side effect.
However, now the computers in schools are all locked down tighter than a duck's ass. You can't explore, you can't exercise your curiosity, you can't do anything. The usual excuse is "We can't allow it because the students might cause a problem on the network". This is easy to solve - have a separate development network just like I have at work - I don't hack code on production systems, and neither should kids at school. So you offer this as a solution and the next excuse is "We don't have the space for a room with a development network". So you point out that KVM switches are a thing and the dev network can be in the same computer room. "Oh, we can't afford the computers". The government here turns over their desktop every 2 or 3 years, and the schools can get them at a deeply, deeply discounted price. Or even use the Raspberry Pi. So they move onto the next excuse. "We'd need a sysadmin". Nope. Set up a system where the computer lab machines get re-imaged either by rebooting and pressing F12, or daily or whatever. Have one centrally made image for all the schools. It takes one guy to provide a bulletproof "trash and bash" system that can easily be reimaged. In the case of a Raspberry Pi, well, the student just has their own SD card and are responsible for it, if they screw it up they have to fix it themselves.
The other problem is that despite the monumental barriers put in their way, if a student tries to figure out how computers work on a school computer, they get suspended or expelled. It's like the school saying "We'll teach the kids how to add and subtract, but if we find them trying to learn algebra on school grounds, they will be expelled". Imagine the uproar if schools did this, but this is exactly what they are doing to kids who are curious about how computers work.
What I find utterly grotesque is that I had a much, much larger opportunity at school to learn how computers actually worked back in 1988 than kids do now in 2014. No wonder none of our kids learn to code. I suppose on the bright side it'll keep me in a job.