I started programming BASIC for fun on the ZX spectrum when i was very young. That more than anything else is i think of the most use.
It got my brain thinking in the right way. I stopped when i got to about 13/14. I started copying the code from the back of manuals at the age of 6. From 13 onwards i made/make electronic music. I wasn't really that musical it was a smooth transition from programming to music via samplers and electronics. I started programming again when i was 20 as i thought i might get a job with it ( i didn't ). I could still remember most of what i had done as a kid and decided a couple of night classes twice a week in C++ for dos would bring me back up to speed. (It didn't). I realised that programming for windows was so far from the original world i knew that i didn't really like it. It wasn't or didn't seem very creative. I did very well in my C++ class the teacher worked for a company called Pace that built set top box's and most of what i learnt was geared for embedded systems. cash points/ISBN scanners and other stuff. At the time i didn't see any use for it beyond getting a basic grounding in C++. I have always like electronics but not really been that good at the understanding of it. Worked for a company called Calrec putting circuit boards together for mixing desks when i left school and got very good at putting stuff together.
I've never had a problem with thinking up what to do i always have more ideas than i do time or money. A couple of years ago i found the Arduino and suddenly i had a platform to leverage all my skills, from electronic construction to programming and coupled with a lot of creativity. I find learning relatively easy as long as it's something i really want to do.