Upgrade to Pro — share decks privately, control downloads, hide ads and more …

From EventStorming to CoDDDing @ JFall

From EventStorming to CoDDDing @ JFall

To really understand what our users need so that we can build the right thing, we want to have a first-hand experience of ‘real-life stories’ before we model and create our software. To quote Alberto Brandolini “it is not the domain expert’s knowledge that goes into production, it is the developer’s assumption of that knowledge that goes into production”. EventStorming is a visual technique that minimizes assumptions by engaging in collaborative deliberate learning across different disciplines. This helps to solve complex business problems in the most effective way.

Although the learning of the domain helps us to understand the domain better, EventStorming can be quite an overwhelming experience. Developers can be left with the question of how to turn a few stickies on a wall into working code.

Join us in this talk in which we show the basic principles of EventStorming. We will cover the different forms of EventStorming and in which situation they best can be applied. And, we will show how you can leverage DDD (Domain-Driven Design) patterns in an EventStorming software modelling session that will ultimately result in coding TDD (Test Driven Development) style!

Kenny Baas-Schwegler

November 08, 2018
Tweet

More Decks by Kenny Baas-Schwegler

Other Decks in Programming

Transcript

  1. From EventStorming
    to CoDDDing

    View Slide

  2. Software Consultant - EventStormer
    Domain Driven Design
    Behaviour Driven Development
    Test Driven Development
    Continuous Delivery
    @kenny_baas
    baasie.com
    @joaoasrosa
    joaorosa.io

    View Slide

  3. View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. The fundamental horror of this anti-pattern
    is that it's so contrary to the basic idea
    of object-oriented designing;
    which is to combine
    data and process together.
    - Martin Fowler

    View Slide

  10. What's worse, many people think that
    anemic objects are real objects,
    and thus completely miss the point of what
    object-oriented design is all about.
    - Martin Fowler

    View Slide

  11. View Slide

  12. View Slide

  13. View Slide

  14. Confirmation Bias

    View Slide

  15. https://lizkeogh.com/2015/09/09/on-epiphany-and-apophany/
    Build beliefs
    Draw conclusions
    Generate assumptions
    Filter data
    Observe data

    View Slide

  16. It is not the domain experts knowledge
    that goes to production, it is the
    assumption of the developers
    that goes to production
    - Alberto Brandolini

    View Slide

  17. The greatest obstacle to discovery is not ignorance -
    it is the illusion of knowledge.
    - Daniel J. Boorstin

    View Slide

  18. To communicate effectively, the code must be based on
    the same language used to write the requirements
    - the same language that the developers speak
    with each other and with domain experts
    - Eric Evans

    View Slide

  19. We all know or should know that language is fluid, liquid, subject to the
    whims of the people. Language evolves, as it should. Because language
    changes to accommodate new users, the older users resist and complain.
    http://tednellen.blogspot.com/2013/04/language-is-fluid.html

    View Slide

  20. View Slide

  21. View Slide

  22. View Slide

  23. View Slide

  24. View Slide

  25. Big Picture
    Process Design
    and Modelling
    Software
    Modelling

    View Slide

  26. View Slide

  27. View Slide

  28. View Slide

  29. View Slide

  30. View Slide

  31. View Slide

  32. 1. Protects business invariants
    2. Design them small
    3. Reference other by ID only
    4. Update other using eventual
    consistency

    View Slide

  33. Try at least to find three models,
    even if you think you already found
    the “right model”

    View Slide

  34. View Slide

  35. View Slide

  36. Software Development is
    a learning process, working code is a
    side effect
    - Alberto Brandolini

    View Slide

  37. Serious software development is
    the practice of symmathesy.
    “Sym” = together, “mathesy” = learning.
    - Jessica Kerr

    View Slide

  38. #CatTax

    View Slide