SlideShare a Scribd company logo
1 of 158
Download to read offline
Dirty
Harry’s
Style
@ziobrando
DDD
giovedì 23 maggio 13
Goal #1
Domain-Driven
Design NOT
starting from
scratch
giovedì 23 maggio 13
Goal #2
Arrive to DDD in a
non prescriptive
fashion
giovedì 23 maggio 13
Do you really need me?
giovedì 23 maggio 13
Checkpoint
When to apply DDD?
- Complex problem
- High expectations
giovedì 23 maggio 13
Anti-pattern
I want to do DDD
I don’t know DDD well...
...so I apply DDD to a
simple problem
I don’t see any advantage
...DDD is useless.
giovedì 23 maggio 13
Wrong
giovedì 23 maggio 13
We don’t learn in flatlandsgiovedì 23 maggio 13
giovedì 23 maggio 13
giovedì 23 maggio 13
That’s not our job
giovedì 23 maggio 13
Call a Bomb Squad
giovedì 23 maggio 13
Our Safety Net
✓Environments
✓Build Scripts
✓Test suite
✓Private Database
✓Fixtures
✓Continuous
Integration
✓...
giovedì 23 maggio 13
Tools
giovedì 23 maggio 13
Professionals
giovedì 23 maggio 13
Proper Tools
giovedì 23 maggio 13
Even in the worst situations
giovedì 23 maggio 13
giovedì 23 maggio 13
Could	
  
you	
  please	
  pass	
  me	
  
the	
  ...thing?
The	
  s5ngy	
  one?
Yes,	
  
the	
  one	
  that	
  looks	
  
like	
  ...	
  that
giovedì 23 maggio 13
Tools
giovedì 23 maggio 13
Precision
giovedì 23 maggio 13
Contraceptive
Aspirin
giovedì 23 maggio 13
Language
giovedì 23 maggio 13
Siete
giovedì 23 maggio 13
avanscoperta
Checklist
Tools? --> Tool. (always the same)
Precision? --> “When you are in state 12,
the field MRKT_NFLD can be only B or
K”
Language? --> :-(
giovedì 23 maggio 13
giovedì 23 maggio 13
Application
giovedì 23 maggio 13
Application
Application
giovedì 23 maggio 13
Application
ApplicationApplication
giovedì 23 maggio 13
Application
ApplicationApplication
Application
giovedì 23 maggio 13
Application
ApplicationApplication
Application
Application
giovedì 23 maggio 13
Application
ApplicationApplication
Application
Application
Database
giovedì 23 maggio 13
Application
ApplicationApplication
Application
Application
Database
Application
giovedì 23 maggio 13
Application
ApplicationApplication
Application
Application
Database
Application
Application
giovedì 23 maggio 13
Application
ApplicationApplication
Application
Application
Database
Application
Application
Database
giovedì 23 maggio 13
Application
ApplicationApplication
Application
Application
Database
Application
Application
Database
giovedì 23 maggio 13
Application
ApplicationApplication
Application
Application
Database
Application
Application
Database
Data-based integration
giovedì 23 maggio 13
avanscoperta
Data-­‐based	
  integra5on	
  checklist
Can we tell...
Which application is responsible for the data
structure?
Which requirement influenced data definition?
Is it still valid?
It it valid in my context?
Which applications use that data?
Which consequences if we alter the structure?
giovedì 23 maggio 13
Goal #1
Arrive to DDD in a
brownfield
scenario
giovedì 23 maggio 13
Solution #1
Put the mess
aside and start
form a greenfield
scenario
giovedì 23 maggio 13
Which problem
do we want to
solve?
giovedì 23 maggio 13
One
giovedì 23 maggio 13
Our
problem
giovedì 23 maggio 13
85%
15%
Our PROBLEM domain
past SOLUTIONS
Complexity
giovedì 23 maggio 13
Our problem
Il nostro contesto
I nostri dati
I dati dacondividere
Altro contesto
Altro contesto
Il nostro database
Language!!
giovedì 23 maggio 13
TRESPASSERS
WILL BE SHOT
SURVIVORS WILL
BE SHOT AGAIN
THIS DATABASE IS
MY DATABASE
giovedì 23 maggio 13
“Put	
  in	
  this	
  way,	
  it’s	
  
simple...”
Dev:
giovedì 23 maggio 13
giovedì 23 maggio 13
DDD helps to
solve complex
problems,
giovedì 23 maggio 13
DDD helps to
solve complex
problems,
NOT to make
simple problems
complicated
giovedì 23 maggio 13
Zombie
management
strategies
giovedì 23 maggio 13
A fence...
giovedì 23 maggio 13
Learnt from the Romans
giovedì 23 maggio 13
giovedì 23 maggio 13
Romulus,	
  let	
  me	
  
run	
  this	
  query,	
  
please...
giovedì 23 maggio 13
Romulus,	
  let	
  me	
  
run	
  this	
  query,	
  
please...
Nope.
giovedì 23 maggio 13
Romulus,	
  let	
  me	
  
run	
  this	
  query,	
  
please...
Nope.
Please,	
  
Romulus	
  ...	
  it’s	
  a	
  
read-­‐only	
  one
giovedì 23 maggio 13
giovedì 23 maggio 13
giovedì 23 maggio 13
Bounded
Context
giovedì 23 maggio 13
Anti-Corruption Layer
getContattiUnici(…):List<Contatto>
<<Service>>
ContactService
ContactService
context boundary
Attributo
Attributo
<<Value Object>>
Contatto
Attributo
Attributo
<<Entity>>
MyEntity
Our Context ACL
context boundary
Componente
Other Context
giovedì 23 maggio 13
Anti-Corruption Layer
getContattiUnici(…):List<Contatto>
<<Service>>
ContactService
ContactService
context boundary
Attributo
Attributo
<<Value Object>>
Contatto
Attributo
Attributo
<<Entity>>
MyEntity
Our Context ACL
context boundary
Componente
Other Context
Model as it
should be
giovedì 23 maggio 13
Anti-Corruption Layer
getContattiUnici(…):List<Contatto>
<<Service>>
ContactService
ContactService
context boundary
Attributo
Attributo
<<Value Object>>
Contatto
Attributo
Attributo
<<Entity>>
MyEntity
Our Context ACL
context boundary
Componente
Other Context
Model as it
should be
The legacy
component
with all its
troubles
giovedì 23 maggio 13
Anti-Corruption Layer
getContattiUnici(…):List<Contatto>
<<Service>>
ContactService
ContactService
context boundary
Attributo
Attributo
<<Value Object>>
Contatto
Attributo
Attributo
<<Entity>>
MyEntity
Our Context ACL
context boundary
Componente
Other Context
Model as it
should be
The legacy
component
with all its
troubles
Here we solve the
mess, by any
possible means.
giovedì 23 maggio 13
...and within our
Bounded Context...
giovedì 23 maggio 13
The ideal model
giovedì 23 maggio 13
It’s not that
important...
giovedì 23 maggio 13
Compliance
giovedì 23 maggio 13
There’s no
medal
giovedì 23 maggio 13
But maybe...
http://www.youtube.com/watch?v=zDZFcDGpL4U
giovedì 23 maggio 13
DDD as a
learning
process
giovedì 23 maggio 13
DDD patterns
support
frequent
rewritings
giovedì 23 maggio 13
DDD as an
architecture that
supports
evolution
giovedì 23 maggio 13
...better provide us
the right support
tool for design
giovedì 23 maggio 13
Whiteboards
giovedì 23 maggio 13
CRC Cards
giovedì 23 maggio 13
“Can	
  we	
  really	
  do	
  
this?”
P.O.:
giovedì 23 maggio 13
giovedì 23 maggio 13
“We	
  need	
  to	
  put	
  a	
  
valida9on	
  layer	
  to	
  
avoid	
  incorrect	
  data	
  
to	
  enter	
  into	
  the	
  
system”
Dev:
giovedì 23 maggio 13
Really?
giovedì 23 maggio 13
giovedì 23 maggio 13
Complex
validation is a
smell
giovedì 23 maggio 13
(almost) same data
Different Behaviour
submit
registerPayment
amount
customer
state
<<Entity>>
Fattura
edit
validate
amount
customer
<<Entity>>
InvoicePreview
giovedì 23 maggio 13
Multiple models
giovedì 23 maggio 13
Frequent
Archetypes
giovedì 23 maggio 13
3 archetypes?
Collaborative construction
Topic+Conversation
Facebook, Basecamp, Github
Execution
State machines, Commands
Tracking
Logging, Auditing, Datawarehouse, Events
giovedì 23 maggio 13
Haven’t put “why do all my DDD
application looks the same” online, yet
giovedì 23 maggio 13
What does the
DBA say?
giovedì 23 maggio 13
“I	
  was	
  expec9nd	
  the	
  
DB	
  structure	
  to	
  be	
  
defined	
  once	
  for	
  
all...”
DBA:
giovedì 23 maggio 13
...
giovedì 23 maggio 13
My first idea...
giovedì 23 maggio 13
giovedì 23 maggio 13
She doesn’t exist in
reality
giovedì 23 maggio 13
Can a software
component designed
before one application
be adequate to N
following applications?
giovedì 23 maggio 13
Obstaclesgiovedì 23 maggio 13
giovedì 23 maggio 13
You have to
watch your back
before interacting
with system X
giovedì 23 maggio 13
There are some
f***ing stored
procedures that run
every 10 minutes
giovedì 23 maggio 13
Nobody knows
exactly how do
they work
giovedì 23 maggio 13
Nobody knows
exactly how do
they work
Nobody ever
changed them and
came back alive
giovedì 23 maggio 13
giovedì 23 maggio 13
Hrmpf
giovedì 23 maggio 13
Risk...
giovedì 23 maggio 13
Dress	
  up	
  
properly	
  before	
  going	
  
out!
Are	
  you	
  
wearing	
  your	
  T-­‐
shirt?Lock	
  the	
  door	
  when	
  
you	
  get	
  out!
Drive	
  slowly!
giovedì 23 maggio 13
Anxiety
giovedì 23 maggio 13
Cognitive load
How many
things should
I know, before
touching the
code?
giovedì 23 maggio 13
can we be
ignorant and
productive at the
same time?
giovedì 23 maggio 13
Transaction management?
Presentation Layer Application Layer Domain Layer Infrastructure
Layer
DDD
99%
ofexamplesgiovedì 23 maggio 13
Repository & SRP
delivery()
price
customer
<<Entity>>
Order
createOrder(…)
delivery(order_ID, …)
<<Facade>>
Application Facade
+saveChanges()
<<ORM>>
Context
save(Order, Context)
findById(id, Context)
<<Repository>>
OrderRepository
createEmpty()
<<factory>>
OrderFactory
opens / closes
uses
creates
Infrastructure layer
Application Layer
Domain Layer
Riceve il contesto
transazionale
dall'esternoIl Repository effettua le
operazioni di aggiunta e/o
rimozione dal contesto, ma è
l'application layer ad invocare
saveChanges()
Crea il
contesto e lo
passa al
repository
giovedì 23 maggio 13
Do not
accept
candies
from
strangers
giovedì 23 maggio 13
...why don’t we
set up a shared
database table?...
giovedì 23 maggio 13
giovedì 23 maggio 13
Ooops...
giovedì 23 maggio 13
Do not
accept
candies
from
strangers
giovedì 23 maggio 13
Do not accept
candies
giovedì 23 maggio 13
Motivations
giovedì 23 maggio 13
Difficult childhood
name
surname
phoneNumber
Person
studentCardNumber
Student
subject
status
Professor
giovedì 23 maggio 13
Show me
you’re a
person...
giovedì 23 maggio 13
...print
yourself!
giovedì 23 maggio 13
Difficult Childhood
name
surname
phoneNumber
Person
studentCardNumber
Student
subject
status
Professor
giovedì 23 maggio 13
The two things do not match
...and it’s not an ORM problem
giovedì 23 maggio 13
Every
architectural rule
that starts with
“every” is wrong
giovedì 23 maggio 13
Consequences
giovedì 23 maggio 13
You see,the worls is
divided into two
categories: the one in a
Bounded Context,and
the one who digs...
giovedì 23 maggio 13
You ...dig!
giovedì 23 maggio 13
Estimations
giovedì 23 maggio 13
The tile layer
giovedì 23 maggio 13
giovedì 23 maggio 13
giovedì 23 maggio 13
giovedì 23 maggio 13
Accounting it right
giovedì 23 maggio 13
Accounting it right
Implementing amazing
functionalities € 10.000
giovedì 23 maggio 13
Accounting it right
Implementing amazing
functionalities € 10.000
Learning new techniques
and tools € 4.000
giovedì 23 maggio 13
Accounting it right
Implementing amazing
functionalities € 10.000
Learning new techniques
and tools € 4.000
Establish Safety Conditions € 12.000
giovedì 23 maggio 13
Accounting it right
Implementing amazing
functionalities € 10.000
Learning new techniques
and tools € 4.000
Establish Safety Conditions € 12.000
Cleaning up somebody else’s
mess € 8.000
giovedì 23 maggio 13
giovedì 23 maggio 13
That	
  will	
  cost	
  you	
  
an	
  €xtra,	
  sir...
giovedì 23 maggio 13
Value
giovedì 23 maggio 13
Value
Don’t forget to
count the extra
value also.
giovedì 23 maggio 13
Estimations
giovedì 23 maggio 13
Estimations
“Explorative” evolutions
giovedì 23 maggio 13
Estimations
“Explorative” evolutions
Legacy “Pandora’s box”
giovedì 23 maggio 13
Ignorance based planning
100%
0
10%
20%
30%
40%
50%
60%
70%
80%
90%
Ignorance
Ignorance
BreakthroughIgnorance
giovedì 23 maggio 13
Gold plating?
giovedì 23 maggio 13
Product	
  
Owner
Team
giovedì 23 maggio 13
Product	
  
Owner
Team
A	
  simple	
  requirement
giovedì 23 maggio 13
Product	
  
Owner
Team
A	
  simple	
  requirement A	
  simple	
  requirement
giovedì 23 maggio 13
Product	
  
Owner
Team
A	
  simple	
  requirement A	
  simple	
  requirement
Done	
  as	
  DDD	
  prescribes
giovedì 23 maggio 13
Product	
  
Owner
Team
A	
  simple	
  requirement A	
  simple	
  requirement
Done	
  as	
  DDD	
  prescribes
In	
  a	
  clean	
  and	
  elegant	
  
fashion
giovedì 23 maggio 13
Product	
  
Owner
Team
A	
  simple	
  requirement A	
  simple	
  requirement
Done	
  as	
  DDD	
  prescribes
In	
  a	
  clean	
  and	
  elegant	
  
fashion
Soon
giovedì 23 maggio 13
Product	
  
Owner
Team
A	
  simple	
  requirement A	
  simple	
  requirement
Done	
  as	
  DDD	
  prescribes
In	
  a	
  clean	
  and	
  elegant	
  
fashion
Soon ....ooops
giovedì 23 maggio 13
Yes, but how can I
understand if I am
doing DDD?
giovedì 23 maggio 13
avanscoperta
Are	
  we	
  really	
  doing	
  DDD?
Result is better than expectations
No fear in rewriting pieces
We’re having fun
giovedì 23 maggio 13
Questions?
giovedì 23 maggio 13
Questions?
Really, you can...
giovedì 23 maggio 13
Questions?
giovedì 23 maggio 13
Questions?
Really, you can...
giovedì 23 maggio 13
Thank you
@ziobrando
alberto.brandolini@avanscoperta.it
giovedì 23 maggio 13

More Related Content

What's hot

Test Driven Development @ Xe.Net
Test Driven Development @ Xe.NetTest Driven Development @ Xe.Net
Test Driven Development @ Xe.NetMauro Servienti
 
Le 3 Rivoluzioni - Italian Agile Day
Le 3 Rivoluzioni - Italian Agile DayLe 3 Rivoluzioni - Italian Agile Day
Le 3 Rivoluzioni - Italian Agile DayClaudio Perrone
 
Lean Prototyping
Lean PrototypingLean Prototyping
Lean PrototypingLuca Scarpa
 
Lean prototyping al servizio del designer
Lean prototyping al servizio del designerLean prototyping al servizio del designer
Lean prototyping al servizio del designerLuca Scarpa
 
Cosa manca ad un brief
Cosa manca ad un briefCosa manca ad un brief
Cosa manca ad un briefIlaria Mauric
 
I quattro punti cardinali per un orientamento lean nell'impr... insomma.
I quattro punti cardinali per un orientamento lean nell'impr... insomma.I quattro punti cardinali per un orientamento lean nell'impr... insomma.
I quattro punti cardinali per un orientamento lean nell'impr... insomma.Jacopo Romei
 

What's hot (7)

Test Driven Development @ Xe.Net
Test Driven Development @ Xe.NetTest Driven Development @ Xe.Net
Test Driven Development @ Xe.Net
 
Anti pattern
Anti patternAnti pattern
Anti pattern
 
Le 3 Rivoluzioni - Italian Agile Day
Le 3 Rivoluzioni - Italian Agile DayLe 3 Rivoluzioni - Italian Agile Day
Le 3 Rivoluzioni - Italian Agile Day
 
Lean Prototyping
Lean PrototypingLean Prototyping
Lean Prototyping
 
Lean prototyping al servizio del designer
Lean prototyping al servizio del designerLean prototyping al servizio del designer
Lean prototyping al servizio del designer
 
Cosa manca ad un brief
Cosa manca ad un briefCosa manca ad un brief
Cosa manca ad un brief
 
I quattro punti cardinali per un orientamento lean nell'impr... insomma.
I quattro punti cardinali per un orientamento lean nell'impr... insomma.I quattro punti cardinali per un orientamento lean nell'impr... insomma.
I quattro punti cardinali per un orientamento lean nell'impr... insomma.
 

Viewers also liked

Designing APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignDesigning APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignLaunchAny
 
Rethinking Enterprise Software - Brandolini
Rethinking Enterprise Software - BrandoliniRethinking Enterprise Software - Brandolini
Rethinking Enterprise Software - BrandoliniCodemotion
 
Introduction To Domain Driven Design
Introduction To Domain Driven DesignIntroduction To Domain Driven Design
Introduction To Domain Driven DesignPaul Rayner
 
Strategic Appplication Development with Domain-Driven Design (DDD)
Strategic Appplication Development with Domain-Driven Design (DDD)Strategic Appplication Development with Domain-Driven Design (DDD)
Strategic Appplication Development with Domain-Driven Design (DDD)Dennis Traub
 
Evil By Design
Evil By DesignEvil By Design
Evil By DesignJef Claes
 
Domain Driven Design Up And Running
Domain Driven Design Up And RunningDomain Driven Design Up And Running
Domain Driven Design Up And RunningIASA
 
Strategic design using ddd
Strategic design using dddStrategic design using ddd
Strategic design using dddPaul Rayner
 
What if we stored events instead of state?
What if we stored events instead of state?What if we stored events instead of state?
What if we stored events instead of state?Jef Claes
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)Mauro Leal
 
Domain Driven Design - DDDSydney 2011
Domain Driven Design - DDDSydney 2011Domain Driven Design - DDDSydney 2011
Domain Driven Design - DDDSydney 2011thinkddd
 
Model storming - a different approach to collaborative model discovery (Vilni...
Model storming - a different approach to collaborative model discovery (Vilni...Model storming - a different approach to collaborative model discovery (Vilni...
Model storming - a different approach to collaborative model discovery (Vilni...Alberto Brandolini
 
DDD / Microservices @ Trivento Spring Camp, Utrecht, 2015
DDD / Microservices @ Trivento Spring Camp, Utrecht, 2015DDD / Microservices @ Trivento Spring Camp, Utrecht, 2015
DDD / Microservices @ Trivento Spring Camp, Utrecht, 2015Dennis Traub
 
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...Alberto Brandolini
 
Unleash Your Domain With Greg Young @ DDD-Day
Unleash Your Domain With Greg Young @ DDD-DayUnleash Your Domain With Greg Young @ DDD-Day
Unleash Your Domain With Greg Young @ DDD-DayDotNetMarche
 
Taming Complex Domains with Domain Driven Design
Taming Complex Domains with Domain Driven DesignTaming Complex Domains with Domain Driven Design
Taming Complex Domains with Domain Driven DesignAlberto Brandolini
 

Viewers also liked (20)

Designing APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven DesignDesigning APIs and Microservices Using Domain-Driven Design
Designing APIs and Microservices Using Domain-Driven Design
 
Rethinking Enterprise Software - Brandolini
Rethinking Enterprise Software - BrandoliniRethinking Enterprise Software - Brandolini
Rethinking Enterprise Software - Brandolini
 
Introduction To Domain Driven Design
Introduction To Domain Driven DesignIntroduction To Domain Driven Design
Introduction To Domain Driven Design
 
Strategic Appplication Development with Domain-Driven Design (DDD)
Strategic Appplication Development with Domain-Driven Design (DDD)Strategic Appplication Development with Domain-Driven Design (DDD)
Strategic Appplication Development with Domain-Driven Design (DDD)
 
It's not simple at all
It's not simple at allIt's not simple at all
It's not simple at all
 
Evil By Design
Evil By DesignEvil By Design
Evil By Design
 
Domain Driven Design Up And Running
Domain Driven Design Up And RunningDomain Driven Design Up And Running
Domain Driven Design Up And Running
 
Strategic design using ddd
Strategic design using dddStrategic design using ddd
Strategic design using ddd
 
DDDesign Challenges
DDDesign ChallengesDDDesign Challenges
DDDesign Challenges
 
What if we stored events instead of state?
What if we stored events instead of state?What if we stored events instead of state?
What if we stored events instead of state?
 
Domain Driven Design (DDD)
Domain Driven Design (DDD)Domain Driven Design (DDD)
Domain Driven Design (DDD)
 
Event sourcing
Event sourcingEvent sourcing
Event sourcing
 
Domain Driven Design - DDDSydney 2011
Domain Driven Design - DDDSydney 2011Domain Driven Design - DDDSydney 2011
Domain Driven Design - DDDSydney 2011
 
Model storming - a different approach to collaborative model discovery (Vilni...
Model storming - a different approach to collaborative model discovery (Vilni...Model storming - a different approach to collaborative model discovery (Vilni...
Model storming - a different approach to collaborative model discovery (Vilni...
 
DDD / Microservices @ Trivento Spring Camp, Utrecht, 2015
DDD / Microservices @ Trivento Spring Camp, Utrecht, 2015DDD / Microservices @ Trivento Spring Camp, Utrecht, 2015
DDD / Microservices @ Trivento Spring Camp, Utrecht, 2015
 
Event based modeling - eng
Event based modeling - engEvent based modeling - eng
Event based modeling - eng
 
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
Loosely Coupled Complexity - Unleash the power of your Domain Model with Comm...
 
Unleash Your Domain With Greg Young @ DDD-Day
Unleash Your Domain With Greg Young @ DDD-DayUnleash Your Domain With Greg Young @ DDD-Day
Unleash Your Domain With Greg Young @ DDD-Day
 
Taming Complex Domains with Domain Driven Design
Taming Complex Domains with Domain Driven DesignTaming Complex Domains with Domain Driven Design
Taming Complex Domains with Domain Driven Design
 
Model storming
Model stormingModel storming
Model storming
 

Similar to DDD Dirty Harry style

Ricette veloci per Domain-Driven Design by Alberto Brandolini
Ricette veloci per Domain-Driven Design by Alberto BrandoliniRicette veloci per Domain-Driven Design by Alberto Brandolini
Ricette veloci per Domain-Driven Design by Alberto BrandoliniCodemotion
 
Loosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelLoosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelFrancesca1980
 
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco CasarioHTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco CasarioCodemotion
 
Jugpd meeting#76 Unit Testing with PostgreSQL
Jugpd meeting#76 Unit Testing with PostgreSQLJugpd meeting#76 Unit Testing with PostgreSQL
Jugpd meeting#76 Unit Testing with PostgreSQLAndrea Adami
 
AzureML - Creating and Using Machine Learning Solutions (Italian)
AzureML - Creating and Using Machine Learning Solutions (Italian)AzureML - Creating and Using Machine Learning Solutions (Italian)
AzureML - Creating and Using Machine Learning Solutions (Italian)Davide Mauri
 
Drupal Day 2011 - Organizza il tuo lavoro
Drupal Day 2011 - Organizza il tuo lavoroDrupal Day 2011 - Organizza il tuo lavoro
Drupal Day 2011 - Organizza il tuo lavoroDrupalDay
 
Non so assolutmente niente di informatica o web ma devo comunque creare un pr...
Non so assolutmente niente di informatica o web ma devo comunque creare un pr...Non so assolutmente niente di informatica o web ma devo comunque creare un pr...
Non so assolutmente niente di informatica o web ma devo comunque creare un pr...Gabriele Guizzardi
 
Anti pattern se lo conosci lo eviti
Anti pattern se lo conosci lo evitiAnti pattern se lo conosci lo eviti
Anti pattern se lo conosci lo evitiSimone Federici
 

Similar to DDD Dirty Harry style (9)

Ricette veloci per Domain-Driven Design by Alberto Brandolini
Ricette veloci per Domain-Driven Design by Alberto BrandoliniRicette veloci per Domain-Driven Design by Alberto Brandolini
Ricette veloci per Domain-Driven Design by Alberto Brandolini
 
Loosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain modelLoosely Coupled Complexity - Unleash the power of your domain model
Loosely Coupled Complexity - Unleash the power of your domain model
 
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco CasarioHTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
HTML5, CSS3 e JavaScript: Web app per tutti gli schermi by Marco Casario
 
Jugpd meeting#76 Unit Testing with PostgreSQL
Jugpd meeting#76 Unit Testing with PostgreSQLJugpd meeting#76 Unit Testing with PostgreSQL
Jugpd meeting#76 Unit Testing with PostgreSQL
 
AzureML - Creating and Using Machine Learning Solutions (Italian)
AzureML - Creating and Using Machine Learning Solutions (Italian)AzureML - Creating and Using Machine Learning Solutions (Italian)
AzureML - Creating and Using Machine Learning Solutions (Italian)
 
Drupal Day 2011 - Organizza il tuo lavoro
Drupal Day 2011 - Organizza il tuo lavoroDrupal Day 2011 - Organizza il tuo lavoro
Drupal Day 2011 - Organizza il tuo lavoro
 
Organizza il lavoro
Organizza il lavoroOrganizza il lavoro
Organizza il lavoro
 
Non so assolutmente niente di informatica o web ma devo comunque creare un pr...
Non so assolutmente niente di informatica o web ma devo comunque creare un pr...Non so assolutmente niente di informatica o web ma devo comunque creare un pr...
Non so assolutmente niente di informatica o web ma devo comunque creare un pr...
 
Anti pattern se lo conosci lo eviti
Anti pattern se lo conosci lo evitiAnti pattern se lo conosci lo eviti
Anti pattern se lo conosci lo eviti
 

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
 
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
 
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
 
The final words about software estimation
The final words about software estimationThe final words about software estimation
The final words about software estimationAlberto 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
 
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
 
Transactions redefined
Transactions redefinedTransactions redefined
Transactions redefined
 
Optimized for what
Optimized for whatOptimized for what
Optimized for what
 
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
 
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
 
The sweet spot
The sweet spotThe sweet spot
The sweet spot
 
The final words about software estimation
The final words about software estimationThe final words about software estimation
The final words about software estimation
 
Bullshit Asymmetry Principle lightning talk
Bullshit Asymmetry Principle lightning talkBullshit Asymmetry Principle lightning talk
Bullshit Asymmetry Principle lightning talk
 
Event storming recipes
Event storming recipesEvent storming recipes
Event storming recipes
 

Recently uploaded

Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Associazione Digital Days
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Associazione Digital Days
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Associazione Digital Days
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Associazione Digital Days
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Associazione Digital Days
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIinfogdgmi
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Associazione Digital Days
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Associazione Digital Days
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Associazione Digital Days
 

Recently uploaded (9)

Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
Daniele Lunassi, CEO & Head of Design @Eye Studios – “Creare prodotti e servi...
 
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
Mael Chiabrera, Software Developer; Viola Bongini, Digital Experience Designe...
 
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
Federico Bottino, Lead Venture Builder – “Riflessioni sull’Innovazione: La Cu...
 
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
Alessandro Nasi, COO @Djungle Studio – “Cosa delegheresti alla copia di te st...
 
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
Luigi Di Carlo, CEO & Founder @Evometrika srl – “Ruolo della computer vision ...
 
ScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AIScrapeGraphAI: a new way to scrape context with AI
ScrapeGraphAI: a new way to scrape context with AI
 
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
Alessio Mazzotti, Aaron Brancotti; Writer, Screenwriter, Director, UX, Autore...
 
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
Gabriele Mittica, CEO @Corley Cloud – “Come creare un’azienda “nativa in clou...
 
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
Edoardo Di Pietro – “Virtual Influencer vs Umano: Rubiamo il lavoro all’AI”
 

DDD Dirty Harry style