
Heuristics
More info →We all use heuristics (even if we haven't articulated them to others) to discover, understand, explore, create, modify, or extend complex software systems. Billy Vaughn Koen, in Discussion of the Method: Conducting the Engineer's Approach to Problem Solving, defines a heuristic as, "anything that provides a plausible aid or direction in the solution of a problem but is in the final analysis unjustified, incapable of justification, and potentially fallible."
— Rebecca Wirfs-Brock —
Browse the collection
How can we lower coupling from between bounded contexts or systems
A bounded context should keep its internal details private
More info →GuidingWhen is an architectural decision considered final and effective?
A Decision Is What Gets Implemented
More info →DesignHow should you approach defining team boundaries when migrating a legacy monolith?
Accept Imperfect Boundaries in Legacy Decomposition
More info →GuidingHow can we document a decision while acknowledging disagreement or known trade-offs?
Acknowledge Downsides and Dissent in Decisions
More info →GuidingHow can a senior team member critique code publicly without causing shame or demotivation?
Acknowledge Power Dynamics in Public Code Critique
More info →GuidingHow should we document decisions influenced by interpersonal or inter-team conflict?
Acknowledge Significant Conflict in Decision Rationale
More info →GuidingHow should you handle someone whose behavior is disrupting a session without making things worse?
Address destructive behavior in private conversations
More info →GuidingHow do you move forward when team members disagree with a decision but must commit to it?
Address Dissent by Enabling Commitment
More info →GuidingWhat do you do when you detect a fundamental disagreement on the workshop's goal during the session?
Address Goal Misalignment Mid-Session
More info →DesignHow do I design Bounded Contexts?
Align bounded context with the value stream
More info →GuidingHow should our approach to quality evolve as a product or feature matures?
Align Quality Strategy with Product Lifecycle Phase
More info →DesignHow do I design Bounded Contexts?
Align with domain experts
More info →DesignHow do I design a bounded context?
Align with evolutionary stage (the Simon Wardley heuristic)
More info →DesignHow do I design a bounded context?
Align with growth strategy
More info →DesignHow do I design a bounded context?
Align with historical domain boundaries
More info →DesignHow do I design a bounded context?
Align with investment strategy
More info →DesignHow do I design a bounded context?
Align with key revenue streams
More info →DesignHow do I design a bounded context?
Align with rate of change
More info →DesignHow do I design a bounded context?
Align with source of change
More info →DesignHow do I design a bounded context?
Align with transactional boundaries
More info →GuidingHow should one manage expectations regarding the speed at which individuals adopt new perspectives or accept change?
Allow Time for Perspective Shifts
More info →GuidingWhen should I formalise with the Gherkin script?
Always write Gherkin
More info →GuidingAs a leader, how can I support a team's decision without taking ownership of it?
Amplify Team Decisions with Organisational Capital
More info →GuidingWhat is the role of an architect in a decentralized decision-making model?
Architects as Enablers, Not Gatekeepers
More info →GuidingHow do you ensure a decision is successfully adopted by the team after it has been made?
Ask What Does It Take To Go Along with a Decision
More info →GuidingHow should a newly autonomous team approach its first major decisions?
Autonomy Requires a System-Wide Perspective
More info →GuidingHow can we avoid the frustration of performative collaboration when a decision has already been made?
Be Explicit About Decision-Making Authority
More info →GuidingHow do you create the conditions where people feel safe enough to contribute honestly?
Build connection before diving into content
More info →GuidingHow do you create an environment where people will speak up during a crisis?
Build psychological safety through how you handle small failures
More info →DesignWhen should I build software myself, or buy it off the shelve?
Build software for disruptive generic subdomains yourself
More info →GuidingHow should one approach potentially confrontational or emotionally charged conversations with key stakeholders?
Calculated Interpersonal Risk-Taking
More info →DesignHow can we make our decision records more holistic and context-rich?
Capture Both Logic and Sentiment in Decisions
More info →GuidingHow do you know if participants actually agree with the workshop's purpose before you start?
Challenge the workshop premise before diving in
More info →GuidingHow do you know if something you find problematic is actually blocking the group's progress?
Check if the problem hinders you or the group
More info →GuidingHow do you avoid creating problems for teams that deploy and test your software?
Consider downstream teams when choosing architectural patterns
More info →Value-basedHow do we ensure that recorded decisions are actually implemented?
Cultivate Ownership for Decision Accountability
More info →GuidingHow can we prevent a single disagreement from blocking a large, complex decision?
Decompose Large Decisions into Smaller Ones
More info →Value-basedHow can we make it safe for people to speak up?
Deep Democracy: No one has the monopoly to the truth
More info →DesignWhen a deployment causes an outage, should you revert or try to fix it in production?
Default to rollback rather than fix-forward
More info →Value-basedHow should we define and measure quality when it is inherently subjective and context-dependent?
Define Quality as Value to a Prioritised Persona
More info →GuidingHow do you communicate critical, potentially uncomfortable insights to absent or misaligned stakeholders after a workshop?
Deliver Ground Truth Post-Session
More info →DesignHow can I distil bounded context after an EventStorming session?
Design Bounded Contexts around EventStorming Policies
More info →DesignHow can I distil bounded context after an EventStorming session?
Design bounded contexts by looking at the humans during a big picture EventStorming
More info →DesignHow 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 →GuidingHow do you help people understand complex system changes when explanations and models aren't landing?
Design experiences instead of explaining more
More info →DesignWhat non-functional attributes are critical for maintaining quality in complex, modern systems?
Design for Modern Quality Attributes
More info →DesignHow can I make projection more adaptable?
Design for replayability
More info →GuidingHow should you handle decisions that replace your own previous work?
Detach Personal Emotion from Technical Decisions
More info →GuidingHow can one foster objective discussion and collaboration without personalizing design or change initiatives?
Detach Self from Ideas
More info →Value-basedHow do we prioritize which design battles to fight and which to concede?
Distinguish Between Tigers and Mice in Design
More info →GuidingHow do you structure incident response when no single team has all the answers?
Distribute debugging authority beyond the war room
More info →DesignHow can we determine if an event is a valuable Domain Event or just technical noise?
Domain Events Must Carry Their Own Context
More info →GuidingHow do you know when your facilitation technique is preventing rather than enabling collaboration?
Drop the methodology when it becomes the barrier
More info →GuidingHow can we create a collaborative advising culture instead of criticism?
Engage Advisors During, Not After, Deliberation
More info →DesignHow do you know if an architectural change will actually improve the team's situation?
Evaluate architectural options against actual team pain points
More info →DesignHow do you know if a technical modernization will actually improve the team's situation?
Evaluate architectural options against team frustrations
More info →GuidingHow do we wrap up a dot voting at a big picture EventStorming?
EventStorming: Add minority wisdom to decision
More info →GuidingWhen do we have enough details in an EventStorming?
EventStorming: Add more details with invisible conversations.
More info →GuidingHow can we discover more edge cases during an EventStorming session?
EventStorming: Ask is this always the case on policy
More info →GuidingHow many people can we have during an EventStorming?
EventStorming: Do big picture EventStorming on a single paper roll
More info →GuidingWhen running EventStorming workshops, duplication is not evil.
EventStorming: Don't be shy on duplicating stickies
More info →GuidingHow can we get new insight during an EventStorming session?
EventStorming: Don't fill in the gaps
More info →GuidingHow can we start structuring a Big Picture Eventstorming after a chaotic exploration?
EventStorming: Emerging pivotal events for a Big Picture
More info →GuidingExplore all the edge cases and what happens when things go wrong.
EventStorming: Explore what-if scenarios
More info →GuidingHow do we introduce new colours during an EventStorming?
EventStorming: Introduce new colours iteratively
More info →GuidingWho removes stickies during an EventStorming?
EventStorming: Lead by example and remove stickies as facilitator
More info →GuidingHow can we lower political play and let everyone feel heard with dotvoting in a big picture EventStorming?
EventStorming: Let everyone pitch there biggest constraint or opportunity
More info →GuidingIf only the domain experts has the knowledge, how can we transfer that knowledge the most effectivly and also challenge their assumption of the knowledge?
EventStorming: Let the domain expert talk and the rest write down domain events
More info →GuidingHow do we make people comfortable with iterative modelling?
EventStorming: Make a ceremony of throwing things away
More info →GuidingHow many conversations can a single facilitator keep track of?
EventStorming: One (co-)facilitator for every 15 participants
More info →GuidingWhen to remove stickies?
EventStorming: Only remove stickies when discussed with the writer
More info →GuidingHow do we introduce new colours during an EventStorming?
EventStorming: Play by the colour coding pattern
More info →GuidingHow many people can we have during an EventStorming?
EventStorming: Split and merge above 7 people on process and design level
More info →GuidingHow do we visualise competing ideas during an EventStorming?
EventStorming: Split and merge during converging discussions
More info →GuidingWhen do we start to structure the EventStorming by enforcing the timeline
EventStorming: Start enforcing the timeline when everyone added their domain events
More info →GuidingWhen do we switch to example mapping from EventStorming?
EventStorming: Switch to Example Mapping when discussing examples of business rules
More info →GuidingWhen shall I use process modelling eventstorming for as-is discovery of my problem space?
EventStorming: Use as-is process modelling when exploring a brown field problem space
More info →GuidingHow can we foster collaboration during design?
EventStorming: Use standing table
More info →GuidingWhen shall I use process modelling eventstorming for to-be discovery of my problem space?
EventStorming: Use to-be process modelling when exploring a green field problem space
More info →GuidingWhen should I use EventStorming?
EventStorming: When there is a story to tell, start with EventStorming
More info →GuidingHow do you facilitate decisions when conflicting priorities or user needs emerge?
Explicitly Navigate Trade-offs
More info →GuidingHow should you handle architectural decisions that impact multiple team boundaries?
Facilitate Communication to Resolve Boundary Conflicts
More info →GuidingWhat is the most effective stance for an architect when driving significant architectural change?
Facilitate, Don't Dictate, Architectural Change
More info →GuidingHow do you gain organizational support for uncertain architectural experiments?
Focus on outcomes the organization values most
More info →GuidingHow can we break down knowledge silos between autonomous teams?
Formalize Architectural Advice Forums for Cross-Context Awareness
More info →GuidingHow do you get teams to buy into and maintain strategic models like a context map?
Frame Boundary Models for Autonomy and Flow
More info →Value-basedHow do you deliver challenging feedback or uncomfortable truths to stakeholders without alienating them?
Frame Difficult Truths with Mutual Success
More info →GuidingHow should we evaluate the purpose and effectiveness of our testing efforts?
Frame Testing as an Information-Gathering Activity
More info →GuidingHow can we prevent design discussions from becoming a personal conflict between two competing ideas?
Generate at Least Three Options to Depersonalise Design Debates
More info →GuidingHow do we enable a team to make an informed decision when they lack direct experience with the options?
Generate Experience Through Practical Experimentation
More info →Value-basedHow should participants approach a facilitator who appears to be struggling or has made a mistake?
Grant Grace to Facilitators
More info →GuidingHow should senior architects support newly empowered teams?
Guide Decisions, Do Not Dictate Solutions
More info →GuidingHow do you guide people toward different architectural approaches without simply imposing your solution?
Interrupt thinking patterns while staying with the flock
More info →GuidingHow can we introduce new ideas that conflict with a team member's deeply held beliefs?
Introduce Change as an Evolution, Not Revolution
More info →DesignHow do I design a bounded context?
Isolate high-leverage shared capabilities
More info →DesignHow can I let my domain model be decoupled from technical complexity?
Keep your domain model decoupled from frameworks
More info →GuidingWhat role should leadership play during a major incident?
Let executives provide resources without applying pressure
More info →GuidingHow do you steer a workshop back on track when discussions diverge from the intended outcome?
Leverage Aligned Goals for Direction
More info →GuidingWhere should an organization begin its journey toward systems change and more effective decision-making?
Make decisions transparent
More info →GuidingHow do you help a group move forward when everyone seems frozen or unable to participate?
Make explicit feelings when the group is stuck
More info →GuidingHow do we align teams who have different, unstated assumptions about what quality means?
Make Implicit Quality Perspectives Explicit
More info →GuidingHow can a team effectively challenge and align their different internal understandings of a problem?
Make the Implicit Mental Models, Explicit for Objective Collaboration
More info →DesignHow can we detect if our decision-making process has become dysfunctional or is being weaponised?
Measure the Flow of Decision Making
More info →GuidingHow should we evaluate a design solution that seems deceptively simple or easy?
Mistrust Simplicity Achieved Without Thought
More info →DesignHow do we allocate our limited quality and testing budget across a large, complex system?
Modulate Quality Investment by Domain Importance
More info →GuidingHow do you recognize when your own anxiety is preventing you from addressing what the group needs?
Notice anxiety as signal you're missing something
More info →GuidingHow do you know when something beneath the surface is blocking a session?
Notice when you work too hard as facilitator
More info →DesignHow do I design a bounded context?
Optimise for future potential
More info →DesignHow do I design a bounded context?
Organise for responsiveness in differentiator capabilities
More info →DesignWhen should I build software myself, or buy it off the shelve?
Outsource generic subdomains
More info →Value-basedWhen a design or leadership decision inadvertently harms a team member, what is the correct response?
Own Mistakes and Repair the Social Fabric
More info →GuidingHow can a participant constructively help an unprepared or misdirected facilitator without overstepping boundaries?
Participant-Led Course Correction
More info →GuidingHow do you create regular opportunities for people to voice doubts without disrupting flow?
Pause every ten minutes to invite dissent
More info →GuidingWhat should you do when you do not agree with a team’s decision?
Permit Contained Failure to Foster Learning
More info →GuidingHow do you ensure all key stakeholders share a common understanding of a workshop's purpose and desired outcome?
Pre-Align on Workshop Intent
More info →GuidingHow should you handle varying levels of adoption for decision recording across teams?
Prioritise Documenting Impact Over Process Consistency
More info →Value-basedWhen faced with a conflict between hierarchical directives and the team's judgment, where should loyalty lie?
Prioritise Foundational Trust in the Team
More info →DesignIn modern distributed systems, where should we focus our efforts: defect prevention or incident recovery?
Prioritise Recoverability Over Flawless Deployment
More info →Value-basedHow should architects justify and prioritize time spent on stakeholder communication and understanding?
Prioritise Stakeholder Engagement as Core Work
More info →DesignHow 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 →GuidingWhere should a team focus its initial energy when tackling a new design problem?
Prioritize Shared Context Before Exploring Solutions
More info →GuidingWhat should a facilitator do when a team member is too uncomfortable or fearful to make a required decision?
Proxy Accountability to Unblock Decisions
More info →DesignHow do you limit the blast radius of canary deployments and experiments?
Recognize that global metadata creates global risk
More info →DesignHow do you shift focus from existing technical constraints to core business problems in a design discussion?
Reframe Problem Context
More info →GuidingHow do we keep the interaction going in a remote EventStorming?
Remote EventStorming: Switch driver every 5 minutes during enforcing the timeline
More info →Value-basedHow should we handle team members who consistently remain silent or disengaged during decision-making processes?
Respect Apathy in Decision-Making
More info →GuidingHow should one approach existing legacy systems during modernization efforts?
Respect Legacy Systems' History
More info →GuidingHow do we handle critical, undocumented decisions made in the project's past?
Retroactively Document Foundational Decisions
More info →GuidingHow do we know if a long-standing architectural constraint is still valid?
Revisit Decisions When Context Changes
More info →DesignHow do I design a bounded context?
Separate engagement and revenue
More info →GuidingHow do you introduce collaborative modeling when leadership sees it as wasted time?
Start small when leadership resists collaborative sessions
More info →GuidingWhat should you do when you feel overwhelmed or triggered during a facilitation session?
Step back and observe when losing control
More info →GuidingHow do you understand a model deeply enough to know if it fits your context?
Study models by extracting their building blocks and values
More info →Value-basedHow do you prevent technical preferences from dominating architectural decisions?
Surface value-based preferences before choosing technical solutions
More info →DesignHow should architects effectively communicate complex design and architectural concepts to diverse stakeholder groups?
Tailor Communication to Stakeholder Context
More info →Value-basedWhat should be the primary goal when facilitating a design discussion, especially during a disagreement?
The Goal Is the Right Outcome, Not Being Right
More info →GuidingHow should we manage the evolution of a decision over time, especially when it is reversed?
Treat Decisions as Immutable Historical Records
More info →Value-basedHow do you prevent architectural decisions from becoming unmaintainable haunted graveyards?
Treat design as living conversation, not frozen artifact
More info →DesignHow can we build quality in, rather than inspecting for it at the end of the process?
Treat Quality as an Emergent Property
More info →GuidingHow should we react when team members push back against a proposed design or practice change?
Treat Resistance as a Valuable Signal
More info →GuidingHow should we handle strong, potentially biased opinions in an advisory forum?
Treat Strong Opinions as Inquiry Signals
More info →GuidingHow should one address strong resistance from key stakeholders during significant change initiatives?
Understand the cause of Resistance
More info →GuidingWhen is the right time to write an Architecture Decision Record?
Use ADRs for Thinking, Not Just Recording
More info →DesignHow can you guide autonomous teams to make sound decisions without direct command?
Use Architecture Principles as Decision Guardrails
More info →GuidingHow can we refine and create an ubiquitous language?
Use consistent language between visual collaboration tools
More info →DesignWhen 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 →Value-basedWhy do teams sometimes resist adopting established architectural principles or patterns?
Value Lived Experience Over Theoretical Principles
More info →Value-basedWhat is the role of leadership when a team is struggling with a decision?
Value Team Autonomy over Rescuing
More info →GuidingHow can you tell if hierarchy is preventing honest collaboration in a modeling session?
Watch for approval-seeking as a safety signal
More info →GuidingWhat should an architect do when they disagree with a team's decision?
When Disagreeing, First Reflect on Your Feedback
More info →DesignWhen and how should teams document their architectural decisions?
Write Down Decisions Early and Often
More info →No heuristics match your filters.
