Upload
alberto-brandolini
View
995
Download
0
Embed Size (px)
Citation preview
Why do all my DDD apps look the same?
@ziobrando
About meIn the IT field since ZX Spectrum Generally in large scale projects (I might be biased) Freelance consultant: NotOnlyCode Trainer (Freelance & Skills MaDer) Technical Writer Blogger: h=p://ziobrando.blogspot.com TwiDer: @ziobrando
My e-‐mail: [email protected]
What I do
9%
11%
12%
31%
38%
Agile processesDomain-‐Driven DesignEfficiency & ManagementArchitectureFunny clown
Some things work pre=y well
Focusing on Core Domain
Core Domain
Core Domain
Nothing less than your best here.
Some things work pre=y well
Focusing on Core Domain Software Development as a Learning Process
Ignorance is the single greatest impediment
to throughput
Dan North
100 1 2 3 4 5 6 7 8 9
100%
0
10%
20%
30%
40%
50%
60%
70%
80%
90%
Time
Igno
ranc
e
Ignorance
This is when we make critical decisions
100 1 2 3 4 5 6 7 8 9
100%
0
10%
20%
30%
40%
50%
60%
70%
80%
90%
Time
Igno
ranc
e
IgnoranceBreakthrough
Can we anticipate this moment?
Is there any impediments to breakthroughs in the
way we develop soGware?
Hmm... let me think
Learning impediments
Time pressure --> estimations / expectations
Domain Experts availability / First Person experience
Learning Tools --> Discussion space, whiteboards, etc
Safety --> consequences of mistakes / Test env., etc.
Organization & Logistics --> noise, interruptions
Architecture
Food
100 1 2 3 4 5 6 7 8 9
100%
0
10%
20%
30%
40%
50%
60%
70%
80%
90%
Time
Igno
ranc
e
IgnoranceBreakthrough
Ignorance
Some things work pre=y well
Focusing on Core Domain Software Development as a Learning Process Explicit Bounded Context management
Establish a defensive perimeter
...and a fence
Know your bordersOur Bounded Context
Friendly BC
Pool
Promo
Campaign
...ACL
ACL
External Service Provider
...
ACL
APIData Exchange
Danger 1
Danger 2
obscure unnecessary complicated concept
Promozione
FilterCondition
Reward
Legacy Mess
Some things work pre=y well
Focusing on Core Domain Developing software as a learning process Explicit bounded context management Modeling the domain starting from Events
flow
EventEvent
Event
Event
Event
Domain Experts like Events
flow
EventEvent
Event
Event
Event
Domain Experts like Events
Command
Command
flow
EventEvent
Event
Event
Event
Domain Experts like Events
Command
Command
Command Event
But...
Why?
2 similar problems
STOP
Validation
We should prevent the user from entering incorrect data.
The Notorious Pub
hypothesis
Why doesn’t the police shut down this place?
Mother:
...
There’s a universe out there
Same data different behaviour
Before AGer
missing or inconsistent informaSon ModificaSons are possible DraG-‐like semanScs
all mandatory informaSon present No changes allowed Printed & Signed paper semanScs
DraG Contract
Deal
Source Executable
negoSaSon
finalize
sign off
compile
CartOrderPlan
CollaboraSve ConstrucSonMissingRoof
Warning
Comments & ConversaOon
Incomplete, growing artifact
...just like building soGware
The Deja-vu hypothesis
...not always
What if the domain expert is...
badly wrong
Boss:
Users must follow a prescripSve,
mandatory process
User:
The process as-‐is cannot be applied in
pracSce
Boss:
Users must follow a prescripSve,
mandatory process
Problem is...
© Alberto Brandolini -‐ 2008-‐2010
I’ve tried all this sh*t, man...
...and your idea doesn’t work...
Some problems have been solved well
in soGware development
© Alberto Brandolini -‐ 2008-‐2010
Don’t push it too far...
but we’ve learnt something
How we thought we solved the
problem
R.I.P.
Maybe a be=er example...
Why don’t we just teach them to use github?
Cognitive load
© Alberto Brandolini -‐ 2008-‐2010
They’re users, not hackers
too much cogniSve load
Integration strategies
Core Domain Strategy:
Simple enough to be included (in the domain) Good architectural integration UX Demanding (..?) ...increasing amount of generic requirements
Collaboration
Where’s the instrucSon manual?
UX Demanding
...pervasive changes in presentation layer user implicit expectations are high if it’s not beautiful & simple it won’t work
...remember we’re changing people’s behaviour
Conformist
(hopefully) better UI Lock-in (surrendering to zombies)
Our stuff
Big Collaboration Software
Zombies can be friendly aGer all...
Welcome����������� ������������������ in����������� ������������������ the����������� ������������������ world����������� ������������������ of����������� ������������������ plugin����������� ������������������ &����������� ������������������ customization
Separate Ways
lightweight links user cognitive load increased
Collaboration app
Our B.C.
Shared Kernel
Potentially reusable possibly overkill for generic subdomain unpredictable social consequences (the wizard)
Core domain
Collaboration
Domain-‐Specific commands
Domain-‐agnosSc primiSves
© Alberto Brandolini -‐ 2008-‐2010
Yeah ...the problem’s sSll
open
...what about a White Russian?
From the UX expert
Need Help
Results -‐ Confidence -‐ Safety
Build Trust
(Having ideas != being right)
Experiment
be prepared to surprises (we are changing an ecosystem)
Measure
We’re both learning now...
Thank [email protected] hDp://ziobrando.blogspot.com
twiDer: ziobrando