Plan up front, or design as you go?

There’s a spectrum between planning everything out before you touch a keyboard and planning nothing out in advance and start coding.

Planned Design, in its strictest forms, would be to use UML and other techniques to line out all the decisions that will govern the high-level behavior of a system.

Evolutionary Design, in its strictest forms, would be to have a vague idea of what you need to do, then start hacking you way toward it. Expecting you’ll have to refactor frequently.

The best place to be is somewhere in the middle. This is called by a few folks “Extreme Programming”.


Source

Source

Is Design Dead?