Why is composing symphonies tough? I don't know. It's just very few people in the world can do it well. And I think that's the case with upfront design. It is very hard to do well.
Martin FowlerWhen you actually sit down to write some code, you learn things that you didn't get from thinking about them in modeling terms...there is a feedback process there that you can only really get at from executing some things and seeing what works
Martin FowlerA pattern is an idea that has been useful in one practical context and will probably be useful in others.
Martin Fowler