Successfully reported this slideshow.
Your SlideShare is downloading. ×

DDD: lessons learned

Ad

DDD Lessons
Domain modelling lessons that I wish I’d learned earlier

Ad

Who am I?
Lead Developer and Solutions Architect
Writing PHP web apps professionally for 12 yrs
Recovered Architecture Ast...

Ad

Lesson 1
Recognising Domain Experts

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Ad

Upcoming SlideShare
Introduction to C# - Week 0
Introduction to C# - Week 0
Loading in …3
×

Check these out next

1 of 16 Ad
1 of 16 Ad

More Related Content

DDD: lessons learned

  1. 1. DDD Lessons Domain modelling lessons that I wish I’d learned earlier
  2. 2. Who am I? Lead Developer and Solutions Architect Writing PHP web apps professionally for 12 yrs Recovered Architecture Astronaut A little DDD and EventSourcing obsessed (I will talk for hours) Organiser of PHPDublin @barryosull barry@tercet.io http://barryosull.com
  3. 3. Lesson 1 Recognising Domain Experts
  4. 4. Recognising Domain Experts ? ? ? ? ? ? ? Solution Expert Domain Expert
  5. 5. Lesson 2 The UI is not a proxy for a Domain Expert
  6. 6. The UI is not a proxy for a domain expert Developer How does “X” work?
  7. 7. Lesson 3 When interviewing Domain Experts, refine the constraints they define
  8. 8. When Interviewing Domain Experts, refine defined constraints ? ? ? ? ? ? ? Domain ExpertDeveloper What happens if X? Well, then it should . . ... ...
  9. 9. Lesson 4 Sub Domains and Bounded Contexts are VERY different things
  10. 10. Domains and SubDomains are composable Domain: Running a Travel Agency We want to create and sell trips to customers SubDomain: TripBuilding Building trips is expensive SubDomain: Searching Searching across all the services (flight/hotel/car/etc..) is time consuming and error prone SubDomain: Booking Booking trips is time consuming SubDomain: Finance We don't know how effective we are at turning quotes into bookings SubSubDomain: Tracking We don't keep track of what we've quoted SubSubDomain: Reporting We have no way of aggregating this information
  11. 11. Bounded Contexts are independent Trip Building IAM CRM Reporting Searching
  12. 12. Lesson 5 Domains and contexts do not always align
  13. 13. Unaligned sub domains and bounded contexts Payroll Accounting Payroll Accounts Manager HR Reporting Accounting Payroll
  14. 14. Other Lessons that I don’t have time to explore Ohh lightning talks, there’s never enough time
  15. 15. Other lessons 6: Temporal constraints are far more costly to implement than Value constraints 7. Constant refactoring is key to understanding a domain 8: Hold event storming sessions, even if you're not event sourcing 9: Applying DDD works and it makes you a better developer 10: If it's not your core domain, don't build it yourself, use an existing solution
  16. 16. Thank you Any questions? (Please leave feedback on the meetup page!)

×