Some people are better at some of these aspects than others, and vice versa. Only experience requires having programmed a lot. However perhaps those who start young are more likely to "get it", making it fun for them, though I think it's a poor proxy since you can't control for who had exposure at an early age.
I started programming at age 12, quite by chance. I stumbled over some code one day, and my buddy could tell me it looked like Basic and I could try QBasic on my machine. I was quite fascinated, and really wanted to learn more. However I didn't know anyone who could program, and we didn't have internet nor BBS access. So until I was 16 and we got our first modem, I spent a lot of time bumbling around alone.
On the bright side I think it made me good at reading documentation. On the other hand, I could probably have done a lot more actual programming if hadn't had to spend a full week trying to find the one keyword I was looking for... Of course it didn't help that QBasic's built-in help was in English, and I had only started learning English that same year.