Honestly, I fail to see why anyone would waste their money on a programming book if they've got an internet connection. I don't think I've looked at a programming book in years - I just reach for google.

The best way to learn is this:-
10. Think of an application you'd like to write
20. Try to write it
30. Resolve all the bits you got stuck on using google
40. GoTo 10

If, somewhere in that process, you can get someone else to set your requirements then so much the better because it'll force you into areas you wouldn't otherwise explore. Other than that it's just about practice.