People are people. Some programmers are good programmers, some programmers are bad programmers. Some bad programmers can become good programmers with time, while time can never benefit some other bad programmers.
Location tends to not be a factor here. But maybe opportunity might.
I was asking what the words "Bad Syntax Error OK" meant in GW Basic when I was 8 years old. I grew up with computers. Not everyone has that advantage. Times are changing though, and the 8 year olds of today have more access to technology than the 8 year olds of yesterday.
But it's important to realize programming is more than just knowing how to use a computer. It runs much deeper than that. Here are some key characteristics that separate the good programmers (and the ones who just need time) from the real bad ones:
- Good programmers are curious
- Good programmers read online blogs and articles and try to learn more about their field
- Good programmers answer questions on Stack Overflow
- Good programmers with 1-2 years experience or more understand that their Computer Science education wasn't a waste of time
- Good programmers can think outside the box
- Good programmers are also good leaders
- Good programmers are proactive and don't need to be told what to do
Most importantly, good programmers are also good communicators. The best programmers are the ones who can persuade others. They're the ones who can patiently debate a problem with another peer until a solution is found.
The biggest challenge is communication.
Whatever the challenge, don't ever stereotype yourself or others. You have just as much potential as anyone else and vice versa. Just remember that you can do anything that you really put your mind to!