THE ART OF (SOFTWARE) DESIGN
Jérémie GRODZISKI - Thomas PIERRAIN
DDD Meetup - February 2017
HAS 'AGILE' KILLED
DESIGN IN SOFTWARE?
PROBABLY BUT…
’AGILE' WANTED TO KILL
BIG UPFRONT DESIGN ONLY
BIG UPFRONT DESIGN
DESIGN
≠
LACK OF DESIGN
EMERGENT DESIGN
≠
DON'T THROW
THE BABY WITH
THE BATHWATER
DON’T THROW THE DESIGN « BABY » WITH…
WHAT IS DESIGN
?
DESIGN IS MAKING
DECISIONS
MAKING
DECISIONS TO
BUILD
SOMETHING
EVERYONE
IS MAKING
DECISIONS
EVERYONE IS MAKING
DECISIONS…
BUT WITH DIFFERENT
IMPACTS
BUILDING
SOMETHING
OK, BUT WHY?
WHY?
WHY?
WHY?
WHY?
WHY?
BUILDING
SOMETHING
OK, BUT WHY?
SOLUTION SPACE
PROBLEM SPACE
WHY
WHAT
HOW
SOLUTION SPACE
PROBLEM
SPACE
Problem
Usages
Languages
Domain
Requirements
Constraints
People
PROBLEM
SPACE
Problem
Usages
Languages
Domain
Requirements
Constraints
People
DOMAIN 

( noun, do·main)
Set of concepts
That through
usages
Help to solve
problems
PROBLEM
SPACE
Problem
Usages
Languages
Domain
Requirements
Constraints
People
DOMAIN
Solve
Problems
SOLUTION SPACE
Software
Model
Design
Patterns
Heuristics
Feedback
Driven
PROBLEM
SPACE
Problem
Usages
Languages
Domain
Requirements
Constraints
People
SOLUTION SPACE
Software
Model
Design
Patterns
Heuristics
Feedback
PROBLEM
SPACE
Domain
SOLUTION SPACE
Design- Driven
HEURISTICS?
practical method not guaranteed to be
optimal or perfect, but sufficient for the
immediate goals.
PATTERNS
FAVORITES
ALGORITHMS
…
FAVORITES SOLUTIONS
FAVORITES
APPROACHES
OUR MENTAL MODELS
HOUSTON?
TRAPPED
BY YOUR OWN
HEURISTICS?
SYSTEMATIC LAYERS
ORMFRAMEWORKS
ANEMIC
BEHAVIORS
…IOC
FROM HEURISTICS TO
SOLUTION-FIRST BIAS
MOST
DEVELOPERS
LIKES…
SOLUTIONS
OUR USERS ARE
TIRED OF C.R.U.D.
APPLICATIONS
C.R.U.D.
APPLICATIONS
THE C.R.U.D.
BURDEN
CRUD app #1
CRUD app #2
CRUD app #3
Create
THE C.R.U.D.
BURDEN
CRUD app #1
CRUD app #2
CRUD app #3
Ctrl-C
THE C.R.U.D.
BURDEN
CRUD app #1
CRUD app #2
CRUD app #3
Update
THE C.R.U.D.
BURDEN
CRUD app #1
CRUD app #2
CRUD app #3
Ctrl-V
THE C.R.U.D.
BURDEN
CRUD app #1
CRUD app #2
CRUD app #3
Create
THE C.R.U.D.
BURDEN
CRUD app #1
CRUD app #2
CRUD app #3
Ctrl-V
THE C.R.U.D.
BURDEN
CRUD app #1
CRUD app #2
CRUD app #3
Update
THE C.R.U.D.
BURDEN
CRUD app #1
CRUD app #2
CRUD app #3
Ctrl-V
THE C.R.U.D.
BURDEN
CRUD app #1
CRUD app #2
CRUD app #3
…
THE C.R.U.D.
BURDEN
CRUD app #1
CRUD app #2
CRUD app #3
I’m doing all 

the job 

actually…
THE C.R.U.D.
BURDEN
CRUD app #1
CRUD app #2
CRUD app #3
THE C.R.U.D.
BURDEN
CRUD app #1
CRUD app #2
CRUD app #3
Damn it!
THE C.R.U.D.
BURDEN
CRUD app #1
CRUD app #2
CRUD app #3
Damn I.T!
THE C.R.U.D.
BURDEN
CRUD app #1
CRUD app #2
CRUD app #3
WHY?!?
MANY REASONS BUT…
DATA MODELS
INSTEAD OF
DOMAIN MODELS
LAZINESS
« Laziness is nothing more
than the habit of resting
before you get tired. »
(Jules Renard)
A DDD
ALTERNATIVE?
THE APP REALLY HELPS
WITH A SPECIFIC & CONSISTANT USER JOURNEY
OTHER BIASES?
BEWARE OF
FADS
micro-services, blockchains, …
THE
ABSTRACTION-
FIRST PITFALL
CONCRETE
THINGS
FIRST!
THE CV-DRIVEN
DEVELOPMENT
PANDEMIC
I.T. AS
SEEN BY
THE
BUSINESS
WE MUST
FOCUS MORE ON
THE BUSINESS
CONCERNS!
DESIGN IS
CONSCIOUS
CHOICES
(Banksy)
ALWAYS
CONNECT YOUR DECISIONS
TO YOUR
BUSINESS OBJECTIVES
DESIGN IS
THE ART OF
TRADE-OFF
design = f(requirements + constraints)trade-off
DESIGN
SOFTWARE?
ALIGNMENT &
EFFICIENCY
solution space
problem space
SOME
CONSTRAINTS
(the mythical man-month)
THERMODYNAMICS
OF SOFTWARE
HEXAGONAL
ARCHITECTURE
DOMAIN
CODE
(domain first)
HEXAGONAL
ARCHITECTURE
DOMAIN
CODE
DO NOT MESS
BUSINESS CODE
INFRA CODE
(infra later)
STANDARD
SOFTWARE DESIGN
(take all your favorite
heuristics with you ;-(
CONSCIOUS
(SOFTWARE) DESIGN
(take only what you need for
the usages/contraints)
CONSCIOUS
(SOFTWARE) DESIGN
USAGES FIRST - INFRA LATER
HEXAGONAL ARCHITECTURE
EXAMPLES & BEHAVIOURS (TESTS) DRIVEN
EXPLICIT (AND BOUNDED) CONTEXTS
SOFTWARE DESIGN
VS.
REAL WORLD DESIGN?
DUPLICATION
OF
CODE AND DATA
AT ALMOST NO
COST
SCALING
EASY
MODULARIZATION
AND INTERFACING
BEWARE OF THE
BUILDING
METAPHOR
WRAP UP
MINDSET
APPROACH
MINDSET
APPROACH
ALWAYS MAKE
CONSCIOUS
DECISIONS
{ Value | Constraint }
(Banksy)
FOSTER
CONSCIOUS
DESIGN!
STAY CONSCIOUS
OF YOUR
BIAS
MINDSET
APPROACH
MINDSET
APPROACH
USAGES FIRST
…INFRA LATER
BE ADAPTABLE
RATHER THAN
PREDICTABLE
THANK YOU!
JOIN US @DDDREBOOT

The art of Software Design