Having a good mental model of your programming environment
This also does a lot to cut down on cargo cult programming [1] which in my experience is much more prevalent than I would like. Having a solid understanding of the environment you're working with makes it much harder to blindly follow the examples of others, because it's much easier to determine whether or not all/part/any of their example applies to your situation.