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 do not think that there is any other quality so essential to success of any kind as the quality of perseverance. It overcomes almost everything even nature.