I'm not sure if this helps you out or not, but I've found working through practice problems, such as Project Euler, to be helpful.
I still find it entirely fascinating, I'm putting a post up tomorrow with what I learnt from problem one.
Another benefit of Project Euler is, after you solve the problem, you can discuss different approaches to the problem in different languages with other people who have solved it. Reviewing these discussions can help to see if there are other ways to code the program which may not have occurred to you.