SOLID
Five design principles, two of which scale beyond the class.
4 to work through
-
beginner
After a refactor replaced a list implementation with an immutable one, a nightly job starts failing with an unsupported-operation error on a line nobody has edited in two years. Every type matches and the compiler was happy. What broke, and what is the design fix?
2 min answer -
intermediate
A reviewer rejects a change for violating the single responsibility principle. When is that a substantive objection and when is it cargo cult?
2 min answer -
intermediate Multiple choice
Which SOLID principle has genuine architectural consequences, and which one most often produces harm?
2 min answer -
intermediate
Which SOLID principle produces the most practical benefit in a large codebase, and which is most often misapplied?
2 min answer
2 terms in this topic
Dependency Inversion
The rule that high-level policy should not depend on low-level detail, both depending instead on an abstraction owned by the policy.
conceptSOLID Principles
Five object-design principles whose architectural value lies almost entirely in the last one — dependency inversion.
Neighbouring topics
Software Architecture
General material on the engineering underneath an architecture.
Domain-Driven Design
Ubiquitous language, bounded contexts and context mapping.
Bounded Contexts
Where one model ends and another begins, and why forcing one fails.
Clean Architecture
Concentric layers with dependencies pointing only inwards.
Hexagonal Architecture
Ports defined by the domain, adapters supplied by infrastructure.
Microservices
Independent deployability, and the distributed problems it buys.
Modular Monolith
Enforced internal boundaries without a network between them.
Service Boundaries
Drawing lines along change patterns rather than technical layers.
Design Patterns
Reusable solutions at code level, and when they become ceremony.
Refactoring
Changing structure without changing behaviour, in verified steps.
Technical Debt
Deliberate, tracked and repaid — as distinct from mess.
Testing Strategies
The pyramid, and the contract tests distributed systems add to it.
Contract Tests
Capturing what consumers actually use, not what the API documents.
CI/CD
Continuous integration and delivery, and the architecture that caps them.
Release Strategies
Blue-green, canary, shadow and progressive delivery.
Feature Flags
Decoupling deploy from release, with an expiry date.
Trunk-Based Development
Short-lived branches, and unmerged work as inventory.
Code Review
Where architectural rules are enforced by people rather than by tools.
DORA Metrics
Throughput and stability moving together rather than trading off.