In my experience working with junior engineers, design patterns seem to be kind of a toxic concept to teach about without the right guardrails, such that I'd almost say newer engineers should totally skip books/materials about design patterns for quite a while into their career. Most of the time you do not need them, and the times you do, usually (if you're in the code enough) you start to get a feel for what sucks and what doesn't suck about the process you're currently using. Again IME design patterns are more practical to learn about as-needed as opposed to up front. Otherwise you get preemptive junior-eng versions of AbstractSingletonProxyFactoryBean everywhere.