Just been reading an interesting article by Kent Beck in this months Pragprog over at Pragmatic Programmers
http://pragprog.com/magazines/download/3.pdf
The temptation is to put these design ideas in the system now because you just know you’ll need them eventually. Over-designing early leads to delaying feedback from real usage of the system, makes adding features more complicated, and makes adapting the design more difficult. By the same token, under-designing makes adding features more complicated, increases defects, and makes adapting the design more difficult.



