Good Software Architecture embodies several Lean and Agile principles, always with the same goal of long-term productivity and lightweight feature development.

Delaying structural decisions will outcome in undisciplined structure, which in turn outcomes in waste. Therefore we must think of Software Architecture as an investment that we need to make now to get medium and long term gain.

What Architecture is about:

It’s much more about structure than code;

It’s about considering system entities with relationships and attributes but relying on standards and domain knowledge to keep a small cognitive load;

It’s not about solving user problems directly, but helping to solve them by providing the system with the flexibility that allows it to change;

Has a more stable structure based on the domain, what the system is;

Has a more dynamic structure based on the UI, what the system does;

Architecture is everybody’s job because we can contribute with domain knowledge, technical knowledge or simply by maintaining it in place;

Architecture and Lean

Lean is about eliminating waste, and Architecture helps in this because:

Architecture will define standards which reduce inconsistencies, and avoids time and energy waste in recurring issues and discussions;

Architecture sets up the system for dummy-proof feature development, reducing time and energy waste in recurring issues and amount of repetitive boilerplate;

Architecture organises the code so that it can speak for itself, reducing time and energy waste in writing extensive documentation;

Architecture and Agile

Agile is about embracing changes that arise from latent or emergent requirements, and Architecture helps in this because:

Architecture prepares the system for change;

Architecture divides the system into segments that allow the teams that work on them to be autonomous, which in turn allows them to be more responsive to change;

This post is part of a set of posts with my personal notes about all the chapters in the book “Lean Architecture for agile software development” by James Coplien and Gertrud Bjornvig. I will do this as I read through the book, and take notes on the concepts I personally find more relevant.