I often find myself reading books and articles that outline patterns, best practices, and how to write "clean code." However, some of these concepts just seem to be over engineered and at times obscure the essence of the underlying problem, making the code more difficult to relate to the problem domain being modeled.
How often do you find yourself refactoring a piece of code that works well in favor of a "pattern?" Have you encountered a situation where the "pattern" actually complicated the code or obscured its meaning? I felt this way a while back after seeing a solution to a problem I solved with a simple class rewritten using lambdas and closures.
I struggle with this and I'm curious how others approach find the right balance.