"...Actually, if you start with the patterns, I find you often over-engineer your system; in that sense, they're better for refactoring." - Joshua Kerievsky
Originally posted by Kyle Brown:
So, what Josh is saying is that you shouldn't say "Let's use all the patterns we can!" Instead, design to solve the problem at hand. The patterns will emerge from the design as you start looking for commonalities between different parts of the system. Hence, his refactoring comments...
The same with patterns: they lead to complex code- hard to maintain. If patterns are incorrectly used- with the learning curve involved- that is often the case- things get worse.
The XP world is pretty much all for simplying programming and suggest that you avoid patterns- Use patterns when you actually need them.