There is something I like a lot about Go and is that all the things I learnt about the game can be applied to everyday things in this life.
The Joseki in go is a sequence of moves at the corner that are supposed to be "correct" and balanced for both players. While listening to the last Ruby Rogues podcast I couldn't get out of my mind a proverb applied to go.
Learning Joseki loses two stones strength -- Studying Joseki gains four stones strength
This can be also applied to design patterns in code. Learning them is useful but applying them blindly is just bloat and nonsense. Design patterns are patterns that arise in a lot of codebases and are a good tool to help us to communicate with other programmers. They are not "the correct solution".
I liked something David Heinemeier Hansson said. It was that using a pattern is only useful if the outcome is better that without using it. After seeing this written it looks maybe stupid but there are a lot of times that we try to organize, patternize, and write are code in an unnatural way just because is the "correct solution".
There are no correct solutions in software. We often lose focus with that and forget to get to the solution that just looks better no matter how academically correct is.