I don't believe there is such thing as "innate natural ability" which can triumph over dedication. Sure there is some genetic influence on intelligence and learning ability, but most of it is nurtured - usually at an early age. Unless there is some underlying learning disability, any person can become competent at something they desire if they have the willpower, the resources and direction. Also, despite popular belief, you can teach an old dog new tricks.

Usually, if someone struggles progressing, it's because they're lacking some foundational knowledge to understand it. I see this most often with math, people put off by type theory and such because "ooh, scary notation", which needs learning before you can even begin to read the literature. Even basic math is a no-starter for some people, because they were unable to grasp the way arithmetic was taught to them in infant school, they just think "I'm terrible at math" for the remainder of their life - rather than what they should think - that they weren't taught properly to begin with. It's actually quite fun to teach the basics to adults who always thought they were crap at something, because you see them transform into hating a subject into loving it. Perhaps the "bad" programmers you speak of have simply lacked someone to mentor them and bring out the best in them?

I think you're holding the bar too high for "good" too. What do we even mean by a good programmer - one who writes few bugs, solves problems the quickest, writes independent, cohesive modules, or a combination of many factors? - surely then we'd have a mix of people who are good at some of these and bad at others - then there's nobody who's going to be "good" at all of them. If writing few bugs makes a good programmer, then such programmers are extremely rare. Good means competent enough to solve problems with code - it doesn't mean everyone is "exceptional".

I don't believe that I could become an exceptional author for example, but that doesn't stop me from writing. Imagine we only taught writing to children who show the aptitude to become authors? Of course, this can't happen - the opportunity needs to first be there for one to consider dedicating themselves to it, and you don't motivate someone into trying by telling them they can't do it. Writing has practical use besides being an author - it can act as "external storage" for our brains, and it's a communication tool - as is math, and programming has the potential to be far more useful than both of these, if people didn't see it only as a career path.

As for being "moddy-coddled", you'll probably find that most talented individuals have had good mentors at some point in their lives - who can point them to the most suitable material to learn from. Autodidactism only gets you so far, because you don't really know what it is you're learning until you've learned it - if you're trying to specialize in something, it's not very efficient.

> This might sound harsh, but this is fine by me.

I don't think that's harsh, but I think everyone should have the opportunity to learn before brushing them off as incompetent. From personal experience, I have little time for people who don't want to put in the effort to learn and progress, but I'll give hours of my time away for free to those who genuinely put in the effort. It's not the case that some have the ability to begin with - it's that I need to find the right way to explain something in a way they understand.