To me this is the most important thing i have learned in 15 years of coding. Its also the reason why I hate interview "tests", I don't come up with a good design straight away. I prefer to get in idea of what is needed, then think about it for a few days while working on other stuff.