SlideShare a Scribd company logo
1 of 94
Download to read offline
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

Mob Programming : How To Never Stop Producing Value - Scrum Gathering Talk 03...
Mob Programming : How To Never Stop Producing Value - Scrum Gathering Talk 03...Mob Programming : How To Never Stop Producing Value - Scrum Gathering Talk 03...
Mob Programming : How To Never Stop Producing Value - Scrum Gathering Talk 03...André De Sousa
 
TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019Paulo Clavijo
 
The Lego Kanban Game
The Lego Kanban GameThe Lego Kanban Game
The Lego Kanban GameLiz Keogh
 
BoSUSA13 | Bob Moesta Chris Spiek | Uncovering the Jobs to be Done
BoSUSA13 | Bob Moesta Chris Spiek | Uncovering the Jobs to be DoneBoSUSA13 | Bob Moesta Chris Spiek | Uncovering the Jobs to be Done
BoSUSA13 | Bob Moesta Chris Spiek | Uncovering the Jobs to be DoneBusiness of Software Conference
 
Lego For Extended Scrum Simulation
Lego For Extended Scrum SimulationLego For Extended Scrum Simulation
Lego For Extended Scrum SimulationAlexey Krivitsky
 
Being Agile with Scrum - koders.co
Being Agile with Scrum - koders.coBeing Agile with Scrum - koders.co
Being Agile with Scrum - koders.coEnder Aydin Orak
 
MHA2018 - Agile Transformation Explained - Mike Cottmeyer
MHA2018 - Agile Transformation Explained - Mike CottmeyerMHA2018 - Agile Transformation Explained - Mike Cottmeyer
MHA2018 - Agile Transformation Explained - Mike CottmeyerAgileDenver
 
Mke agile 032014 Slicing the cake: User Story Decomposition
Mke agile 032014   Slicing the cake: User Story DecompositionMke agile 032014   Slicing the cake: User Story Decomposition
Mke agile 032014 Slicing the cake: User Story DecompositionDave Neuman
 
The Observability Pipeline
The Observability PipelineThe Observability Pipeline
The Observability PipelineTyler Treat
 
Story Mapping in a Nutshell
Story Mapping in a NutshellStory Mapping in a Nutshell
Story Mapping in a NutshellVersionOne
 
Agile for Marketing
Agile for MarketingAgile for Marketing
Agile for MarketingHubSpot
 
Agile software development and Scrum - Framework
Agile software development and Scrum - FrameworkAgile software development and Scrum - Framework
Agile software development and Scrum - FrameworkAbdul Ghaffar, PMP
 
Introduction to Event Storming
Introduction to Event StormingIntroduction to Event Storming
Introduction to Event StormingAlexey Zimarev
 

What's hot (20)

Mob Programming : How To Never Stop Producing Value - Scrum Gathering Talk 03...
Mob Programming : How To Never Stop Producing Value - Scrum Gathering Talk 03...Mob Programming : How To Never Stop Producing Value - Scrum Gathering Talk 03...
Mob Programming : How To Never Stop Producing Value - Scrum Gathering Talk 03...
 
TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019TDD and Simple Design Workshop - Session 1 - March 2019
TDD and Simple Design Workshop - Session 1 - March 2019
 
Mob programming
Mob programmingMob programming
Mob programming
 
BoSUSA20 Online | Bob Moesta | Demand Side Sales 101
BoSUSA20 Online | Bob Moesta | Demand Side Sales 101BoSUSA20 Online | Bob Moesta | Demand Side Sales 101
BoSUSA20 Online | Bob Moesta | Demand Side Sales 101
 
Mob Programming
Mob ProgrammingMob Programming
Mob Programming
 
The Lego Kanban Game
The Lego Kanban GameThe Lego Kanban Game
The Lego Kanban Game
 
Kanban in Action
Kanban in ActionKanban in Action
Kanban in Action
 
BoSUSA13 | Bob Moesta Chris Spiek | Uncovering the Jobs to be Done
BoSUSA13 | Bob Moesta Chris Spiek | Uncovering the Jobs to be DoneBoSUSA13 | Bob Moesta Chris Spiek | Uncovering the Jobs to be Done
BoSUSA13 | Bob Moesta Chris Spiek | Uncovering the Jobs to be Done
 
Lego For Extended Scrum Simulation
Lego For Extended Scrum SimulationLego For Extended Scrum Simulation
Lego For Extended Scrum Simulation
 
Spotify scaling fr
Spotify scaling frSpotify scaling fr
Spotify scaling fr
 
Being Agile with Scrum - koders.co
Being Agile with Scrum - koders.coBeing Agile with Scrum - koders.co
Being Agile with Scrum - koders.co
 
MHA2018 - Agile Transformation Explained - Mike Cottmeyer
MHA2018 - Agile Transformation Explained - Mike CottmeyerMHA2018 - Agile Transformation Explained - Mike Cottmeyer
MHA2018 - Agile Transformation Explained - Mike Cottmeyer
 
Mke agile 032014 Slicing the cake: User Story Decomposition
Mke agile 032014   Slicing the cake: User Story DecompositionMke agile 032014   Slicing the cake: User Story Decomposition
Mke agile 032014 Slicing the cake: User Story Decomposition
 
The Observability Pipeline
The Observability PipelineThe Observability Pipeline
The Observability Pipeline
 
Story Mapping in a Nutshell
Story Mapping in a NutshellStory Mapping in a Nutshell
Story Mapping in a Nutshell
 
Agile for Marketing
Agile for MarketingAgile for Marketing
Agile for Marketing
 
Agile software development and Scrum - Framework
Agile software development and Scrum - FrameworkAgile software development and Scrum - Framework
Agile software development and Scrum - Framework
 
Introduction to Event Storming
Introduction to Event StormingIntroduction to Event Storming
Introduction to Event Storming
 
Methodes agile
Methodes agileMethodes agile
Methodes agile
 
Agile coach - roadmap and user story map
Agile coach - roadmap and user story map Agile coach - roadmap and user story map
Agile coach - roadmap and user story map
 

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
 
Transactions redefined
Transactions redefinedTransactions redefined
Transactions redefined
 
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
 

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

L'illusione dell'ortogonalità
L'illusione dell'ortogonalitàL'illusione dell'ortogonalità
L'illusione dell'ortogonalitàAlberto Brandolini
 
Redesigning everything ITARC Stockholm 2021
Redesigning everything ITARC Stockholm 2021Redesigning everything ITARC Stockholm 2021
Redesigning everything ITARC Stockholm 2021Alberto Brandolini
 
Redesigning everything (avanscoperta meeutp edition)
Redesigning everything (avanscoperta meeutp edition)Redesigning everything (avanscoperta meeutp edition)
Redesigning everything (avanscoperta meeutp edition)Alberto Brandolini
 
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 EventStormingAlberto Brandolini
 
Reshaping enterrprise software
Reshaping enterrprise softwareReshaping enterrprise software
Reshaping enterrprise softwareAlberto Brandolini
 
Guerrilla portfolio management
Guerrilla portfolio managementGuerrilla portfolio management
Guerrilla portfolio managementAlberto Brandolini
 
Idea stickies green bar - Wroclaw edition
Idea stickies green bar - Wroclaw editionIdea stickies green bar - Wroclaw edition
Idea stickies green bar - Wroclaw editionAlberto Brandolini
 
Bullshit Asymmetry Principle lightning talk
Bullshit Asymmetry Principle lightning talkBullshit Asymmetry Principle lightning talk
Bullshit Asymmetry Principle lightning talkAlberto 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
 
50.000 orange stickies later
50.000 orange stickies later50.000 orange stickies later
50.000 orange stickies later
 
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
 

Recently uploaded

Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentMahmoud Rabie
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 
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
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
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
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...BookNet Canada
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...itnewsafrica
 
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
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesManik S Magar
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Karmanjay Verma
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
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
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Mark Simos
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 

Recently uploaded (20)

Digital Tools & AI in Career Development
Digital Tools & AI in Career DevelopmentDigital Tools & AI in Career Development
Digital Tools & AI in Career Development
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 
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
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
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...
 
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
Transcript: New from BookNet Canada for 2024: BNC SalesData and LibraryData -...
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
Irene Moetsana-Moeng: Stakeholders in Cybersecurity: Collaborative Defence fo...
 
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
 
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotesMuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
MuleSoft Online Meetup Group - B2B Crash Course: Release SparkNotes
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
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
 
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
Tampa BSides - The No BS SOC (slides from April 6, 2024 talk)
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 

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