Y'know, it pains me to say it, but it worked for me, so I'll throw it up as advise (take with grain of salt, shake, stir, modify, call me in the morning):
1)
Fvck the books. Books are great, they teach the facts, but that's all. If you rely on books, your ass might as well start working on something that actually requires multiple books - say, do you wanna learn theoretical quantum physics?
2)
Read and write actual code. Download some pre-written, semi-complex code (my personal suggestion -
CircleMUD. Now, don't get me wrong, I'm not advocating major MUD playing, but a few years ago when I started programming in C/C++, I did so to program a MUD. I've stopped the MUD programming, but just dealing with the efficient, annoying code has taught me many lessons. Being able to see others' code and their tricks also helped.
3)
Try it yourself. First, what do you want to do? Make games? Make business apps? Make windows-related apps? Whatever you want to do, just try to make it. Figure out what needs to be done, and how. Chances are someone has already done some, if not all, of what you want to do (the internet is a big place, and search engines are great. Learn them. Love them).
4)
Do other stuff. When you get bored, do something else. Play a game, go to work, school, etc. As tempting as it is to stare at code for hours, the light which burns brightest burns fastest (or something like that), and you could find yourself frustrated at the whole ordeal.
Once again, this goes against what most people say, but that could be why most people give up on programming: because it's (or seems) "too hard". Will this work for you? Maybe, maybe not.