I don't think there is any solid advice anyone can give you in order to progress career wise, I hate to drag up over used phrases but sometimes it is who you know, not what you know.
But in terms of progressing your ability when it comes to programming, I've found the best way is to tackle things in small chunks. For example I imaging one of the things they will be teaching you if you're learning Java is polymorphism; if someone said to you "write a useful program that uses polymorphism" you'd probably struggle to think of a situation where it could be used, but if you just make sure you get your head around the actual concept you'll be able to put it to use when the time is right.
Some people will disagree with me (as everyone learns in different ways), but I think the best way to do it is by learning the various concepts and techniques that people use. At the same time however I find learning things on a slightly lower level to be more entertaining, so making stuff that does new things in terms of how it works is very rewarding for me, as opposed to making things that would be of use to people; so maybe you should just go along with whatever you find the most entertaining.
Hopefully my view is of some use to you, and the only advice I can give regarding progressing your career is keep your head down and work hard.