Architecture and Design Patterns
Architecture styles — layered, hexagonal (ports-and-adapters), event-driven, CQRS with an outbox pattern — and design patterns (creational, structural, behavioural — Factory, Builder, Adapter, Facade, Observer, Strategy) solve recurring design problems. The real skill isn't memorising the pattern catalogue, it's judgment: recognising when a pattern actually improves coupling and testability, and when it's over-engineering a problem that didn't need it.
Starting Points
- Richards, M., & Ford, N. (2024). Fundamentals of Software Architecture. O'Reilly.
- Bass, L., Clements, P., & Kazman, R. Software Architecture in Practice.
- Fowler, M. Patterns of Enterprise Application Architecture.
- Martin, R. C. Clean Architecture.
- Head First Design Patterns (2nd ed.). O'Reilly
- Refactoring.Guru pattern catalogue.
- Technical architecture decision making
Key Points
- You select an appropriate architecture style for a given context and justify the choice in a clear ADR.
- You design and implement an end-to-end solution following a chosen architecture style, with consistent layering and separation of concerns.
- You apply suitable design patterns to improve clarity, testability, and maintainability, rather than to add unnecessary complexity.
- You refactor a tightly coupled codebase toward clearer architecture and patterns, and explain the impact on coupling, cohesion, and testability.
- You identify and critique over-engineered solutions and propose simpler, justified alternatives.
- You communicate architectural decisions and pattern choices to both technical and non-technical stakeholders, including trade-offs and risks.