You've already done the up-front design

There's an ongoing debate in the software development community about the necessity for up-front design. One camp feels that detailed up-front design of every application is absolutely necessary if we are to deliver high-quality results. The opposing camp feels that very lightweight up-front design is sufficient to get things started, and that a robust design can emerge incrementally as development progresses.

I think the level of up-front design that is appropriate for a given solution depends on circumstances. When working in a familiar domain with familiar technologies on a problem that is basically a variation on a familiar theme, why spend a lot of time and effort on a comprehensive up-front design? We already have (a) past experirence, (b) reference architectures, (c) design patterns, (d) software engineering principles, and possibly (e) enterprise standards. We should spend our up-front design time on aspects of the solution that are new, innovative, or unique. As for the rest...we've already designed those parts, probably many times over.

full version