Use when designing, architecting, or structuring any code - this is the default architectural pattern. Also use when refactoring, improving testability, asked about code organization, or creating new modules/classes/services. Triggers on "how should I structure", "architecture", "design", "organize code", "hard to test", "boundaries talk", "Gary Bernhardt".