I'm good to very good at math and interested in computers. So I thought I would be a programmer.
I'm middling at math, but gravitated to programming.
When I was in university, I knew people who were brilliant at math but couldn't code worth shit and couldn't grasp some of the basic concepts or programming. (Once had to explain to a fellow student why if her numerical analysis project was going to take 9 months to run as she'd written it, she would fail the course -- she was scary brilliant at math, but couldn't figure out how to use loops and if statements, it just made no sense to her.)
As much as everybody says "programming is just math", it really really isn't. It's rooted in math, but the actual practice of coding is nothing like it (not to me at least).
There's a reason why computer courses have a double tassel distribution ... not everybody can wrap their head around what it means. I have no idea of why that is, but it's been a real thing for a very long time.
Assuming a Coal Miner can't code is presupposing a lot about their work duties and abilities.
Again, nobody is saying a specific coal miner can't ever learn to code. But to say that you expect to teach all coal miners to become coders is absurd. It simply won't work.
In my experience, first year CS culls out the entrants by about 50% or so. Either because of the way it is taught, or something about how you have to think. But, as you said, not everybody groks it.