My current strategy is to learn by watching others implementing code, to expose myself to as much code as possible, in as many different contexts as possible.
Having a strong understanding of code is a lot about recognising patterns and their contexts.
You can only gain this by experiencing a lot of patterns and a lot of contexts.