Common ddd pitfalls

Post on 24-May-2015

473 views 2 download

Tags:

description

While DDD is becoming more and more popular, there are quite a few potential misinterpretations and malpractices floating around. These issues are time-consuming, and they induce a lot of frustrations and needless yak-shaving experiences. These pitfalls are plenty, ranging from higher level things (for example a lack of focus on the strategic part) to technical things (for example misinterpretations of the repository pattern), and even the surrounding area (for example errors made when"selling DDD" to your team members). By sharing this experience I hope to reduce the huge amount of time and effort people spend on "doing DDD wrong".

transcript

Common DDD pitfalls

@ToJans - 2014

Str

ate

gic

Tactica

l

Str

ate

gic

Tactica

l

Infrastructure Str

ate

gic

Tactica

l

Infrastructure Str

ate

gic

Selling it

Tactica

l

Infrastructure Str

ate

gic

Selling it

Genera

l

Str

ate

gic

Bounded contexts

Str

ate

gic

Bounded contexts

Str

ate

gic

Ignoring bounded contexts

Str

ate

gic

Ignoring bounded contexts

Str

ate

gic

Conway’s law

Str

ate

gic

Conway’s law

Str

ate

gic

“Gedankenexperiment”

Str

ate

gic

“Gedankenexperiment”

Str

ate

gic

Lack of a domain expert

Str

ate

gic

Lack of a domain expert

Str

ate

gic

Bounded contexts

A lot Little

POV

Amount

Up- / Downstream A lot Little

Contracts

Dependencies

Some things that work *

* n = 1

Tactica

l

Tactica

l

Tactica

l

DDD for non-core domains

Tactica

l

DDD for non-core domains

Tactica

l Ignoring some aspects

Tactica

l Ignoring some aspects

Tactica

l

Repositories, exposing state

Tactica

l

Repositories, exposing state

https://www.facebook.com/Jeroom.Inc

Tactica

l

In repos, “Tell, don’t ask”

Tactica

l

In repos, “Tell, don’t ask”

… but don’t overdo it

Infrastructure

Infrastructure

BDUF – what you built

Infrastructure

BDUF – what you need

Infrastructure

Frameworks <> Libraries

Infrastructure

Frameworks <> Libraries

Infrastructure

Frameworks & Libraries: too generic

Infrastructure

Generic frameworks & Libraries => hacks

Infrastructure

Eventual consistency: do you need it?

Infrastructure

Eventual consistency: do you need it?

Infrastructure

Anything: do you need it?

”Il semble que la perfection soit atteinte

non quand il n'y a plus rien à ajouter,

mais quand il n'y a plus rien à retrancher.”

Antoine de Saint-Exupéry

Selling it

Selling DDD to your peers & bosses

Selling it

Tough

Selling it

Really tough

Selling it

This is a different presentation

Selling it

… but I’ll show you the recap

And now it’s time for a

And now it’s time for a

Recap And now it’s time for a

Str

ate

gic

• Don’t ignore bounded contexts

• Understand Conway’s Law

• Think first, act later

• Have domain experts

Craft BCs and make them explicit

Tactica

l

• Only in core domains

• Find all ways to model them

• Repositories = domain only

• Repositories = Tell, don’t ask

Infrastructure

• Don’t build a BDUF

• Frameworks <> libraries

• Avoid hacks

• Aim for simplicity, not ease of building

Selling it

• Don’t force feed

• Lead by example

• One step at a time

Genera

l

Genera

l

Genera

l

Genera

l

Genera

l

Genera

l

Genera

l

HAVE FUN!

And now it’s time for

Questions And now it’s time for

What was the background seeded by?

Brightness was upped

Image was colorized

Color was removed

Huge blur was applied