To Learn Programming, Do Projects You Care About
I cut my programming teeth on the open-source engine of an online game I was into.  It was C, and I had no prior knowledge of C, or anything else besides BASIC.<p>I didn't care about career development or resume padding.  I was just a teen!  I wanted to understand how that game worked, maybe add some cool stuff to it.<p>Things like pointers, memory management...  I learned by copying existing code.  I understood it because I had <i>experienced</i> it.  If it was code for a fireball, I had experienced that fireball, in-game.<p>Now I'm a full-time programmer making more money than anyone in my family ever dreamed and it all started with that open-source game engine :)