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

Say What? Ubiquitous Language and You! (PHP Benelux 2015)

Say What? Ubiquitous Language and You! (PHP Benelux 2015)

When you discuss a project with other people involved with a project in any capacity are you ever absolutely certain that they understand exactly what you’ve said? If you haven’t paid super close attention to naming chances are you can’t be certain! What if you could all speak the same language? One of the core Domain-Driven Design (DDD) tools is the Ubiquitous Language. By paying close attention to how domain experts (people intimately familiar with how a specific part of a business actually runs) you will start learning critical information that you can use to help ensure that your code more accurately models the business processes it represents. While this is an important part of practicing DDD the idea behind the Ubiquitous Language can be applied to almost any project to help keep everyone involved on the same page!

Beau Simensen

January 24, 2015
Tweet

More Decks by Beau Simensen

Other Decks in Programming

Transcript

  1. Say What? Ubiquitous Language and You! PHP Benelux 2015 Beau

    Simensen joind.in/13183 joind.in/13183 • ddd.io • @beausimensen
  2. Ubiquitous Language addresses the Impedance Mismatch between Domain Experts &

    Developers joind.in/13183 • ddd.io • @beausimensen
  3. Ubiquitous Language and You! • Where did Ubiquitous Language originate?

    • What is Ubiquitous Language? • How do you "do" Ubiquitous Language? joind.in/13183 • ddd.io • @beausimensen
  4. Eric Evans Domain-Driven Design Tackling Complexity in the Heart of

    Software Also sometimes known as "The Blue Book" joind.in/13183 • ddd.io • @beausimensen
  5. Vaughn Vernon Implementing Domain-Driven Design Also sometimes known as "The

    Red Book" joind.in/13183 • ddd.io • @beausimensen
  6. If there is a single "invention" Evans delivers to the

    software development community, it is the Ubiquitous Language. — Vaughn Vernon, "Implementing Domain-Driven Design" joind.in/13183 • ddd.io • @beausimensen
  7. DDD isn’t first and foremost about technology. — Vaughn Vernon,

    "Implementing DDD" joind.in/13183 • ddd.io • @beausimensen
  8. In its most central principles, DDD is about discussion, listening,

    understanding, discovery, and business value, all in an effort to centralize knowledge. — Vaughn Vernon, "Implementing Domain-Driven Design" joind.in/13183 • ddd.io • @beausimensen
  9. Wait, I thought DDD was all about Entities, Value Objects,

    & Repositories? — J. Newbie joind.in/13183 • ddd.io • @beausimensen
  10. Words used to discuss the business process being modeled (AKA

    "The Domain") joind.in/13183 • ddd.io • @beausimensen
  11. Words used by the WHOLE TEAM when working about the

    business process joind.in/13183 • ddd.io • @beausimensen
  12. Domain Experts are simply people who are familiar with the

    domain joind.in/13183 • ddd.io • @beausimensen
  13. Must fight their instincts to speak in abstractions (and of

    course technical jargon) joind.in/13183 • ddd.io • @beausimensen
  14. The whole team should commit to using and maintaining its

    Ubiquitous Language joind.in/13183 • ddd.io • @beausimensen
  15. Ubiquitous Language has boundaries: Bounded Contexts (another strategic pattern from

    Domain-Driven Design) joind.in/13183 • ddd.io • @beausimensen
  16. If a word makes sense to one Domain Expert and

    no sense to another Domain Expert you might have more than one Bounded Context joind.in/13183 • ddd.io • @beausimensen
  17. If a word has meaning to one Domain Expert and

    means something else to another Domain Expert you might have more than one Bounded Context joind.in/13183 • ddd.io • @beausimensen
  18. You can apply Ubiquitous Language to any project with any

    team joind.in/13183 • ddd.io • @beausimensen
  19. If you want to practice DDD BE INTENTIONAL about Ubiquitous

    Language joind.in/13183 • ddd.io • @beausimensen
  20. Talking aloud is important as it can yield surprising results

    joind.in/13183 • ddd.io • @beausimensen
  21. Go forth and diagram because whiteboards are fun (know what

    else are fun? post-its!) joind.in/13183 • ddd.io • @beausimensen
  22. Don't try to diagram all of the Ubiquitous Language at

    the same time joind.in/13183 • ddd.io • @beausimensen
  23. If your Ubiquitous Language changes update your code to match

    to avoid slipping back into translation mode joind.in/13183 • ddd.io • @beausimensen
  24. Ubiquitous Language without intentional Domain Expert buy-in or: "how I

    roll with most clients" joind.in/13183 • ddd.io • @beausimensen
  25. When your Client is your Domain Expert they may not

    care about Domain-Driven Design joind.in/13183 • ddd.io • @beausimensen
  26. When your Client is your Domain Expert they will care

    if get their domain model right joind.in/13183 • ddd.io • @beausimensen
  27. You can apply Ubiquitous Language to any project with any

    team joind.in/13183 • ddd.io • @beausimensen
  28. If you want to practice DDD BE INTENTIONAL about Ubiquitous

    Language joind.in/13183 • ddd.io • @beausimensen
  29. Questions? joind.in/13183 • Read more about Domain-Driven Design at ddd.io

    • Follow and Tweet @beausimensen • Listen to me on thatpodcast.io • Learn more at beau.io • Hire me at dflydev.com joind.in/13183 • ddd.io • @beausimensen
  30. Impedance Mismatch1 1 The Vietnam of Computer Science, Ted Neward

    joind.in/13183 • ddd.io • @beausimensen