I've been working as a developer for a while now but I work a lot on small bugs or on established products - how should I go about learning larger designs and design patterns? I feel like my knowledge is lacking in this area.