I read a blog post the other day titled "I Have No Talent", and I found it to be pretty interesting, and what the author says probably resonates with a lot of people. But not with me. I disagree with the article on a basic premises, that perseverance is less of an innate ability than talent.
If you read the post in question, the author argues that he doesn't have any innate ability to program, or use Ruby, but he does have a good work ethic, and this makes it possible for him to still get stuff done, as long as he's still willing to put in the time. Perseverance, and the willingness to work hard are just as much talent as the ability to program, and it's probably more innate than almost anything else. You can create a good work ethic for yourself by setting patterns, or providing yourself intensives, but the willingness to do that work is something that is innate (after all it'd be way easier to just give yourself a reward, instead of forcing yourself to spend the extra 30 minutes learning something new).
I say this because I think I'm exceptionally lucky to have been born with an above average intelligence, and that I can hardly take credit for that. Whatever combination of genetics and luck gives someone their start, I drew a decent hand in the IQ department. The author says that anybody can be good at this stuff if they put enough practice into it, and I think that's probably true, but the amount of practice it takes will vary wildly depending on intelligence (and probably a bunch of other factors). It's not uncommon for me to be working on a problem with a friend, perhaps one of us is helping the other with some homework, and we'll reach some point where we need to get to the next step, and the path for us to take will be completely obvious to me, but not to them. Whatever it is that makes those steps obvious, intelligence, instinctiveness, whatever the name for that attribute is, I don't think it's something that can be learned. It would be like someone telling me that if I practice hard enough I can learn to play basketball like Michael Jordan. I could get a lot better than I am with more practice, but he's got a gift (genetics, something else, whatever) that means it takes a hell of a lot less work for him. I know Michael Jordan put in insane hours practicing, but I also know that if I put in the same hours I still wouldn't be as good as him.
Now that I've said all this does it mean I think people shouldn't practice? Absolutely not, it's the only way you'll get better than you are now (no matter how good you are). But if people are complimenting you, that might be a sign that you've got more going for you than just your hard work, that perhaps you are somehow predisposed to it.