My main motivation has always been being able to code up games (almost) from scratch. I started out by toying briefly with BYOND software, and am now moving on to Java with the help of a couple of university courses I took. I get most of my learning done by experimentation and random online searches.
The best way to learn for me has been to pick a project I'd actually get some use out of, and study everything it requires step-by-step. My current goal is to code up a basic multiplayer game in Java, so I had to learn the language basics followed by user input, basic GUI, and game engine logic, Atm I have a basic grasp of these things, but am struggling to get a simple chat client up-and-running

If you thrive in a classroom environment, definitely take advantage of the CS courses at your Uni.
(I realize I may have necro'd a thread, but I think that it merits more responses; I'd be curious to know how more of the regulars here started out, too)