• Home
  • BVSSH
  • Engineering Enablement
  • Playbooks
  • Frameworks
  • Good Reads
Search

What are you looking for?

Practice : Evolutionary Architecture

Purpose and Strategic Importance

Evolutionary Architecture is a design approach that enables software systems to adapt to changing requirements, technologies, and organisational contexts over time. It promotes modularity, testability, and the ability to evolve without wholesale rewrites - supporting long-term sustainability and resilience in fast-changing environments.

This practice is essential for maintaining momentum in digital transformation, aligning architecture with business evolution, and avoiding architectural stagnation.


Description of the Practice

  • Emphasises incremental change over static designs or "big bang" rearchitecture.
  • Uses fitness functions to measure architectural qualities and guide decisions.
  • Supports practices like domain-driven design, continuous delivery, and microservices.
  • Architecture is treated as code - versioned, tested, and regularly improved.
  • Encourages cross-functional collaboration between engineering, product, and architecture stakeholders.

How to Practise It (Playbook)

1. Getting Started

  • Define architectural goals (e.g. modularity, scalability, performance) and how to measure them.
  • Identify tight couplings or inflexible layers that slow change.
  • Apply techniques like layering, abstraction, and bounded contexts to decouple systems.
  • Start refactoring incrementally to isolate modules, expose APIs, or clarify ownership.

2. Scaling and Maturing

  • Use fitness functions (automated tests or heuristics) to evaluate architectural compliance (e.g. dependency structure, latency budgets, domain isolation).
  • Invest in architectural observability - monitor cohesion, coupling, and decision lag.
  • Pair architectural decisions with business outcomes - evolve based on real feedback.
  • Share decision records and architectural goals across teams (e.g. ADRs, roadmaps).
  • Maintain a balance between intentional design and emergent structure.

3. Team Behaviours to Encourage

  • Challenge "we’ve always done it this way" thinking.
  • Make architecture part of the daily conversation - not an isolated role.
  • Evolve incrementally, celebrate modularity and clean boundaries.
  • Collaborate on technical strategy and architecture as a community of practice.

4. Watch Out For…

  • Architectural drift without clear direction or measurement.
  • Over-abstracting or future-proofing prematurely.
  • Lack of visibility into technical debt or decision history.
  • Design stagnation from fear of change or unclear ownership.

5. Signals of Success

  • Systems evolve easily in response to new requirements.
  • Architecture improves iteratively through active stewardship.
  • Technical decisions are intentional, traceable, and just-in-time.
  • Teams feel confident experimenting without compromising system integrity.
  • Architecture enables - not blocks - business agility.
Associated Standards
  • Codebases consistently meet high standards of quality
  • Developer workflows are fast and frictionless
  • Teams frame and plan work around outcomes, not outputs
  • Product and engineering decisions are backed by live data
  • Systems recover quickly and fail safely

Technical debt is like junk food - easy now, painful later.

Awesome Blogs
  • LinkedIn Engineering
  • Github Engineering
  • Uber Engineering
  • Code as Craft
  • Medium.engineering