The Problem with Design Patterns
The biggest mistake that up and coming software developers make is to think about a pattern first, then use that design pattern in their final solution.
This is the biggest mistake that you can make in your design, design patterns should reveil themselves. Otherwise there is a danger of forcing a design pattern where it does not belong. Many great software solutions are as a result of good judgement (something you learn over time) before cherry-picking a Design Pattern off the shelve