I think just as, if not more, important when you're learning is to understand not just what to do but
why you do things in certain ways. Your understanding of why people recommend doing things in certain ways can be broadened by also studying the consequences of not following their advice. In other words, look for counter-examples that show you what happens if you don't do the right thing.
Language documentation focuses mainly on syntax and technical details related to the language itself. Good programming goes far beyond those mechanics. So, for me, after you've studied the "official documentation" and become comfortable enough with language syntax and constructs, you really should strive to dig deeper into the
principles of programming itself and start developing your own sense of what's "right" and "wrong" by studying and understanding books like Bloch's
Effective Java Programming, which I think does a lot better at explaining the
why of good practices. Another book that gives a lot of insights about the motivations for doing things in certain ways is Martin Fowler's
Refactoring.
Lastly, while reading good books is important, nothing beats actual practice. Programming is like swimming: You can only learn so much by watching other people do it. To really learn how to swim, however, you have to get in the
water and do it yourself. So, practice, practice, practice. But practice mindfully and thoughtfully.