Design patterns are typical solutions to commonly occurring problems in software design. They are like pre-made blueprints that you can customize to solve a recurring design problem in your code.
I often ask myself, what's the difference between those developers with different years of experience? If I know clear about it, it gonna be much easier to improve accordingly.