So How’s It with Architecture - Up-Front Design or Evolutionary Architecture?

Table of Contents

So How’s It with Architecture - Up-Front Design or Evolutionary Architecture?

Where does architecture currently stand? We can say that there are two classic approaches:

  • The classical approach, which requires carefully planning as many details as possible (up-front);
  • The agile approach, which dictates making decisions as late as possible and developing architecture through refactoring.

How does this usually happen in projects? In many cases, a more or less detailed project is created in the up-front style and remains that way. On the other hand, relying solely on organic development of good architecture through natural evolution usually also fails. In large projects, it is extremely risky as it often leads to local solutions that should be rewritten at some stage (which usually does not happen).

In practice, a mixed approach works best. At the beginning of a project, release, or iteration, a concept and design of a solution is created, which serves as the basis and reference point for project work. This project does not have to be, and even should not be, exceedingly detailed. On the other hand, we should not assume that what was devised at the outset will be a perfect solution. Consequently, during the project work, we make ongoing local modifications to the design assumptions through refactoring.

By doing so, we obtain a natural process of architectural development. Initially, it is pre-designed, which prevents us from wasting time and resources on evolutionary wandering. We use evolution to improve the original design. If we link this with the process of Natural Order refactoring, we are in luck! More on that in future posts.

The process sketch looks as follows:

(Sketch image removed)

(Text translated and moved from original old blog automatically by AI. May contain inaccuracies.)

Related Posts

The Hacker Way

A few days ago, Paweł Wrzeszcz sent me Erik Meijer’s talk “One Hacker Way” (watch here) from the GOTO Conference in Copenhagen. It is a very provocative talk, which is great. It questions the Scrum method and challenges the status quo in Agile. Given that Scrum is a dominant framework in software development, a critical view is healthy, especially as Agile has become a significant business machine over the past 20 years. When implementing Agile at Scale, core ideas can easily become distorted. (Check out Dave Thomas’ “Agile is Dead” talk here).

Read More

Two Structuring Meetings Patterns

As I describe in my book, it is beneficial to structure meetings (or parts of meetings) to make them more effective. Here are two examples useful for planning meetings, applicable in Scrum and adaptable to other contexts.

Read More

Don't Let Conflicts Overwhelm You

Introduction

During a job interview, a candidate for a team leader position once mentioned that he managed to fulfill his role without conflicts. This statement raises suspicions. A lack of conflicts is a symptom that requires special attention. Project life is full of conflicts, and it is crucial to let them occur so that solutions satisfying both parties can be found.

Read More