Everyone by now presumably knows about the danger of premature optimization. I think we should be just as worried about premature design - designing too early what a program should do.
I have known a few good marriages, but very few. And others look to me like they're pretty miserable. I don't really think that's a recipe for happiness.