Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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
Th...
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
...
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
EXPLICI...
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
Upcoming SlideShare
Loading in …5
×

The art of Software Design

997 views

Published on


Software Design ... a nice expression, uh? But what does it mean to "design a software"? What are the prerequisites? What are the pitfalls to avoid? As Software Designers we would like to highlight on what makes us build simple, useful and above all effective software. And of course, we will talk about Domain-Driven Design in that journey ;-)

Talk made at http://domain-driven-design.eu/the-art-of-design/

Published in: Software
  • Hello! Get Your Professional Job-Winning Resume Here - Check our website! https://vk.cc/818RFv
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

The art of Software Design

  1. 1. THE ART OF (SOFTWARE) DESIGN Jérémie GRODZISKI - Thomas PIERRAIN DDD Meetup - February 2017
  2. 2. HAS 'AGILE' KILLED DESIGN IN SOFTWARE?
  3. 3. PROBABLY BUT…
  4. 4. ’AGILE' WANTED TO KILL BIG UPFRONT DESIGN ONLY
  5. 5. BIG UPFRONT DESIGN DESIGN ≠
  6. 6. LACK OF DESIGN EMERGENT DESIGN ≠
  7. 7. DON'T THROW THE BABY WITH THE BATHWATER DON’T THROW THE DESIGN « BABY » WITH…
  8. 8. WHAT IS DESIGN ?
  9. 9. DESIGN IS MAKING DECISIONS
  10. 10. MAKING DECISIONS TO BUILD SOMETHING
  11. 11. EVERYONE IS MAKING DECISIONS
  12. 12. EVERYONE IS MAKING DECISIONS… BUT WITH DIFFERENT IMPACTS
  13. 13. BUILDING SOMETHING OK, BUT WHY?
  14. 14. WHY? WHY? WHY? WHY? WHY? BUILDING SOMETHING OK, BUT WHY?
  15. 15. SOLUTION SPACE PROBLEM SPACE WHY WHAT
  16. 16. HOW SOLUTION SPACE
  17. 17. PROBLEM SPACE Problem Usages Languages Domain Requirements Constraints People
  18. 18. PROBLEM SPACE Problem Usages Languages Domain Requirements Constraints People DOMAIN 
 ( noun, do·main) Set of concepts That through usages Help to solve problems
  19. 19. PROBLEM SPACE Problem Usages Languages Domain Requirements Constraints People DOMAIN Solve Problems
  20. 20. SOLUTION SPACE Software Model Design Patterns Heuristics Feedback
  21. 21. Driven PROBLEM SPACE Problem Usages Languages Domain Requirements Constraints People SOLUTION SPACE Software Model Design Patterns Heuristics Feedback
  22. 22. PROBLEM SPACE Domain SOLUTION SPACE Design- Driven
  23. 23. HEURISTICS? practical method not guaranteed to be optimal or perfect, but sufficient for the immediate goals.
  24. 24. PATTERNS FAVORITES ALGORITHMS … FAVORITES SOLUTIONS FAVORITES APPROACHES OUR MENTAL MODELS
  25. 25. HOUSTON?
  26. 26. TRAPPED BY YOUR OWN HEURISTICS?
  27. 27. SYSTEMATIC LAYERS ORMFRAMEWORKS ANEMIC BEHAVIORS …IOC
  28. 28. FROM HEURISTICS TO SOLUTION-FIRST BIAS
  29. 29. MOST DEVELOPERS LIKES… SOLUTIONS
  30. 30. OUR USERS ARE TIRED OF C.R.U.D. APPLICATIONS
  31. 31. C.R.U.D. APPLICATIONS
  32. 32. THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  33. 33. Create THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  34. 34. Ctrl-C THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  35. 35. Update THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  36. 36. Ctrl-V THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  37. 37. Create THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  38. 38. Ctrl-V THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  39. 39. Update THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  40. 40. Ctrl-V THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  41. 41. … THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  42. 42. I’m doing all 
 the job 
 actually… THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  43. 43. THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  44. 44. Damn it! THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  45. 45. Damn I.T! THE C.R.U.D. BURDEN CRUD app #1 CRUD app #2 CRUD app #3
  46. 46. WHY?!?
  47. 47. MANY REASONS BUT…
  48. 48. DATA MODELS INSTEAD OF DOMAIN MODELS
  49. 49. LAZINESS « Laziness is nothing more than the habit of resting before you get tired. » (Jules Renard)
  50. 50. A DDD ALTERNATIVE? THE APP REALLY HELPS WITH A SPECIFIC & CONSISTANT USER JOURNEY
  51. 51. OTHER BIASES?
  52. 52. BEWARE OF FADS micro-services, blockchains, …
  53. 53. THE ABSTRACTION- FIRST PITFALL
  54. 54. CONCRETE THINGS FIRST!
  55. 55. THE CV-DRIVEN DEVELOPMENT PANDEMIC
  56. 56. I.T. AS SEEN BY THE BUSINESS
  57. 57. WE MUST FOCUS MORE ON THE BUSINESS CONCERNS!
  58. 58. DESIGN IS CONSCIOUS CHOICES (Banksy)
  59. 59. ALWAYS CONNECT YOUR DECISIONS TO YOUR BUSINESS OBJECTIVES
  60. 60. DESIGN IS THE ART OF TRADE-OFF
  61. 61. design = f(requirements + constraints)trade-off
  62. 62. DESIGN SOFTWARE?
  63. 63. ALIGNMENT & EFFICIENCY solution space problem space
  64. 64. SOME CONSTRAINTS (the mythical man-month)
  65. 65. THERMODYNAMICS OF SOFTWARE
  66. 66. HEXAGONAL ARCHITECTURE DOMAIN CODE (domain first)
  67. 67. HEXAGONAL ARCHITECTURE DOMAIN CODE DO NOT MESS BUSINESS CODE INFRA CODE (infra later)
  68. 68. STANDARD SOFTWARE DESIGN (take all your favorite heuristics with you ;-(
  69. 69. CONSCIOUS (SOFTWARE) DESIGN (take only what you need for the usages/contraints)
  70. 70. CONSCIOUS (SOFTWARE) DESIGN USAGES FIRST - INFRA LATER HEXAGONAL ARCHITECTURE EXAMPLES & BEHAVIOURS (TESTS) DRIVEN EXPLICIT (AND BOUNDED) CONTEXTS
  71. 71. SOFTWARE DESIGN VS. REAL WORLD DESIGN?
  72. 72. DUPLICATION OF CODE AND DATA AT ALMOST NO COST
  73. 73. SCALING
  74. 74. EASY MODULARIZATION AND INTERFACING
  75. 75. BEWARE OF THE BUILDING METAPHOR
  76. 76. WRAP UP
  77. 77. MINDSET APPROACH
  78. 78. MINDSET APPROACH
  79. 79. ALWAYS MAKE CONSCIOUS DECISIONS { Value | Constraint } (Banksy)
  80. 80. FOSTER CONSCIOUS DESIGN!
  81. 81. STAY CONSCIOUS OF YOUR BIAS
  82. 82. MINDSET APPROACH
  83. 83. MINDSET APPROACH
  84. 84. USAGES FIRST …INFRA LATER
  85. 85. BE ADAPTABLE RATHER THAN PREDICTABLE
  86. 86. THANK YOU! JOIN US @DDDREBOOT

×