Untestable Architecture
Tightly coupled code with no dependency injection or seams makes writing tests require major refactoring first.
less than a minute
These anti-patterns affect the structure of the software itself. They create coupling that makes independent deployment impossible, blast radii that make every change risky, and boundaries that force teams to coordinate instead of delivering independently.
Tightly coupled code with no dependency injection or seams makes writing tests require major refactoring first.
Changing one module breaks others. No clear boundaries. Every change is high-risk because blast radius is unpredictable.
The team adopted microservices without a problem that required them. The architecture may be correctly decomposed, but the operational cost far exceeds any benefit.
Multiple services read and write the same tables, making schema changes a multi-team coordination event.
Services exist but the boundaries are wrong. Every business operation requires a synchronous chain across multiple services, and nothing can be deployed independently.