- Domain-Driven Design (DDD) says that we should be
mindful of domain models and embed them in our code.
- Design Patterns say that we should know a catalog
of patterns so we can solve recurring problems that
arise in object-oriented (OO) code.
- Software Architecture says that unless we are
mindful of large-scale patterns and models, then our
systems will not achieve the qualities we seek.
- Test-Driven Design (TDD) says that we should structure
our code so that it can be more easily tested.
- Programming styles (functional, OO, procedural,
etc.) say what the core abstractions of our programs
The common denominator here is that software
developers are expected to keep in mind many abstract
yet complex models that constrain the code they write. In
some ways, these constraints are a burden, and in other
ways, they are the light that illuminates a path forward.
I will discuss an idea called Model-Minded Development
that generalizes across DDD, design patterns, architecture,
TDD, and coding styles. The defining characteristic of
senior software developers is their facility with Model-
Minded Development, and it enables them to operate at
an advanced level.