SlideShare a Scribd company logo
1 of 94
Driving
your
DBA
crazy

    in
3
easy
steps




  a
scary
story
by
@ziobrando
About
me
In
the
IT
field
since
ZX
Spectrum
Generally
in
large
scale
projects
(I
might
be
biased)
Freelance
consultant:
NotOnlyCode
Trainer
(Freelance
&
Skills
MaBer
+
Zenika)
Technical
Writer
Blogger:
h?p://ziobrando.blogspot.com
TwiBer:
ziobrando


My
e‐mail:

alberto.brandolini@gmail.com
@avanscoperta
www.avanscoperta.it
avanscoperta.wordpress.com
alberto.brandolini@avanscoperta.it




                               ©
Alberto
Brandolini
2009
It
started
small
It
grew
It
became
more
and
more
complex
Somebody’s
goBa
be

   responsible

     for
that
Useful
but
sHll...
When
it
comes
to
run
a

query
with
16
joins
you’re

   the
person
to
call...
When
it
comes
to
run
a

query
with
16
joins
you’re

   the
person
to
call...




   You
can
say
it

     loud,
pal
So
how
do
I
design
a

query
with
16
joins?
I
don’t
know
I
don’t
I’d
rather
explore
the
domain
While
Jack
works
...in
bulk
mode,
of

       course
Type
1
and
Type
2
int Type = 1;
int Type = 1;
                st h is
        a td oe     !!!
    W h
             ea n??
     lin em
if
Germany
is
Type

6
and
Wednesday
is
type

  A
then
type
1
should

        be
...Red
So you’d use a “readable data”, ... are
     you a communist or a lady?
Analyst
             Domain
             Expert                           Developer      Developer




Interviews
                                  Ubiquitous
                                  Language                          Whiteboard
                                                                    discussions




               Application
                 Code                                       Specs and
                                  Test Code               documentation



                                                                           ©
Alberto
Brandolini
2011
Analyst
             Domain
             Expert                           Developer      Developer




Interviews
                                  Ubiquitous
                                  Language                          Whiteboard
                                                                    discussions
                                                                                        SQL




               Application
                 Code                                       Specs and
                                  Test Code               documentation

                                                                                  DBA

                                                                                    ©
Alberto
Brandolini
2011
So You want to speak the Ubiquitous
     Language, you scumbag?




                                      ©
Alberto
Brandolini
2011
So You want to speak the Ubiquitous
     Language, you scumbag?




             The only ubiquitous Language is SQL!
                  Every Database speaks it!
                                       ©
Alberto
Brandolini
2011
What is a Type 1 you
                             scumbag?!




A Type 1 is a Type 1, sir!

                             I can’t hear
                                 you!!
What
is
the
complexity

  you’re
tackling?
Accidental           Domain

 Complexity          Complexity
    Conventions
                        Behaviour
   Primary Keys
                        SemanHcs
        Joins
                         Language
 Legacy encoding
                    Conceptual
integrity
      Replicas
                     Context
Boundary
Stored procedures
                      Domain
Events
      Triggers
How
much
Hme
is

needed
for
a
newly

hired
developer
to

 start
being
really

    producHve?
How
many
things
we

need
to
know
before

 contribuHng
to
the

      system?

A
new
business

requirement
impacRng

 the
applicaRon
in
20

 different
points
is
an

 architecture
problem
unsurprisingly,
the
more

rules
you
have,
the
harder
it

        is
to
evolve...
You can give your heart to DDD,
but your ass belongs to the DB!
Things
you
don’t

share,
even
with

your
best
friend
Your
Toothbrush
Your
Comics
CollecHon




   Your
Database
Your
Harley‐Davidson
The
operaHng
room
Your
Database
THIS DATABASE IS
 MY DATABASE
   TRESPASSERS
   WILL BE SHOT
 SURVIVORS WILL
  BE SHOT AGAIN
             ©
Alberto
Brandolini
2011
Bounded
Context

‐   Context:
a
seSng
where
a
word
      Shipping


    appears
that
determines
its

    meaning

‐   A
porRon
of
the
system
where
the

    Ubiquitous
language
is
consistent   Payment




                                               ©
Alberto
Brandolini
‐
2010
He’s
probably
not
going
to
like
it
                             ©
Alberto
Brandolini
2011
The
infinite
workflow
add/remove Item



                                                                           Ready for
        Open      finalize        Closed         select DeliveryAddress   ShippingMode
                                                                           Selection

                                                                         select Shipping Mode



                                    Ready for                               Ready for
      Shipped         ship                                    pay
                                    Delivery                                Payment



        deliver




     Delivered          return            Returned




                                                                                ©
Alberto
Brandolini
2011
Not
the
same
EnHty
Not
the
same

 Aggregate
Aggregate




            ©
Alberto
Brandolini
‐
2010
Aggregate


A
group
of
objects
that

naturally
belong
together
Unit
of
consistency
in
the

domain
model

updated
in
the
same

transacHon
deleted
together
transferred
together

                              ©
Alberto
Brandolini
‐
2010
Aggregate
                              <<Entity>>         <<Value Object>>

                                         Order           LineItem
                              date               goods
A
group
of
objects
that
      customer
                              amount
                                                 quantity
                                                 notes

naturally
belong
together
                              ...
                                                 subtotal()
                              update()           ...
                              close()
Unit
of
consistency
in
the
   ship()
                              ...

domain
model                  <<Value Object>>
                                                 <<Value Object>>

                                                            Money
                                      Customer
                                                 currency

updated
in
the
same

                              name               amount
                              surname
                              address            plus(Money other)

transacHon
                                                 minus(Money other)
                                                 ...


deleted
together
transferred
together

                                                         ©
Alberto
Brandolini
‐
2010
Customer


                   add/remove Item



                                                                                                     Ready for
       addTocart           Open      finalize        Closed         select DeliveryAddress          ShippingMode
                                                                                                     Selection

                                                                                                   select Shipping Mode



                                                       Ready for                                        Ready for
                         Shipped         ship                                    pay
                                                       Delivery                                         Payment



                           deliver
Logistics


                                                                                            Financial
                                                                                              Dept
                        Delivered          return            Returned




                                                                                               Customer
                                                                                                 Care           ©
Alberto
Brandolini
2011
Different
Domain
Experts

             Different
Goals
 Different
Language
                 Different
Models
Different
Bounded
Contexts
              Different
Aggregates
                            ©
Alberto
Brandolini
‐
2010
And
this
will
lead
to...
DuplicaHon
Dont’

Repeat

Yourself
“Every
piece
of
knowledge
must

 have
a
single,
unambiguous,

  authorita;ve
representa;on

       within
a
system”

      Andy
Hunt
‐
The
Pragma;c

                   Programmer
The
duplicaHon
dogma
What
does
YOU
mean?
The
cost
of
avoiding

duplicaRon
increases

     with
scale
What
does
within
a

 system
mean?
Consider
coupling
also
...
and
by
the
way,

we’re
not
violaHng
the

    DRY
anyway...
          :‐)
Data
DuplicaHon
!=

behavior
duplicaHon
MulHple
aggregates
                               Money
                    currency
                    amount

                    plus(Money other)
                    minus(Money other)
                    ...




 <<Entity>>         <<Root>>             <<Value Object>>
                                                                                     <<Entity>>    <<Root>>
            Order                                    LineItem
                                                                                             Customer
 date                                    goods
                                                                                     name
 customer                                quantity
                                                                                     surname
 amount                                  notes
                                                                                     address
 ...
                                         subtotal()                                  ...
 update()                                ...
                                                                                     updateDiscount()
 close()
                                                                                     ...
 ship()
 ...


                                              shipping address
 <<Value Object>>

      CustomerData
                                   billing address
 name
 surname                                                         <<Value Object>>

                                                                           Address
                                              <<Value Object>>   street
                                                                 city
                                                                 country
                                                                 zipcode




                                                                                                              ©
Alberto
Brandolini
‐
2010
Th
a g at’s
   g re M
       ga Y
         te?
            ...
Aggregate
modeling
Hp
(from

         UDI
Dahan):

  Group
words
according
to
the

 conversaRons
you
use
them
in,

    inclute
aBributes,
not
only

 classes.
Different
Stakeholders/
Domain
Experts
will
use
different

  words
to
fulfill
different
goals
Events
and
aggregate
coordinaHon
 ‐ OperaRons
spanning
mulRple

    aggregates
shouldn’t
be
in
the
same

    Unit
of
Work


‐   CommunicaRon
between
aggregates
       <<Domain Event>>
    is
inherently
asynchronous                   OrderPurchased


‐   Domain
Events
as
a
communicaRon

                                           order
                                           where
    mechanism                              when
                                           amount
    ‐   from
the
outside                   payment method

    ‐   among
aggregates                   ...

                                           ...

                                                       ©
Alberto
Brandolini
‐
2010
Asynchronously
responding
to
events
                                                          <<Domain Event>>
                                                                OrderPurchased

                                                          order
                                                          where
                                                          when
                                                          amount
      <<Entity>>       <<Root>>                           payment method         s u bs                    <<Entity>>    <<Root>>
                                                   s to   ...                             cri b
               Order              su b   s c ri be                                                e s to
                                                                                                                   Customer
      date                                                ...
                                                                                                           name
      customer
                                                                                                           surname
      amount
                                                                                                           address
      ...
                                                                                                           ...
      onPurchaseEvent(...)
                                                                                                           onPurchaseEvent(...)
      update()
                                                                                                           updateDiscount()
      close()
                                                                                                           ...
      ship()
      ...




‐   Don’t
forget:
Business
rules
everything!!!

                                                                                                                        ©
Alberto
Brandolini
‐
2010
The
paper‐based
system



Many
business
pre‐date
computers
TransacHons
are
oeen
NOT
a

business
concern
Data
might
be
stale...
accept
it
ASK
the
Business
!   Single
source
of
truth?




                        ©
Alberto
Brandolini
‐
2010
!        Single
source
of
truth?


    ‐   Once
it
used
be
paper...





                                    ©
Alberto
Brandolini
‐
2010
!      Single
source
of
truth?


    ‐Once
it
used
be
paper...

    ‐ now
the
best
candidate
is
Events



                                 ©
Alberto
Brandolini
‐
2010
That’s
gonna
make
him
REALLY
angry




                           ©
Alberto
Brandolini
2011
©
Alberto
Brandolini
2011
©
Alberto
Brandolini
2011
Does
it
really
have
to

   end
like
that?
E’
necessario
un
processo
di

  sviluppo
agile,
che
permeBa
di

 raccogliere
il
feedback
di
utenH
e

 Our
goal
is
to
establish
a
creaHve

domain
experts,
in
iterazioni
brevi.
           collaboraHon
                             ©
Alberto
Brandolini
2009
We
did
it
with
the
worst
Domain

Experts...
can’t
we
do
it
with
the
DBA?
                                 ©
Alberto
Brandolini
2009
We
did
it
with
the
worst
Domain

Experts...
can’t
we
do
it
with
the
DBA?
                                 ©
Alberto
Brandolini
2009
Humble
Tips:
Personality
Rules
Start
small
Work
Safely
Share
the
fun
Behave
Thank
you
alberto.brandolini@avanscoperta.it
  hBp://ziobrando.blogspot.com
         twiBer:
ziobrando

More Related Content

What's hot

Agile Kaizen: Agile Product Management - Course Slides
Agile Kaizen: Agile Product Management - Course SlidesAgile Kaizen: Agile Product Management - Course Slides
Agile Kaizen: Agile Product Management - Course SlidesProyectalis / Improvement21
 
Ball Point Game: Self-organizing Your Flow of Work
Ball Point Game: Self-organizing Your Flow of WorkBall Point Game: Self-organizing Your Flow of Work
Ball Point Game: Self-organizing Your Flow of WorkMark Grove
 
5 Practices for an Agile Mindset
5 Practices for an Agile Mindset5 Practices for an Agile Mindset
5 Practices for an Agile MindsetMichael Sahota
 
Staying Cool During Summer
Staying Cool During SummerStaying Cool During Summer
Staying Cool During SummerDeborah Davis
 
Visual Design Basics: The Building Blocks of a Great Slide
Visual Design Basics: The Building Blocks of a Great SlideVisual Design Basics: The Building Blocks of a Great Slide
Visual Design Basics: The Building Blocks of a Great SlideChiara Ojeda
 
24 Books You've Never Heard Of - But Will Change Your Life
24 Books You've Never Heard Of - But Will Change Your Life24 Books You've Never Heard Of - But Will Change Your Life
24 Books You've Never Heard Of - But Will Change Your LifeRyan Holiday
 
Doing Agile Isnt The Same As Being Agile
Doing Agile Isnt The Same As Being AgileDoing Agile Isnt The Same As Being Agile
Doing Agile Isnt The Same As Being Agilelazygolfer
 
Activism x Technology
Activism x TechnologyActivism x Technology
Activism x TechnologyWebVisions
 
Doctor's Orders - Burn Your PowerPoints
Doctor's Orders - Burn Your PowerPointsDoctor's Orders - Burn Your PowerPoints
Doctor's Orders - Burn Your PowerPointsNathan Cashion
 
The Science of Presentations
The Science of PresentationsThe Science of Presentations
The Science of PresentationsMike Taylor
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
Comparing Ways to Scale Agile at Agile Product and Project Manager Meetup
Comparing Ways to Scale Agile at Agile Product and Project Manager MeetupComparing Ways to Scale Agile at Agile Product and Project Manager Meetup
Comparing Ways to Scale Agile at Agile Product and Project Manager MeetupBernd Schiffer
 
17 Things Powerful People Say
17 Things Powerful People Say17 Things Powerful People Say
17 Things Powerful People SayGetSmarter
 
9 Ways to Be More Productive - Backed by Science
9 Ways to Be More Productive - Backed by Science9 Ways to Be More Productive - Backed by Science
9 Ways to Be More Productive - Backed by ScienceD B
 

What's hot (20)

Agile Kaizen: Agile Product Management - Course Slides
Agile Kaizen: Agile Product Management - Course SlidesAgile Kaizen: Agile Product Management - Course Slides
Agile Kaizen: Agile Product Management - Course Slides
 
Ball Point Game: Self-organizing Your Flow of Work
Ball Point Game: Self-organizing Your Flow of WorkBall Point Game: Self-organizing Your Flow of Work
Ball Point Game: Self-organizing Your Flow of Work
 
5 Practices for an Agile Mindset
5 Practices for an Agile Mindset5 Practices for an Agile Mindset
5 Practices for an Agile Mindset
 
50.000 orange stickies later
50.000 orange stickies later50.000 orange stickies later
50.000 orange stickies later
 
Staying Cool During Summer
Staying Cool During SummerStaying Cool During Summer
Staying Cool During Summer
 
Presentation Zen
Presentation ZenPresentation Zen
Presentation Zen
 
Transactions redefined
Transactions redefinedTransactions redefined
Transactions redefined
 
Visual Design Basics: The Building Blocks of a Great Slide
Visual Design Basics: The Building Blocks of a Great SlideVisual Design Basics: The Building Blocks of a Great Slide
Visual Design Basics: The Building Blocks of a Great Slide
 
24 Books You've Never Heard Of - But Will Change Your Life
24 Books You've Never Heard Of - But Will Change Your Life24 Books You've Never Heard Of - But Will Change Your Life
24 Books You've Never Heard Of - But Will Change Your Life
 
Doing Agile Isnt The Same As Being Agile
Doing Agile Isnt The Same As Being AgileDoing Agile Isnt The Same As Being Agile
Doing Agile Isnt The Same As Being Agile
 
Activism x Technology
Activism x TechnologyActivism x Technology
Activism x Technology
 
Feels Bad On The Back
Feels Bad On The BackFeels Bad On The Back
Feels Bad On The Back
 
Doctor's Orders - Burn Your PowerPoints
Doctor's Orders - Burn Your PowerPointsDoctor's Orders - Burn Your PowerPoints
Doctor's Orders - Burn Your PowerPoints
 
The Science of Presentations
The Science of PresentationsThe Science of Presentations
The Science of Presentations
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
Comparing Ways to Scale Agile at Agile Product and Project Manager Meetup
Comparing Ways to Scale Agile at Agile Product and Project Manager MeetupComparing Ways to Scale Agile at Agile Product and Project Manager Meetup
Comparing Ways to Scale Agile at Agile Product and Project Manager Meetup
 
Team Leader Skills
Team Leader SkillsTeam Leader Skills
Team Leader Skills
 
Agile Mindset
Agile MindsetAgile Mindset
Agile Mindset
 
17 Things Powerful People Say
17 Things Powerful People Say17 Things Powerful People Say
17 Things Powerful People Say
 
9 Ways to Be More Productive - Backed by Science
9 Ways to Be More Productive - Backed by Science9 Ways to Be More Productive - Backed by Science
9 Ways to Be More Productive - Backed by Science
 

Viewers also liked

Service Oriented Agility @ Italian Agile Day - Bologna 2008
Service Oriented Agility @ Italian Agile Day - Bologna 2008Service Oriented Agility @ Italian Agile Day - Bologna 2008
Service Oriented Agility @ Italian Agile Day - Bologna 2008Alberto Brandolini
 
SHA256E-s4653225--ef2748b2633ddfcaa46f215cc3d9bb9b4bc8bb05b6cacfa6f137c014e6e...
SHA256E-s4653225--ef2748b2633ddfcaa46f215cc3d9bb9b4bc8bb05b6cacfa6f137c014e6e...SHA256E-s4653225--ef2748b2633ddfcaa46f215cc3d9bb9b4bc8bb05b6cacfa6f137c014e6e...
SHA256E-s4653225--ef2748b2633ddfcaa46f215cc3d9bb9b4bc8bb05b6cacfa6f137c014e6e...Rinat Abdullin
 
Enterprise-Class DSL In Groovy & Grails
Enterprise-Class DSL In Groovy & GrailsEnterprise-Class DSL In Groovy & Grails
Enterprise-Class DSL In Groovy & GrailsAlberto Brandolini
 
Fifty shades of fail - redefining success and failure from a lean perspective
Fifty shades of fail - redefining success and failure from a lean perspectiveFifty shades of fail - redefining success and failure from a lean perspective
Fifty shades of fail - redefining success and failure from a lean perspectiveFrancesco Degrassi
 
Writing Domain-Specific Languages in Groovy
Writing Domain-Specific Languages in GroovyWriting Domain-Specific Languages in Groovy
Writing Domain-Specific Languages in GroovyGuillaume Laforge
 
Software ...e tutto ciò che comporta
Software ...e tutto ciò che comportaSoftware ...e tutto ciò che comporta
Software ...e tutto ciò che comportaAlberto Brandolini
 
Buzzword Deathmatch: Agile vs SOA
Buzzword Deathmatch: Agile vs SOABuzzword Deathmatch: Agile vs SOA
Buzzword Deathmatch: Agile vs SOAAlberto Brandolini
 
Il Web design nella Pubblica Amministrazione in 10 passi
Il Web design nella Pubblica Amministrazione in 10 passiIl Web design nella Pubblica Amministrazione in 10 passi
Il Web design nella Pubblica Amministrazione in 10 passiMassimo Azzolini
 
Why do all my ddd apps look the same - Vienna 2014
Why do all my ddd apps look the same - Vienna 2014Why do all my ddd apps look the same - Vienna 2014
Why do all my ddd apps look the same - Vienna 2014Alberto Brandolini
 
Comparing different concurrency models on the JVM
Comparing different concurrency models on the JVMComparing different concurrency models on the JVM
Comparing different concurrency models on the JVMMario Fusco
 
Design leadership and experience management
Design leadership and experience managementDesign leadership and experience management
Design leadership and experience managementLuca Mascaro
 
Projections explained
Projections explainedProjections explained
Projections explainedYves Reynhout
 
The final words about software estimation
The final words about software estimationThe final words about software estimation
The final words about software estimationAlberto Brandolini
 

Viewers also liked (20)

Service Oriented Agility @ Italian Agile Day - Bologna 2008
Service Oriented Agility @ Italian Agile Day - Bologna 2008Service Oriented Agility @ Italian Agile Day - Bologna 2008
Service Oriented Agility @ Italian Agile Day - Bologna 2008
 
SHA256E-s4653225--ef2748b2633ddfcaa46f215cc3d9bb9b4bc8bb05b6cacfa6f137c014e6e...
SHA256E-s4653225--ef2748b2633ddfcaa46f215cc3d9bb9b4bc8bb05b6cacfa6f137c014e6e...SHA256E-s4653225--ef2748b2633ddfcaa46f215cc3d9bb9b4bc8bb05b6cacfa6f137c014e6e...
SHA256E-s4653225--ef2748b2633ddfcaa46f215cc3d9bb9b4bc8bb05b6cacfa6f137c014e6e...
 
Enterprise-Class DSL In Groovy & Grails
Enterprise-Class DSL In Groovy & GrailsEnterprise-Class DSL In Groovy & Grails
Enterprise-Class DSL In Groovy & Grails
 
Possiamo Fare Di Meglio
Possiamo Fare Di MeglioPossiamo Fare Di Meglio
Possiamo Fare Di Meglio
 
Agile Piano B
Agile Piano BAgile Piano B
Agile Piano B
 
Fifty shades of fail - redefining success and failure from a lean perspective
Fifty shades of fail - redefining success and failure from a lean perspectiveFifty shades of fail - redefining success and failure from a lean perspective
Fifty shades of fail - redefining success and failure from a lean perspective
 
Writing Domain-Specific Languages in Groovy
Writing Domain-Specific Languages in GroovyWriting Domain-Specific Languages in Groovy
Writing Domain-Specific Languages in Groovy
 
Software ...e tutto ciò che comporta
Software ...e tutto ciò che comportaSoftware ...e tutto ciò che comporta
Software ...e tutto ciò che comporta
 
Buzzword Deathmatch: Agile vs SOA
Buzzword Deathmatch: Agile vs SOABuzzword Deathmatch: Agile vs SOA
Buzzword Deathmatch: Agile vs SOA
 
Il Web design nella Pubblica Amministrazione in 10 passi
Il Web design nella Pubblica Amministrazione in 10 passiIl Web design nella Pubblica Amministrazione in 10 passi
Il Web design nella Pubblica Amministrazione in 10 passi
 
Why do all my ddd apps look the same - Vienna 2014
Why do all my ddd apps look the same - Vienna 2014Why do all my ddd apps look the same - Vienna 2014
Why do all my ddd apps look the same - Vienna 2014
 
Optimized for what
Optimized for whatOptimized for what
Optimized for what
 
Comparing different concurrency models on the JVM
Comparing different concurrency models on the JVMComparing different concurrency models on the JVM
Comparing different concurrency models on the JVM
 
Design leadership and experience management
Design leadership and experience managementDesign leadership and experience management
Design leadership and experience management
 
Context Mapping In Action
Context Mapping In ActionContext Mapping In Action
Context Mapping In Action
 
Projections explained
Projections explainedProjections explained
Projections explained
 
Event storming recipes
Event storming recipesEvent storming recipes
Event storming recipes
 
The final words about software estimation
The final words about software estimationThe final words about software estimation
The final words about software estimation
 
Event storming
Event stormingEvent storming
Event storming
 
Kickstarting Design Thinking
Kickstarting Design ThinkingKickstarting Design Thinking
Kickstarting Design Thinking
 

Similar to Drive your dba crazy in 3 easy steps

Global im blueprinting security tcw 2012 02-22
Global im blueprinting security tcw 2012 02-22Global im blueprinting security tcw 2012 02-22
Global im blueprinting security tcw 2012 02-22Catharine Macdonald
 
NDC 2011 - SpecFlow: Pragmatic BDD for .NET
NDC 2011 - SpecFlow: Pragmatic BDD for .NETNDC 2011 - SpecFlow: Pragmatic BDD for .NET
NDC 2011 - SpecFlow: Pragmatic BDD for .NETjbandi
 
OjoConsulting Oy Image Service description
OjoConsulting Oy Image Service descriptionOjoConsulting Oy Image Service description
OjoConsulting Oy Image Service descriptionOjoconsulting Oy
 
OpenERP - Building a better, global product with the community
OpenERP - Building a better, global product with the communityOpenERP - Building a better, global product with the community
OpenERP - Building a better, global product with the communityOdoo
 
XBRL Conference Brussels - Bas Groenveld And Paul Hulst - Xbrl Detail Tagging...
XBRL Conference Brussels - Bas Groenveld And Paul Hulst - Xbrl Detail Tagging...XBRL Conference Brussels - Bas Groenveld And Paul Hulst - Xbrl Detail Tagging...
XBRL Conference Brussels - Bas Groenveld And Paul Hulst - Xbrl Detail Tagging...Paul Hulst
 
Eon nus hci_master_class
Eon nus hci_master_classEon nus hci_master_class
Eon nus hci_master_classTianwei_liu
 
Ada 2012
Ada 2012Ada 2012
Ada 2012AdaCore
 
IBM Worklight - Technical Overview
IBM Worklight - Technical OverviewIBM Worklight - Technical Overview
IBM Worklight - Technical OverviewIIC_Barcelona
 
KOTLIN VS. JAVA WHICH ONE IS BEST FOR ANDROID DEVELOPMENT.pptx
KOTLIN VS. JAVA WHICH ONE IS BEST FOR ANDROID DEVELOPMENT.pptxKOTLIN VS. JAVA WHICH ONE IS BEST FOR ANDROID DEVELOPMENT.pptx
KOTLIN VS. JAVA WHICH ONE IS BEST FOR ANDROID DEVELOPMENT.pptxShantanuApurva1
 
Flex 3 Deep Dive
Flex 3 Deep DiveFlex 3 Deep Dive
Flex 3 Deep DiveEffective
 
IntlandSoftware: codeBeamer 6.0 + Requirements Management
IntlandSoftware: codeBeamer 6.0 + Requirements Management IntlandSoftware: codeBeamer 6.0 + Requirements Management
IntlandSoftware: codeBeamer 6.0 + Requirements Management Intland Software GmbH
 
IP Creators & Users Group Description
IP Creators & Users Group DescriptionIP Creators & Users Group Description
IP Creators & Users Group Descriptionedesigner25
 
Adobe flash platform java
Adobe flash platform javaAdobe flash platform java
Adobe flash platform javaCh'ti JUG
 
Adobe flash platform java
Adobe flash platform javaAdobe flash platform java
Adobe flash platform javaMichael Chaize
 
Adobe Shadow - Amsterdam Adobe Camp
Adobe Shadow - Amsterdam Adobe CampAdobe Shadow - Amsterdam Adobe Camp
Adobe Shadow - Amsterdam Adobe CampMihai Corlan
 
Building a Cloud-Native Company in 2020 [DevOps Days Buffalo]
Building a Cloud-Native Company in 2020 [DevOps Days Buffalo]Building a Cloud-Native Company in 2020 [DevOps Days Buffalo]
Building a Cloud-Native Company in 2020 [DevOps Days Buffalo]Komodor
 
Breizh camp adobe flex et les mobiles
Breizh camp   adobe flex et les mobilesBreizh camp   adobe flex et les mobiles
Breizh camp adobe flex et les mobilesMichael Chaize
 

Similar to Drive your dba crazy in 3 easy steps (20)

Global im blueprinting security tcw 2012 02-22
Global im blueprinting security tcw 2012 02-22Global im blueprinting security tcw 2012 02-22
Global im blueprinting security tcw 2012 02-22
 
Worklight Overview
Worklight OverviewWorklight Overview
Worklight Overview
 
NDC 2011 - SpecFlow: Pragmatic BDD for .NET
NDC 2011 - SpecFlow: Pragmatic BDD for .NETNDC 2011 - SpecFlow: Pragmatic BDD for .NET
NDC 2011 - SpecFlow: Pragmatic BDD for .NET
 
OjoConsulting Oy Image Service description
OjoConsulting Oy Image Service descriptionOjoConsulting Oy Image Service description
OjoConsulting Oy Image Service description
 
OpenERP - Building a better, global product with the community
OpenERP - Building a better, global product with the communityOpenERP - Building a better, global product with the community
OpenERP - Building a better, global product with the community
 
XBRL Conference Brussels - Bas Groenveld And Paul Hulst - Xbrl Detail Tagging...
XBRL Conference Brussels - Bas Groenveld And Paul Hulst - Xbrl Detail Tagging...XBRL Conference Brussels - Bas Groenveld And Paul Hulst - Xbrl Detail Tagging...
XBRL Conference Brussels - Bas Groenveld And Paul Hulst - Xbrl Detail Tagging...
 
Eon nus hci_master_class
Eon nus hci_master_classEon nus hci_master_class
Eon nus hci_master_class
 
Ada 2012
Ada 2012Ada 2012
Ada 2012
 
IBM Worklight - Technical Overview
IBM Worklight - Technical OverviewIBM Worklight - Technical Overview
IBM Worklight - Technical Overview
 
Cs207 2
Cs207 2Cs207 2
Cs207 2
 
Doppl Code Sharing
Doppl Code SharingDoppl Code Sharing
Doppl Code Sharing
 
KOTLIN VS. JAVA WHICH ONE IS BEST FOR ANDROID DEVELOPMENT.pptx
KOTLIN VS. JAVA WHICH ONE IS BEST FOR ANDROID DEVELOPMENT.pptxKOTLIN VS. JAVA WHICH ONE IS BEST FOR ANDROID DEVELOPMENT.pptx
KOTLIN VS. JAVA WHICH ONE IS BEST FOR ANDROID DEVELOPMENT.pptx
 
Flex 3 Deep Dive
Flex 3 Deep DiveFlex 3 Deep Dive
Flex 3 Deep Dive
 
IntlandSoftware: codeBeamer 6.0 + Requirements Management
IntlandSoftware: codeBeamer 6.0 + Requirements Management IntlandSoftware: codeBeamer 6.0 + Requirements Management
IntlandSoftware: codeBeamer 6.0 + Requirements Management
 
IP Creators & Users Group Description
IP Creators & Users Group DescriptionIP Creators & Users Group Description
IP Creators & Users Group Description
 
Adobe flash platform java
Adobe flash platform javaAdobe flash platform java
Adobe flash platform java
 
Adobe flash platform java
Adobe flash platform javaAdobe flash platform java
Adobe flash platform java
 
Adobe Shadow - Amsterdam Adobe Camp
Adobe Shadow - Amsterdam Adobe CampAdobe Shadow - Amsterdam Adobe Camp
Adobe Shadow - Amsterdam Adobe Camp
 
Building a Cloud-Native Company in 2020 [DevOps Days Buffalo]
Building a Cloud-Native Company in 2020 [DevOps Days Buffalo]Building a Cloud-Native Company in 2020 [DevOps Days Buffalo]
Building a Cloud-Native Company in 2020 [DevOps Days Buffalo]
 
Breizh camp adobe flex et les mobiles
Breizh camp   adobe flex et les mobilesBreizh camp   adobe flex et les mobiles
Breizh camp adobe flex et les mobiles
 

More from Alberto Brandolini

More from Alberto Brandolini (20)

L'illusione dell'ortogonalità
L'illusione dell'ortogonalitàL'illusione dell'ortogonalità
L'illusione dell'ortogonalità
 
Redesigning everything ITARC Stockholm 2021
Redesigning everything ITARC Stockholm 2021Redesigning everything ITARC Stockholm 2021
Redesigning everything ITARC Stockholm 2021
 
What lies beneath
What lies beneathWhat lies beneath
What lies beneath
 
Redesigning everything (avanscoperta meeutp edition)
Redesigning everything (avanscoperta meeutp edition)Redesigning everything (avanscoperta meeutp edition)
Redesigning everything (avanscoperta meeutp edition)
 
Extreme DDD modelling
Extreme DDD modellingExtreme DDD modelling
Extreme DDD modelling
 
The gordian knot
The gordian knotThe gordian knot
The gordian knot
 
Software design as a cooperative game with EventStorming
Software design as a cooperative game with EventStormingSoftware design as a cooperative game with EventStorming
Software design as a cooperative game with EventStorming
 
La fatina dei denti
La fatina dei dentiLa fatina dei denti
La fatina dei denti
 
The alignment
The alignmentThe alignment
The alignment
 
Chasing elephants
Chasing elephantsChasing elephants
Chasing elephants
 
Reshaping enterrprise software
Reshaping enterrprise softwareReshaping enterrprise software
Reshaping enterrprise software
 
Guerrilla portfolio management
Guerrilla portfolio managementGuerrilla portfolio management
Guerrilla portfolio management
 
The precision blade
The precision bladeThe precision blade
The precision blade
 
Idea stickies green bar - Wroclaw edition
Idea stickies green bar - Wroclaw editionIdea stickies green bar - Wroclaw edition
Idea stickies green bar - Wroclaw edition
 
Managing debt remastered
Managing debt remasteredManaging debt remastered
Managing debt remastered
 
The sweet spot
The sweet spotThe sweet spot
The sweet spot
 
Liberate il kraken
Liberate il krakenLiberate il kraken
Liberate il kraken
 
Bullshit Asymmetry Principle lightning talk
Bullshit Asymmetry Principle lightning talkBullshit Asymmetry Principle lightning talk
Bullshit Asymmetry Principle lightning talk
 
It's not simple at all
It's not simple at allIt's not simple at all
It's not simple at all
 
Pissing against the wind
Pissing against the windPissing against the wind
Pissing against the wind
 

Recently uploaded

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI AgeCprime
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Kaya Weers
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxfnnc6jmgwh
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 

Recently uploaded (20)

Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
A Framework for Development in the AI Age
A Framework for Development in the AI AgeA Framework for Development in the AI Age
A Framework for Development in the AI Age
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)Design pattern talk by Kaya Weers - 2024 (v2)
Design pattern talk by Kaya Weers - 2024 (v2)
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptxGenerative AI - Gitex v1Generative AI - Gitex v1.pptx
Generative AI - Gitex v1Generative AI - Gitex v1.pptx
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 

Drive your dba crazy in 3 easy steps

Editor's Notes

  1. \n
  2. \n
  3. And that&amp;#x2019;s the company I started one year ago.\n
  4. Think of &amp;#x201C;So spoke zarathustra&amp;#x201D; as a soundtrack here :-)\n
  5. \n
  6. It&amp;#x2019;s at the center of every operation. Is the cornerstone of every IT service. One cannot even dream of an IT service without it.\n
  7. \n
  8. Enter Jack, our DBA or &amp;#x201C;Data Oriented Person&amp;#x201D;. He&amp;#x2019;s the person you&amp;#x2019;ll have to argue with at a given moment, when you try to build something different from the same old stuff.\n
  9. And that&amp;#x2019;s the realm of Jack. The E-R Diagram, where complexity means power. \n
  10. Is this diagram really useful? Yes. Perfect for covering the table. Developing software is another thing.\n
  11. \n
  12. Jack is the person to call to solve complex and intricated problems. The fact that maybe he&amp;#x2019;s also the origin of complex and intricated problems is often obscure to the business side of the company.\n
  13. Jack is the person to call to solve complex and intricated problems. The fact that maybe he&amp;#x2019;s also the origin of complex and intricated problems is often obscure to the business side of the company.\n
  14. This used to be a question that struck me after giving a talk about CQRS and DDD. A guy in the audience asked me how did I face this problem.\n
  15. And honestly I didn&amp;#x2019;t know.\n
  16. But even more honestly, I&amp;#x2019;ve never had the chance to face a query with 16 joins. Not in the applications I&amp;#x2019;ve designed. I suspect this has something to do with my design style.\n
  17. Because instead of starting the application from a data model, I normally start designing it around a domain model tailored for specific use cases.\n
  18. \n
  19. Many times, the work of the Data-Oriented Person is obscure to me. Sometimes I get presented with a Data Model even if I&amp;#x2019;ve never asked for one. Sometimes I get forced to use one. More often than not the DBA needs to know what our team is doing while we cannot know what the DBA is doing.\nSometimes it&amp;#x2019;s definitely worth a look.\n
  20. Ans sometimes he&amp;#x2019;s just trying to solve the wrong problem.\n
  21. That&amp;#x2019;s one nasty thing we might encounter while dealing with legacy data model.\nIt takes half a movie to realize that redrum is really murder. But DBA love encodings and the like.\n
  22. That&amp;#x2019;s one thing Data Oriented People love. Giving conventional names to things.\nPicking the names from the domain is not an option.\n
  23. But for Domain Driven Design practitioners, this line of code SCREAMS!\nWhat does this code mean?\n
  24. And of course this means something for the creator, but for us, poor explorers of legacy mess the mening is obscure.\n
  25. Asking for a different coding convention, might result somewhat unpolite, sometimes. Remember, conventions are always clear for the creator. And the creator ha probably been promoted...\n
  26. Yes, that&amp;#x2019;s what we want to do in DDD. We want/need to speak same the Ubiquitous Language in every aspect of software development, with every role involved. It works. It&amp;#x2019;s cool. It&amp;#x2019;s fun.\n
  27. But for some reason, DBAs are untouched by this approach. And they don&amp;#x2019;t care.\n
  28. Apparently they have good reasons for not changing theis approach.\n
  29. And to be effective in such a workplace, one needs to learn all the different tips and tricks of the legacy system. Becoming part of the legacy.\n
  30. Is this the right complexity to learn?\n
  31. I bet not. We are wasting our time on accidental complexity. One that&amp;#x2019;s not part of the domain, but part of the (wrong) solution somebody designed before us.\n
  32. But this complexity has costs. Few measure that, but have a look to how much time is necessary for a newcomer to be productive in such a scenario. You&amp;#x2019;ll have interesting results. Disappointing, I suspect.\n
  33. The lesser, the better. But what about your workplace?\n
  34. And ...let&amp;#x2019;s sat that. Business people are not sadistic monsters. They are simple minds after all. They probably can&amp;#x2019;t imagine an incredibly complex requirement. It&amp;#x2019;s our solution that&amp;#x2019;s messy.\n
  35. It&amp;#x2019;s a software architecture problem and it&amp;#x2019;s an organization problem. Hope nobody gets offended here, but this is an organization which is 2000 years old. Plenty of rules and dogmas, make it roughly impossibile to change without getting into contraddiction. To avoid contraddictions ...the organizations stand still.\n
  36. Some things are definitely harder to change.\n
  37. Let&amp;#x2019;s talk about something different. About sharing the things you care about.\n
  38. This is one little cheap thing you don&amp;#x2019;t share. I wonder why?\n
  39. That&amp;#x2019;s another thing you don&amp;#x2019;t share. You can show it to your friends but they&amp;#x2019;re not allowed to touch it.\n
  40. That&amp;#x2019;s not different for your Harley Davidson. Friends can have a look. Good friends can even touch it. But nobody can ride it except you.\n
  41. That&amp;#x2019;s the same with the operating room. Surgeons do not share it. Nor do they share their tools. They need a sterile environment. You don&amp;#x2019;t turn a little hospital into a bigger one by putting the operating room in a large shared open space. And what used to work in a little hospital is not necessarily good for a bigger one.\n
  42. And that&amp;#x2019;s the one. You don&amp;#x2019;t share your database. Yes, you got it: you don&amp;#x2019;t share your database.\n
  43. I mean it. No one reads from my database. I will change table names and schema. Without dropping you a note. I don&amp;#x2019;t care if this is causing a bug in your system. Your fault. This is MY database and I am the only one allowed to read and write. Tomorrow it will be different, and next week it might be a NoSQL. But will still be MINE.\n
  44. Enter the DDD concept of Bounded Context, that&amp;#x2019;s where our database lives. We need to be coherent and consistent with the language and this is a viable strategy only if we don&amp;#x2019;t share our database.\n\nOf course, there might be data sharing. But in a format that&amp;#x2019;s designed for data sharing. With different evolution needs.\n
  45. What does it mean ...YOUR database? Every database is mine. Following my conventions.\n
  46. Let&amp;#x2019;s see it from another perspective\n
  47. This looks like a state diagram, something our analyst might have sketched to illustrate a business process. So looks like an Order is passing through many different phases.\n
  48. But that&amp;#x2019;s not an Order even if it might refer to the same concrete entity, not all the workflow needs to map to the same class.\n
  49. If we do that ...that&amp;#x2019;s the mess we&amp;#x2019;ll generate!\n
  50. And we&amp;#x2019;re not even in the same aggregate. But to be clear about this we need to clarify a little more about what a aggregate is in DDD\n
  51. The next key DDD building block is Aggregates. The Domain Model isn&amp;#x2019;t flat. Some links are stronger than others (and UML doesn&amp;#x2019;t really help much in rendering it).\n\nIf we start considering consistency and behaviour as the primary drivers for modeling our domain we&amp;#x2019;ll end up with something quite different from a 1-1 projection of the data model.\n
  52. The next key DDD building block is Aggregates. The Domain Model isn&amp;#x2019;t flat. Some links are stronger than others (and UML doesn&amp;#x2019;t really help much in rendering it).\n\nIf we start considering consistency and behaviour as the primary drivers for modeling our domain we&amp;#x2019;ll end up with something quite different from a 1-1 projection of the data model.\n
  53. A model is a tool to solve a problem. We have different stakeholders/roles here each one with a different problem. Are we really thinking that a single model will solve them all?\n
  54. In fact different goals will be the territory of different domain experts speaking their language. Which is tailored around their purpose. To solve different problems we&amp;#x2019;ll have multiple models.\n
  55. Are you prepared for that?\n
  56. Yeah, duplication. The root of all evil. Are you ready for that?\n
  57. You obviously don&amp;#x2019;t like duplication. Because you&amp;#x2019;re adhering to DRY.\n
  58. Everybody apparently is following DRY. So I took a look to the original statement. Which is a little more sophisticated than duplication is evil.\n
  59. Read again Any Hunt&amp;#x2019;s definition, and read also the interview at http://www.artima.com/intv/dry.html\n
  60. \n
  61. If it&amp;#x2019;s just me... I don&amp;#x2019;t repeat myself. If it&amp;#x2019;s just my team, then we communicate and we share a vision about our system. But if it&amp;#x2019;s two or more different teams then the cost of communication is significant, and sharing might not be the most efficient way to deal with this specific issue.\n
  62. How big is the system we&amp;#x2019;re talking about? Can&amp;#x2019;t it be our bounded context?\n
  63. Sharing a piece of code means coupling. If you reuse my piece of code then coupling is introduced in the system. When I refactor I&amp;#x2019;ll need to double check against external test suites also. Flexibility has a higher price, and sometimes I am not willing to pay for it.\n
  64. Yes, we don&amp;#x2019;t need many justifications...\n
  65. Because data and behaviour are different. And data can be the same, but with different roles within the system.\n
  66. For example, in this case we&amp;#x2019;ll notice some duplication, related to customer. But lifecycles of the customer and of the order are different. If a customer moves, we don&amp;#x2019;t want to have all of our past orders changed, at the same time if an order needs to be canceled, we don&amp;#x2019;t want the user to get down the sink as well. \nA little duplication is what allows aggregate lifecycles to be independent.\n
  67. If we don&amp;#x2019;t want to have any duplication at the data layer... that&amp;#x2019;s the mess we&amp;#x2019;ll end up living in.\nIt&amp;#x2019;s called Hell.\n
  68. Focusing on the language can be a good technique. And rarely aggregates come from our legacy data model. You&amp;#x2019;d better forget about it. And start thinking from scratch.\n
  69. How to coordinate communications between aggregates? Well ...DDD now is focusing on Domain Events.\n\n
  70. Domain Events as a communication means between aggregates really simplify things a lot, even at the conceptual level.\n- Do they really belong to the same transaction?\n- Would you want the order to roll-back if you are unable to process the discount for the next order by the same customer?\n\n... but really, how the two things should be related, ...is a business choice! We just have more and more possibilites in our arsenal.\n
  71. Surprisingly, but Udi Dahan and Greg Young in their speeches at last DDDx put the paper-based system at the center of their vision. If a complex system could work without computers ...there must be a reason for that. Sometimes computers just overloaded the systems with more unnecessary complexity.\n
  72. There might be inconsistencies in the data or between the data and the paper. In many system (especially those data-entry based) the paper used to be the Single Source of Truth, but larger integrated systems Events are probably a better candidate.\n
  73. There might be inconsistencies in the data or between the data and the paper. In many system (especially those data-entry based) the paper used to be the Single Source of Truth, but larger integrated systems Events are probably a better candidate.\n
  74. You mean the Database is not the center of things anymore? Not here!\n
  75. So Jack is going to be Angry and trying to rise some consistency or security issue.\n
  76. But since we did our job well, he&amp;#x2019;ll be thwarted by our system performances, and the old architecture will look like an ancient nightmare....\n
  77. \n
  78. That&amp;#x2019;s not the way we&amp;#x2019;re supposed to work.\n
  79. We strived to establishe a good collaboration with the domain expert...\n
  80. \n
  81. There&amp;#x2019;s not a rule. Talk with the people. Some of them are nice. Understand their needs.\n
  82. Do not start from huge refactorings, unless the problem is really small (only ...the legacy solution is large)\n
  83. Do not take any unnecessary risk. Keep backups, and ensure security policies are respected.\n
  84. You&amp;#x2019;re having fun, and they&amp;#x2019;re not. Nobody likes to be treated like the old boring guy. You&amp;#x2019;re doing something new, involve them.\n
  85. Be a fair person. Even if you don&amp;#x2019;t like their approach do not surprise them with nasty moves.\n
  86. So that also Jack might find a happy place in the picture.\n
  87. \n