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.

Why do all my ddd apps look the same - Vienna 2014

2,674 views

Published on

There are some recurring themes in Domain-Driven Design applications, and distant domains show more similarities that differences, especially when you start taking into account peculiarities of specific Bounded Contexts. This is where a different type of design could happen.

Published in: Software
  • Paid To Write? Earn up to $200/day on with simple writing jobs. ♥♥♥ http://ishbv.com/easywriter/pdf
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Why do all my ddd apps look the same - Vienna 2014

  1. 1. Why  do  all  my  DDD  apps   look  the  same? @ziobrando
  2. 2. About  me In  the  IT  field  since  ZX  Spectrum   Generally  in  large  scale  projects  (I  might  be  biased)   Freelance  consultant:  NotOnlyCode   Trainer  (Freelance  &  Skills  MaDer)   Technical  Writer   Blogger:  h=p://ziobrando.blogspot.com   TwiDer:  @ziobrando   My  e-­‐mail:   alberto.brandolini@gmail.com
  3. 3. What  I  do 9% 11% 12% 31% 38% Agile  processes Domain-­‐Driven  Design Efficiency  &  Management Architecture Funny  clown
  4. 4. Some  things  work  pre=y  well Focusing on Core Domain
  5. 5. Core Domain
  6. 6. Core  Domain Nothing  less  than  your  best  here.
  7. 7. Some  things  work  pre=y  well Focusing on Core Domain Software Development as a Learning Process
  8. 8. Ignorance  is  the  single   greatest  impediment   to  throughput Dan  North
  9. 9. 100 1 2 3 4 5 6 7 8 9 100% 0 10% 20% 30% 40% 50% 60% 70% 80% 90% Time Ignorance Ignorance This is when we makecritical decisions
  10. 10. 100 1 2 3 4 5 6 7 8 9 100% 0 10% 20% 30% 40% 50% 60% 70% 80% 90% Time Ignorance Ignorance Breakthrough Can we anticipatethis moment?
  11. 11. Is  there  any  impediments   to  breakthroughs  in  the   way  we  develop  soGware?
  12. 12. Hmm...  let  me  think
  13. 13. Learning  impediments Time pressure --> estimations / expectations Domain Experts availability / First Person experience Learning Tools --> Discussion space, whiteboards, etc Safety --> consequences of mistakes / Test env., etc. Organization & Logistics --> noise, interruptions Architecture Food
  14. 14. 100 1 2 3 4 5 6 7 8 9 100% 0 10% 20% 30% 40% 50% 60% 70% 80% 90% Time Ignorance Ignorance Breakthrough Ignorance
  15. 15. Some  things  work  pre=y  well Focusing on Core Domain Software Development as a Learning Process Explicit Bounded Context management
  16. 16. Establish  a  defensive  perimeter
  17. 17. ...and  a  fence
  18. 18. Know  your  borders Our Bounded Context Friendly BC Pool Promo Campaign ... ACL ACL External Service Provider ... ACL API Data Exchange Danger 1 Danger 2 obscure unnecessary complicated concept Promozione FilterCondition Reward Legacy Mess
  19. 19. Some  things  work  pre=y  well Focusing on Core Domain Developing software as a learning process Explicit bounded context management Modeling the domain starting from Events
  20. 20. flow Event Event Event Event Event Domain  Experts  like  Events
  21. 21. flow Event Event Event Event Event Domain  Experts  like  Events Command Command
  22. 22. flow Event Event Event Event Event Domain  Experts  like  Events Command Command Command Event
  23. 23. But...
  24. 24. Why?
  25. 25. 2  similar  problems
  26. 26. STOP Validation
  27. 27. We  should  prevent  the  user   from  entering  incorrect  data.
  28. 28. The Notorious Pub hypothesis
  29. 29. Why  doesn’t  the   police  shut  down  this   place? Mother:
  30. 30. ...
  31. 31. There’s  a  universe  out  there
  32. 32. Same  data different  behaviour
  33. 33. Before AGer missing  or  inconsistent   informaSon   ModificaSons  are  possible   DraG-­‐like  semanScs all  mandatory  informaSon   present   No  changes  allowed   Printed  &  Signed  paper   semanScs
  34. 34. DraG Contract Deal Source Executable negoSaSon finalize sign  off compile Cart OrderPlan
  35. 35. CollaboraSve  ConstrucSon MissingRoof Warning Comments  &   ConversaOon Incomplete, growingartifact
  36. 36. ...just  like  building  soGware
  37. 37. The Deja-vu hypothesis
  38. 38. ...not  always
  39. 39. What  if  the  domain   expert  is...   badly  wrong
  40. 40. Boss: Users  must  follow  a   prescripSve,   mandatory  process
  41. 41. User: The  process  as-­‐is   cannot  be  applied  in   pracSce
  42. 42. Boss: Users  must  follow  a   prescripSve,   mandatory  process
  43. 43. Problem  is...
  44. 44. ©  Alberto  Brandolini  -­‐  2008-­‐2010 I’ve  tried  all   this  sh*t,   man... ...and  your  idea   doesn’t  work...
  45. 45. Some  problems  have   been  solved  well in  soGware   development
  46. 46. ©  Alberto  Brandolini  -­‐  2008-­‐2010 Don’t  push  it   too  far... but  we’ve  learnt   something
  47. 47. How we thought we solved the problem
  48. 48. R.I.P.
  49. 49. Maybe  a  be=er   example... Why  don’t  we   just  teach   them  to  use   github?
  50. 50. Cognitive load
  51. 51. ©  Alberto  Brandolini  -­‐  2008-­‐2010 They’re  users,   not  hackers too  much  cogniSve   load
  52. 52. Integration strategies
  53. 53. Core  Domain  Strategy: Simple enough to be included (in the domain) Good architectural integration UX Demanding (..?) ...increasing amount of generic requirements Collaboration
  54. 54. Where’s  the   instrucSon  manual?
  55. 55. UX  Demanding ...pervasive changes in presentation layer user implicit expectations are high if it’s not beautiful & simple it won’t work ...remember we’re changing people’s behaviour
  56. 56. Conformist (hopefully) better UI Lock-in (surrendering to zombies) Our stuff Big Collaboration Software
  57. 57. Zombies  can  be   friendly  aGer  all...
  58. 58. Welcome

×