Model storming - a different approach to collaborative model discovery (Vilnius edition)

3,820 views
3,596 views

Published on

Many complex problems aren't properly managed because they aren't properly seen. To visualise them you need a lot of space and unusual techniques that help you model the unknown, in an interactive and extremely productive fashion.

Published in: Business, Technology

Model storming - a different approach to collaborative model discovery (Vilnius edition)

  1. 1. avanscoperta Model Storming A different approach to collaborative model discovery @ziobrando #buildstufflt #modelstorming #eventstorming
  2. 2. About me About me @ziobrando @ziobrando ! I do something else instead avanscoperta
  3. 3. About me About me @ziobrando DDD enthusiast @ziobrando ! I do something else instead avanscoperta
  4. 4. About me About me @ziobrando DDD enthusiast @ziobrando Post-it addicted ! I do something else instead avanscoperta
  5. 5. About me About me @ziobrando DDD enthusiast @ziobrando Post-it addicted Visual something else instead I do thinker ! avanscoperta
  6. 6. About me About me @ziobrando DDD enthusiast @ziobrando Post-it addicted Visual something else instead I do thinker Chaos summoner ! avanscoperta
  7. 7. About me About me @ziobrando DDD enthusiast @ziobrando Post-it addicted Visual something else instead I do thinker Chaos summoner Idea thief ! avanscoperta
  8. 8. About me About me @ziobrando DDD enthusiast @ziobrando Post-it addicted Visual something else instead I do thinker Chaos summoner Idea thief …never satisfied avanscoperta !
  9. 9. Part 1: My insanely ambitious starting point
  10. 10. Typical enterprise architecture is flawed
  11. 11. pl i Ap io n c at Ap pl i D at a ba se ca io n n t ca io io n i pl at c at Ap l ic pl i pp Ap A pp A tio on ti ca li pl i Ap io n at c n l ic pp A on ti a D at a ba se Typical enterprise architecture is flawed © Alberto Brandolini 2013
  12. 12. Too much coupling
  13. 13. patches don’t help
  14. 14. Some folks call this a “model”
  15. 15. So you want to speak the “Ubiquitous Language”, you scumbag? ©  Alberto  Brandolini  2009 011
  16. 16. So you want to speak the “Ubiquitous Language”, you scumbag? The only ubiquitous language is SQL! Every Database speaks it! ©  Alberto  Brandolini  2009 011
  17. 17. Managing conflicting requirements is always a pleasure © Alberto Brandolini 2013
  18. 18. So we have trade offs © Alberto Brandolini 2013
  19. 19. © Alberto Brandolini 2013
  20. 20. When will we start refactoring? © Alberto Brandolini 2013
  21. 21. When will we start refactoring? Mañana!! © Alberto Brandolini 2013
  22. 22. Problem checklist Typical enterprise software architecture is flawed Data driven No bounded contexts Conflicting requirements lead to trade-off solutions that ultimately clog our system The ever needed refactoring is always scheduled for the next week
  23. 23. Principle #1 The fastest way to remove crap from your system is… © Alberto Brandolini 2013
  24. 24. To put NO CRAP into your system
  25. 25. Paratroopers © Alberto Brandolini 2013
  26. 26. Paratroopers Move towards the taleban area © Alberto Brandolini 2013
  27. 27. Paratroopers Move towards the taleban area But this is Arizona… © Alberto Brandolini 2013
  28. 28. Paratroopers Move towards the taleban area Let’s iterate! But this is Arizona… © Alberto Brandolini 2013
  29. 29. There’s nothing wrong with “embrace change”, but…
  30. 30. The starting point matters
  31. 31. Ignorance is the single greatest impediment to throughput. Dan North http://dannorth.net/2010/08/30/introducing-deliberate-discovery/
  32. 32. Learning is the constraint Dan North http://dannorth.net/2010/08/30/introducing-deliberate-discovery/
  33. 33. Coding 20cl, learning 20cl, deciding 20cl, waiting...
  34. 34. When doing DDD...
  35. 35. Software development is a learning process Working code is a side effect
  36. 36. Can we accelerate learning?
  37. 37. Part 2: Teach a man to fish
  38. 38. Why don’t you put all of them in the same room? A simple solution Put
  39. 39. A simple solution Put all the key stakeholders in the same room and sketch a model together © Alberto Brandolini 2013
  40. 40. That will never work
  41. 41. Reasons why this is a bad idea
  42. 42. Reasons why this is a bad idea Too expensive to get all the key people in the same room at the same time
  43. 43. Reasons why this is a bad idea Too expensive to get all the key people in the same room at the same time The meeting will be totally non productive
  44. 44. Reasons why this is a bad idea Too expensive to get all the key people in the same room at the same time The meeting will be totally non productive Disagreement will turn into a fight
  45. 45. Reasons why this is a bad idea Too expensive to get all the key people in the same room at the same time The meeting will be totally non productive Disagreement will turn into a fight The meeting will be boring
  46. 46. Reasons why this is a bad idea Too expensive to get all the key people in the same room at the same time The meeting will be totally non productive Disagreement will turn into a fight The meeting will be boring They won’t come again
  47. 47. Reasons why this is a bad idea Too expensive to get all the key people in the same room at the same time The meeting will be totally non productive Disagreement will turn into a fight The meeting will be boring They won’t come again They’ll blame me
  48. 48. Solution #1
  49. 49. 1. Designate a scapegoat 2. Let him call the meeting ©  Alberto  Brandolini  2009
  50. 50. Solution #2 Break some assumptions
  51. 51. Implicit assumptions
  52. 52. Implicit assumptions The meeting will happen around a table
  53. 53. Implicit assumptions The meeting will happen around a table When one person speaks many will be bored
  54. 54. Implicit assumptions The meeting will happen around a table When one person speaks many will be bored When many person speak nobody will understand
  55. 55. Implicit assumptions The meeting will happen around a table When one person speaks many will be bored When many person speak nobody will understand We’ll talk about technical things
  56. 56. Implicit assumptions The meeting will happen around a table When one person speaks many will be bored When many person speak nobody will understand We’ll talk about technical things I’ll have to bring my smartphone with me
  57. 57. That’s how I run meetings
  58. 58. The challenge Can we run a meeting worth more than the hourly cost of the participants? © Alberto Brandolini 2013
  59. 59. Event Storming!
  60. 60. © Alberto Brandolini 2013
  61. 61. Yes, I mean that much space...
  62. 62. My best friend © Alberto Brandolini 2013
  63. 63. And… no table.
  64. 64. It’s no fun to just watch others play
  65. 65. Events are precise
  66. 66. Event are meaningful
  67. 67. We’re getting to the aggregates outside-in
  68. 68. Observe people
  69. 69. Observe people © Alberto Brandolini 2013
  70. 70. Observe people help those who are not participating © Alberto Brandolini 2013
  71. 71. Observe people help those who are not participating remove impediments and bottlenecks © Alberto Brandolini 2013
  72. 72. Observe people help those who are not participating remove impediments and bottlenecks Spot the ones who don’t belong here © Alberto Brandolini 2013
  73. 73. Observe people help those who are not participating remove impediments and bottlenecks Spot the ones who don’t belong here Spot the ones that care © Alberto Brandolini 2013
  74. 74. Observe people help those who are not participating remove impediments and bottlenecks Spot the ones who don’t belong here Spot the ones that care Manage conflicts © Alberto Brandolini 2013
  75. 75. I love conflicts here… © Alberto Brandolini 2013
  76. 76. © Alberto Brandolini 2013
  77. 77. Or we can simply put a RED Marker ©  Alberto  Brandolini  2009
  78. 78. There’s nothing wrong in learning stuff faster
  79. 79. This summer…
  80. 80. A little community Started experimenting © Alberto Brandolini 2013
  81. 81. A little community Started experimenting @mathiasverraes © Alberto Brandolini 2013
  82. 82. A little community Started experimenting @mathiasverraes @heimeshoff © Alberto Brandolini 2013
  83. 83. A little community Started experimenting @mathiasverraes @heimeshoff @andreabalducci © Alberto Brandolini 2013
  84. 84. A little community Started experimenting @mathiasverraes @heimeshoff @andreabalducci @tojans © Alberto Brandolini 2013
  85. 85. A little community Started experimenting @mathiasverraes @heimeshoff @tjaskula @andreabalducci @tojans © Alberto Brandolini 2013
  86. 86. A little community Started experimenting @mathiasverraes @heimeshoff @tjaskula @andreabalducci @tojans @yreynhout © Alberto Brandolini 2013
  87. 87. A little community Started experimenting @mathiasverraes @heimeshoff @tjaskula @andreabalducci @tojans @yreynhout @alessandrocolla © Alberto Brandolini 2013
  88. 88. A little community Started experimenting @mathiasverraes @heimeshoff @tjaskula @andreabalducci @tojans @yreynhout @jefclaes @alessandrocolla © Alberto Brandolini 2013
  89. 89. A little community Started experimenting @mathiasverraes @heimeshoff @tjaskula @andreabalducci @tojans @yreynhout @jefclaes @alessandrocolla @lorenzomassacci © Alberto Brandolini 2013
  90. 90. A little community Started experimenting @mathiasverraes @heimeshoff @tjaskula @andreabalducci @sleli @tojans @yreynhout @jefclaes @alessandrocolla @lorenzomassacci © Alberto Brandolini 2013
  91. 91. And the experiments worked! © Alberto Brandolini 2013
  92. 92. And the experiments worked! “This is awesome!” © Alberto Brandolini 2013
  93. 93. And the experiments worked! “This is awesome!” “For the first time, developers started asking the right questions!” © Alberto Brandolini 2013
  94. 94. And the experiments worked! “This is awesome!” “For the first time, developers started asking the right questions!” “We turned the model into implementation on the same afternoon” © Alberto Brandolini 2013
  95. 95. And the experiments triggered new ideas © Alberto Brandolini 2013
  96. 96. And the experiments triggered new ideas “Let’s use it to set up our Kanban board!” © Alberto Brandolini 2013
  97. 97. And the experiments triggered new ideas “Let’s use it to set up our Kanban board!” “is there a UX version of the workshop?” © Alberto Brandolini 2013
  98. 98. And the experiments triggered new ideas “Let’s use it to set up our Kanban board!” “is there a UX version of the workshop?” “How can we use this to steer implementation?” © Alberto Brandolini 2013
  99. 99. And the experiments triggered new ideas “Let’s use it to set up our Kanban board!” “We used a different “is there a UX version set of rules” of the workshop?” “How can we use this to steer implementation?” © Alberto Brandolini 2013
  100. 100. © Alberto Brandolini 2013
  101. 101. © Alberto Brandolini 2013
  102. 102. Part 4: Model Storming or Meta fishing
  103. 103. I know, Part 3 is missing…
  104. 104. Why does this work?
  105. 105. My secret weapon?
  106. 106. My secret weapon?
  107. 107. What is Model Storming? © Alberto Brandolini 2013
  108. 108. What is Model Storming? Unlimited Modeling Space © Alberto Brandolini 2013
  109. 109. What is Model Storming? Unlimited Modeling Space Iterative notation © Alberto Brandolini 2013
  110. 110. What is Model Storming? Unlimited Modeling Space Iterative notation Simple Gaming Rules © Alberto Brandolini 2013
  111. 111. What is Model Storming? Unlimited Modeling Space Iterative notation Simple Gaming Rules Active Collaboration © Alberto Brandolini 2013
  112. 112. What is Model Storming? Unlimited Modeling Space Iterative notation Simple Gaming Rules Active Collaboration Addressing Complexity © Alberto Brandolini 2013
  113. 113. What is Model Storming? Unlimited Modeling Space Iterative notation Simple Gaming Rules Active Collaboration Addressing Complexity Everything is visible © Alberto Brandolini 2013
  114. 114. What is Model Storming? Unlimited Modeling Space Iterative notation Simple Gaming Rules Active Collaboration Addressing Complexity Everything is visible Supporting divergence © Alberto Brandolini 2013
  115. 115. What is Model Storming? Unlimited Modeling Space Iterative notation Simple Gaming Rules Active Collaboration Addressing Complexity Everything is visible Supporting divergence Decide later © Alberto Brandolini 2013
  116. 116. Unlimited Modeling Space My problem is... © Alberto Brandolini 2013
  117. 117. Unlimited Modeling Space My problem is... BIGGER © Alberto Brandolini 2013
  118. 118. You know why people call it “the big picture?”
  119. 119. Conquer first Divide later
  120. 120. Guerrilla modeling © Alberto Brandolini 2013
  121. 121. © Alberto Brandolini 2013
  122. 122. Unlimited surface © Alberto Brandolini 2013
  123. 123. Unlimited surface You don’t know the size of the problem before exploring it © Alberto Brandolini 2013
  124. 124. Iterative notation © Alberto Brandolini 2013
  125. 125. Iterative notation Choose one significant aspect © Alberto Brandolini 2013
  126. 126. Iterative notation Choose one significant aspect Find the simplest possible notation to represent it © Alberto Brandolini 2013
  127. 127. Iterative notation Choose one significant aspect Find the simplest possible notation to represent it Choose the next aspect to model © Alberto Brandolini 2013
  128. 128. Active Collaboration All participant should actively contribute © Alberto Brandolini 2013
  129. 129. One Man One Marker © Alberto Brandolini 2013
  130. 130. © Alberto Brandolini 2013
  131. 131. Tell us whatever you want © Alberto Brandolini 2013
  132. 132. Gamification!
  133. 133. © Alberto Brandolini 2013
  134. 134. Our brain... http://www.wpclipart.com/medical/anatomy/brain/four_lobes_of_the_cerebral_cortex.png.html
  135. 135. System 1
  136. 136. System 1 Quick pattern matching
  137. 137. System 1 Quick pattern matching Parallel processing, unaware mode
  138. 138. System 1 Quick pattern matching Parallel processing, unaware mode Low energy consumption
  139. 139. System 1 Quick pattern matching Parallel processing, unaware mode Low energy consumption System 2
  140. 140. System 1 Quick pattern matching Parallel processing, unaware mode Low energy consumption System 2 Complex elaboration that need attention and concentration
  141. 141. System 1 Quick pattern matching Parallel processing, unaware mode Low energy consumption System 2 Complex elaboration that need attention and concentration No parallelism
  142. 142. System 1 Quick pattern matching Parallel processing, unaware mode Low energy consumption System 2 Complex elaboration that need attention and concentration No parallelism High energy consumption
  143. 143. Maybe there’s a reason for that
  144. 144. Let’s examine carefully every possibility
  145. 145. System 1 Quick pattern matching Parallel processing, unaware mode Low energy consumption System 2 Complex elaboration that need attention and concentration No parallelism High energy consumption
  146. 146. System 1 Quick pattern matching Parallel processing, unaware mode Low energy consumption System 2 Complex elaboration that need attention and concentration No parallelism High energy consumption It’s the same class!
  147. 147. System 1 Quick pattern matching It’s the same class! Parallel processing, unaware mode Low energy consumption System 2 Complex elaboration that need attention and concentration No parallelism High energy consumption It’s obvious!
  148. 148. System 1 Quick pattern matching It’s the same class! Parallel processing, unaware mode Low energy consumption System 2 Complex elaboration that need attention and concentration No parallelism High energy consumption It’s obvious! Let’s consider Bounded Contexts
  149. 149. System 1 Quick pattern matching It’s the same class! Parallel processing, unaware mode Low energy consumption System 2 Complex elaboration that need attention and concentration No parallelism High energy consumption It’s obvious! Let’s consider Bounded Contexts Let’s see the whole
  150. 150. Our brain © Alberto Brandolini 2013
  151. 151. Our brain Quick in pattern matching © Alberto Brandolini 2013
  152. 152. Our brain Quick in pattern matching (and unaware of it) © Alberto Brandolini 2013
  153. 153. Our brain Quick in pattern matching (and unaware of it) Provides inferior solutions under pressure © Alberto Brandolini 2013
  154. 154. Our brain Quick in pattern matching (and unaware of it) Provides inferior solutions under pressure Tries to avoid complexity © Alberto Brandolini 2013
  155. 155. Our brain Quick in pattern matching (and unaware of it) Provides inferior solutions under pressure Tries to avoid complexity Gets hooked by games © Alberto Brandolini 2013
  156. 156. © Alberto Brandolini 2013
  157. 157. © Alberto Brandolini 2013
  158. 158. Can you walk by without completing? © Alberto Brandolini 2013
  159. 159. © Alberto Brandolini 2013
  160. 160. And, by the way, playing is how we learn better © Alberto Brandolini 2013
  161. 161. Icebreakers needed
  162. 162. Deferring decisions Implicit choices There’s nothing *right* yet No legacy © Alberto Brandolini 2013
  163. 163. Embrace Fuzzyness (temporarily)
  164. 164. It will compile
  165. 165. I promise
  166. 166. © Alberto Brandolini 2013
  167. 167. Addressing Complexity Data first, structure later…
  168. 168. Everybody is partitioning the system
  169. 169. I just like taking a detour first...
  170. 170. Visual representation UML is too complex to support a meaningful conversation! ! Whiteboards won’t compile anyway © Alberto Brandolini 2013
  171. 171. Visualize everything © Alberto Brandolini 2013
  172. 172. © Alberto Brandolini 2013
  173. 173. © Alberto Brandolini 2013
  174. 174. Visualize everything Legend and Notation Requirements and solution Solutions Disagreement Context ... © Alberto Brandolini 2013
  175. 175. Keep the cognitive load small
  176. 176. Design the workshop User Experience
  177. 177. Exploring Guys, we’re doing this one really badly © Alberto Brandolini 2013
  178. 178. Brainstorming rules “We need at least 3 bad ideas” © Alberto Brandolini 2013
  179. 179. Short timeboxes throwaway code ...more ;-) coderetreat.org
  180. 180. coderetreat.org
  181. 181. coderetreat.org
  182. 182. coderetreat.org
  183. 183. coderetreat.org
  184. 184. coderetreat.org
  185. 185. coderetreat.org
  186. 186. coderetreat.org
  187. 187. coderetreat.org
  188. 188. Can we tweak it?
  189. 189. Modellathlon!
  190. 190. Human beings are the best device ever…
  191. 191. …to detect somebody else’s mistakes
  192. 192. Negotiating We need a tangible enemy if there’s none ... © Alberto Brandolini 2013
  193. 193. Your colleague becomes the enemy
  194. 194. Negotiating implicit meaning Blah, blah, blah... ...And obviously, blah, blah... Blah, blah, blah... Ouch, he didn’t mention wah, wah... © Alberto Brandolini 2013
  195. 195. A tangible artifact becomes the enemy
  196. 196. Your colleague becomes your ally
  197. 197. Proving Still… negotiating is waste It’s not about convincing the others... © Alberto Brandolini 2013
  198. 198. Those are learning cycles
  199. 199. Watching the ceiling is forbidden!
  200. 200. Scope?
  201. 201. Complex problems
  202. 202. Event Storming expected outcome steered towards a canonical model partially defined steps model affinity given problem type © Alberto Brandolini 2013
  203. 203. Model storming unpredictable outcome no canonical model notation incremente iteratively ! no predefined problem type © Alberto Brandolini 2013
  204. 204. © Alberto Brandolini 2013
  205. 205. © Alberto Brandolini 2013
  206. 206. Some problems are resistant to antibiotics
  207. 207. It’s a fun job and somebody’s gotta do it
  208. 208. Let’s go fishing!
  209. 209. avanscoperta Grazie! @ziobrando ! http://ziobrando.blogspot.com/2013/11/introducing-event-storming.html http://www.avanscoperta.it

×