#212 – The Target Architecture

If we want to be agile in our product development, we must take a less waterfall-like approach to defining our architectures, as well. Traditionally, the architecture was fully defined after the initial analysis and requirements phases before coding would start (the Big Design Up Front approach); it was even seen as a success if the architecture didn’t have to change—just like if the requirements and design didn’t change—as rework is expensive.

Today, most domains and markets are very dynamic, and product development complex. Therefore, this notion of successfully defining a detailed target architecture up front doesn’t hold. Instead, our work with architecture needs to be continuous, and the architecture should be made in a way so that it’ll embrace change and evolve as needed—just like the product, itself, should when existing in a dynamic context with unpredictable changes.