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.