A friend of mine wanted to give back and started teaching programming to disadvantaged kids.
He was shocked to ultimately discover that for most of his students, they simply didn't seem to be fundamentally capable of the abstract thought required, and it didn't matter how much time he spent with them. He came away from the experience fairly disillusioned, and I also never expected the difference in ability to be so extreme.
I personally really wonder -- is this something "genetic", like an athletic ability? Is it something learned, but somehow acquired at a young age? Is it a mindset, that we just haven't figured out how to communicate? Or a question of motivation, if it seems "hard" to think that way?