Gotta be honest, the best way is practial, you can read as many books giving you scenarios and how they fixed them, but the reality is if you want to become good, you commit lots of time.
Anything you get stuck on can be found online for free.. either documentation or help sites like stackoverflow.