← All heuristics

Design heuristics

Heuristics we use to solve a specific problem.

Browse the collection

Design

How can we lower coupling from between bounded contexts or systems

A bounded context should keep its internal details private

More info →
Design

How should you approach defining team boundaries when migrating a legacy monolith?

Accept Imperfect Boundaries in Legacy Decomposition

More info →
Design

How do I design Bounded Contexts?

Align bounded context with the value stream

More info →
Design

How do I design Bounded Contexts?

Align with domain experts

More info →
Design

How do I design a bounded context?

Align with evolutionary stage (the Simon Wardley heuristic)

More info →
Design

How do I design a bounded context?

Align with growth strategy

More info →
Design

How do I design a bounded context?

Align with historical domain boundaries

More info →
Design

How do I design a bounded context?

Align with investment strategy

More info →
Design

How do I design a bounded context?

Align with key revenue streams

More info →
Design

How do I design a bounded context?

Align with rate of change

More info →
Design

How do I design a bounded context?

Align with source of change

More info →
Design

How do I design a bounded context?

Align with transactional boundaries

More info →
Design

When should I build software myself, or buy it off the shelve?

Build software for disruptive generic subdomains yourself

More info →
Design

How can we make our decision records more holistic and context-rich?

Capture Both Logic and Sentiment in Decisions

More info →
Design

When a deployment causes an outage, should you revert or try to fix it in production?

Default to rollback rather than fix-forward

More info →
Design

How can I distil bounded context after an EventStorming session?

Design Bounded Contexts around EventStorming Policies

More info →
Design

How can I distil bounded context after an EventStorming session?

Design bounded contexts by looking at the humans during a big picture EventStorming

More info →
Design

How can I distil bounded context after an EventStorming session?

Design bounded contexts by looking at the one-way flow of orange sticky notes during a big picture EventStorming

More info →
Design

What non-functional attributes are critical for maintaining quality in complex, modern systems?

Design for Modern Quality Attributes

More info →
Design

How can I make projection more adaptable?

Design for replayability

More info →
Design

How can we determine if an event is a valuable Domain Event or just technical noise?

Domain Events Must Carry Their Own Context

More info →
Design

How do you know if an architectural change will actually improve the team's situation?

Evaluate architectural options against actual team pain points

More info →
Design

How do you know if a technical modernization will actually improve the team's situation?

Evaluate architectural options against team frustrations

More info →
Design

How do I design a bounded context?

Isolate high-leverage shared capabilities

More info →
Design

How can I let my domain model be decoupled from technical complexity?

Keep your domain model decoupled from frameworks

More info →
Design

How can we detect if our decision-making process has become dysfunctional or is being weaponised?

Measure the Flow of Decision Making

More info →
Design

How do we allocate our limited quality and testing budget across a large, complex system?

Modulate Quality Investment by Domain Importance

More info →
Design

How do I design a bounded context?

Optimise for future potential

More info →
Design

How do I design a bounded context?

Organise for responsiveness in differentiator capabilities

More info →
Design

When should I build software myself, or buy it off the shelve?

Outsource generic subdomains

More info →
Design

In modern distributed systems, where should we focus our efforts: defect prevention or incident recovery?

Prioritise Recoverability Over Flawless Deployment

More info →
Design

How do we resolve conflicts between a team's desire for local implementation convenience and broader architectural principles?

Prioritise System Integrity Over Local Convenience

More info →
Design

How do you limit the blast radius of canary deployments and experiments?

Recognize that global metadata creates global risk

More info →
Design

How do you shift focus from existing technical constraints to core business problems in a design discussion?

Reframe Problem Context

More info →
Design

How do I design a bounded context?

Separate engagement and revenue

More info →
Design

How should architects effectively communicate complex design and architectural concepts to diverse stakeholder groups?

Tailor Communication to Stakeholder Context

More info →
Design

How can we build quality in, rather than inspecting for it at the end of the process?

Treat Quality as an Emergent Property

More info →
Design

How can you guide autonomous teams to make sound decisions without direct command?

Use Architecture Principles as Decision Guardrails

More info →
Design

When can it be appropriate to use ORM mapping in my domain model?

Use ORM in your domain model when rate of change is low

More info →
Design

When and how should teams document their architectural decisions?

Write Down Decisions Early and Often

More info →