Summary of "What Software Architecture Should Look Like • Dave Farley • GOTO 2022"

Core thesis

Software architecture should be evolutionary and pragmatic, not an all-knowing upfront blueprint. Treat architectural choices as experiments and guide the system by changing constraints (the “rules of the road”) as you learn. Architecture is the set of agreed constraints and shared understanding among developers that steer design and protect you from major mistakes — a snapshot that should be expected to change.

Key concepts and recommendations

Illustrative examples and cautionary tales

Practical “how-to” checklist

  1. Start with reasonable guesses and treat them as falsifiable experiments.
  2. Create and use a “tourist map” to make the current architecture explicit and communicable.
  3. Identify seams and uncertainties early; sketch lightweight abstractions or prototypes for them.
  4. Compartmentalize cross-cutting concerns and make these behaviours visible design goals.
  5. Prefer iterative, incremental evolution over big upfront design — but do design something up front (no-design is not an answer).
  6. Use proven architectures when they fit, but validate assumptions and constraints for your context.
  7. If adopting microservices, ensure services/components are truly independently deployable.
  8. Aim for a small set of rigid constraints the team respects; keep other areas flexible.

References and resources

Main speakers and sources referenced

Category ?

Technology


Share this summary


Is the summary off?

If you think the summary is inaccurate, you can reprocess it with the latest model.

Video