Architectural Patterns.
Patterns and methodologies that shape whole systems — how to model a domain, separate reads from writes, and let tests or specifications drive the design.
An approach to software development that centers the design on a rich model of the business domain, expressed in a language shared by engineers and domain experts.
Separate the model that changes state (commands) from the model that reads state (queries), so each side can be modeled, scaled and optimized independently.
A development discipline where you write a failing test before the code that makes it pass, then refactor — letting tests drive the design in short, tight cycles.
Write an explicit, authoritative specification first, then drive implementation, tests and generated code from it — keeping the spec as the single source of truth.