the art of software design
TRANSCRIPT
THE ART OF (SOFTWARE) DESIGNJé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
ORMFRAMEWORKSANEMIC
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
DOMAINCODE
(domain first)
HEXAGONAL ARCHITECTURE
DOMAINCODE
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
MINDSETAPPROACH
MINDSETAPPROACH
ALWAYS MAKE CONSCIOUS DECISIONS
{ Value | Constraint }
(Banksy)
FOSTER CONSCIOUS
DESIGN!
STAY CONSCIOUS OF YOUR
BIAS
MINDSETAPPROACH
MINDSETAPPROACH
USAGES FIRST …INFRA LATER
BE ADAPTABLE RATHER THAN PREDICTABLE
THANK YOU! JOIN US @DDDREBOOT