[33rd] x driven-y niczego nie zmienią

72
X-DRIVEN DESIGN, Y-DRIVEN DEVELOPMENT NICZEGO NIE ZMIENIĄ Michał Bartyzel mbartyzel.blogspot.com @MichalBartyzel

description

Prezentacja, którą przedstawiłem w trakcie konferencji 33rd Degree. Pamiętaj - nie chodzi tu o krytykę TDD, DDD, BDD itd. Chodzi o zachętę do samodzielnego myślenia.

Transcript of [33rd] x driven-y niczego nie zmienią

Page 1: [33rd] x driven-y niczego nie zmienią

X-DRIVEN DESIGN, Y-DRIVEN DEVELOPMENT NICZEGO

NIE ZMIENIĄ

Michał Bartyzel

mbartyzel.blogspot.com

@MichalBartyzel

Page 2: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

„Lepszy” framework

Zwiększamy efektywność zespołów projektowych 2

Page 3: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

A. Rozwiązuje problemy poprzedników

B. Rozwiązuje problemy znane jego twórcom

• Tych nieznanych nie rozwiązuje

C. Wprowadza nowe „zasady gry”

• Generuje nowe problemy

D. Nowe problemy są wyzwaniem dla kolejnego frameworka

E. GOTO A

Refleksja: Kolejny framework…

Zwiększamy efektywność zespołów projektowych 3

Page 4: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Coś nowego

Zwiększamy efektywność zespołów projektowych 4

Domain-Driven Design

Test-Driven Development Behavior-Driven Development

Data-Driven Design

Data-Driven Development Use Case-Driven Design

Use Case-Driven Development Architecture-Driven Design

Architecture-Driven Development Model-Driven Development

Agile Model-Driven Development Data-Driven Design

Data-Driven Development Use Case-Driven Development

Design Use Case-Driven Architecture-Driven Design

Architecture-Driven Development

Use Case-Driven Design

*-Driven *

Page 5: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

Zwiększamy efektywność zespołów projektowych 5

Page 6: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

Zwiększamy efektywność zespołów projektowych 6

Page 7: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

Zwiększamy efektywność zespołów projektowych 7

Page 8: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

Zwiększamy efektywność zespołów projektowych 8

Page 9: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

Zwiększamy efektywność zespołów projektowych 9

Page 10: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

Zwiększamy efektywność zespołów projektowych 10

Page 11: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

Zwiększamy efektywność zespołów projektowych 11

Page 12: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

Zwiększamy efektywność zespołów projektowych 12

Page 13: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

Zwiększamy efektywność zespołów projektowych 13

Page 14: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

Zwiększamy efektywność zespołów projektowych 14

Page 15: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

# Przykład: DDDD by Greg Young • http://abdullin.com/storage/uploads/2010/04/2010-04-

16_DDDD_Drafts_by_Greg_Young.pdf

Dlaczego tak się dzieje? Przykład DDD

Zwiększamy efektywność zespołów projektowych 15

„ (…) this architecture will be “good enough”

for 80% of the projects that they run into”

Page 16: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Programiści lubią frameworki

Dlaczego tak się dzieje?

Zwiększamy efektywność zespołów projektowych 16

Page 17: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

# Strategie myślenia i postępowania

# Uporządkowany sposób działania

# Sposób na …

Framework mentalny *-Driven *

Zwiększamy efektywność zespołów projektowych 17

Page 18: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Dlaczego frameworki mentalne są popularne?

Zwiększamy efektywność zespołów projektowych 18

Page 19: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Framework odrywa się od intencji jego twórcy

Zwiększamy efektywność zespołów projektowych 19

Page 20: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Klucz do powodzenia frameworka

Zwiększamy efektywność zespołów projektowych 20

Chwytliwy mem

Obietnica

Page 21: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Klucz do powodzenia frameworka

Zwiększamy efektywność zespołów projektowych 21

Chwytliwy mem Obietnica

Page 22: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

# Obiecuje Ci, że:

• błędy wykryjesz na wczesnym etapie

• stworzysz tylko tyle kodu ile to konieczne

• dobry design

• prawie zapomnisz o debugerze

# Chwytliwe memy:

• Red-Green-Refactor

• Unit testing

Przykład: TDD rozumiane czysto mechanicznie

Zwiększamy efektywność zespołów projektowych 22

Page 23: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

# Obiecuje Ci, że: • we właściwy sposób zastosujesz programowanie

obiektowe

• elastyczną architekturę

• odwzorowanie rzeczywistości => przygotowanie na kolejne wymagania

# Chwytliwe memy: • Building Blocks

• Unambiguous Language

• Strategic Design

Przykład: DDD rozumiane czysto buildingblokowo

Zwiększamy efektywność zespołów projektowych 23

Page 24: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Kto wymyśla *-Driven *?

Zwiększamy efektywność zespołów projektowych 24

Page 25: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Kto wymyśla *-Driven *?

Zwiększamy efektywność zespołów projektowych 25

http://pl.wikipedia.org/wiki/Kent_Beck

http://programmer.97things.oreilly.com/wiki/

http://www.domainlanguage.com

Page 26: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Jak powstaje framework mentalny?

Zwiększamy efektywność zespołów projektowych 26

Page 27: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Jak powstaje framework mentalny?

Zwiększamy efektywność zespołów projektowych 27

Page 28: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Jak powstaje framework mentalny?

Zwiększamy efektywność zespołów projektowych 28

Page 29: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Jak powstaje framework mentalny?

Zwiększamy efektywność zespołów projektowych 29

Page 30: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Prace na koncepcją *-Driven * (i książką)

Zwiększamy efektywność zespołów projektowych 30

Page 31: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

# Wyprowadzanie logicznych wniosków

# Niekoniecznie sprawdzonych w rzeczywistości

# Wnioski można weryfikować, ale…czas

Prace nad koncepcją *-Driven (i książką)

Zwiększamy efektywność zespołów projektowych 31

Page 32: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

What I’ve learnt about DDD since the book

• www.infoq.com/presentations/ddd-eric-evans

• Podkreślenie roli Bounded Context

• Doprecyzowanie znaczenia Domain Event

• Doprecyzowanie relacji między Bounded Contexts

• Krytyka Context Map

• Proces Model Exploration Whirpool

Przykład: DDD i Strategic Design

Zwiększamy efektywność zespołów projektowych 32

Page 33: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Co robi Twórca, gdy framework nie działa?

Zwiększamy efektywność zespołów projektowych 33

Page 34: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Co robi Twórca, gdy framework nie działa?

Zwiększamy efektywność zespołów projektowych 34

Page 35: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Co zrobi programista z małym doświadczeniem?

Zwiększamy efektywność zespołów projektowych 35

Page 36: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Co zrobi programista z małym doświadczeniem?

Zwiększamy efektywność zespołów projektowych 36

Page 37: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Ograniczenia w zespołach

Zwiększamy efektywność zespołów projektowych 37

Page 38: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Ograniczenia w zespołach

Zwiększamy efektywność zespołów projektowych 38

Page 39: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

# Czym mam wystarczające doświadczenie i umiejętności, aby zastosować *-Driven?

# Czy zastosowanie *-Driven * jest dla mnie zbyt trudne?

# Ile będzie kosztować moja nauka?

Pytania, które zadajemy zbyt rzadko?

Zwiększamy efektywność zespołów projektowych 39

Page 40: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

A może oceniasz się zbyt optymistycznie?

Zwiększamy efektywność zespołów projektowych 40

Page 41: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Na czym wykładamy się najczęściej?

Zwiększamy efektywność zespołów projektowych 41

Page 42: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Co zrobi doświadczony programista?

Zwiększamy efektywność zespołów projektowych 42

Page 43: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Implementing *-Driven *

Niektórzy z nich napiszą książkę

Zwiększamy efektywność zespołów projektowych 43

Page 44: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Dlaczego *-Driven * niczego nie zmienią?

Zwiększamy efektywność zespołów projektowych 44

Page 45: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Czy to oznacza, że zniechęcam do

TDD, BDD, DDD, DDDD, etc. ?

Zwiększamy efektywność zespołów projektowych 45

Page 46: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Czy to oznacza, że zniechęcam do

TDD, BDD, DDD, DDDD, etc. ?

Zwiększamy efektywność zespołów projektowych 46

Page 47: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

1. Buduj swoje doświadczenie

2. Ułatwiaj sobie pracę za pomocą frameworków mentalnych

Chodzi o priorytety

Zwiększamy efektywność zespołów projektowych 47

Page 48: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

1. Doświadczenie

2. Frameworki mentalne

Chodzi o priorytety

Zwiększamy efektywność zespołów projektowych 48

1. Frameworki mentalne

2. Doświadczenie

Page 49: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Na czym się skoncentrować i jak budować doświadczenie?

Zwiększamy efektywność zespołów projektowych 49

Page 50: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Przykład: Modelowanie „rzeczywistości”

Milczące założenie większości *-Driven *

Zwiększamy efektywność zespołów projektowych 50

Page 51: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Przykład: Modelowanie „rzeczywistości”

Milczące założenie większości *-Driven *

Zwiększamy efektywność zespołów projektowych 51

Page 52: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Przykład: Modelowanie „rzeczywistości”

Milczące założenie większości *-Driven *

Zwiększamy efektywność zespołów projektowych 52

Page 53: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Wie, czy nie wie, czego chce?

Zwiększamy efektywność zespołów projektowych 53

Page 54: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Fight, Flight, Freeze

Zwiększamy efektywność zespołów projektowych 54

Page 55: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Z jakimi programistami chcą pracować klienci? Jakich programistów cenią liderzy?

Zwiększamy efektywność zespołów projektowych 55

Page 56: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl Zwiększamy efektywność zespołów projektowych 56

Z jakimi programistami chcą pracować klienci? Jakich programistów cenią liderzy?

Page 57: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl Zwiększamy efektywność zespołów projektowych 57

Z jakimi programistami chcą pracować klienci? Jakich programistów cenią liderzy?

Zaangażowany := robi wszystko co konieczne, aby doprowadzić sprawy do końca

Page 58: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

i niewielkie umiejętności techniczne

• Raczej tak

duże umiejętności techniczne bez

• Raczej nie

Czy zatrudnisz programistę?

Zwiększamy efektywność zespołów projektowych 58

Page 59: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Techniki pracy z kodem

Zwiększamy efektywność zespołów projektowych 59

Page 60: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Techniki pracy z kodem

Zwiększamy efektywność zespołów projektowych 60

# Czytelność dla innych

# Prostota

# Samoopisywanie się

Page 61: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Kod jest dla programisty, a nie programista dla kodu

Zwiększamy efektywność zespołów projektowych 61

Page 62: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Praca u podstaw

Zwiększamy efektywność zespołów projektowych 62

Page 63: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Praca u podstaw

Zwiększamy efektywność zespołów projektowych 63

Page 64: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Jak żyć, Panie Prelegencie,

jak żyć?!

Zwiększamy efektywność zespołów projektowych 64

Page 65: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

# W latach?

# W liczbie „wyłożonych” projektów?

# W zmienności:

• Projektów

• Branż

• Współpracowników

• Technologii

W czym się mierzy doświadczenie?

Zwiększamy efektywność zespołów projektowych 65

Page 66: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Jak zachodzi uczenie się?

Zwiększamy efektywność zespołów projektowych 66

Page 67: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Gdzie są Twoje umiejętności?

Zwiększamy efektywność zespołów projektowych 67

Page 68: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Gdzie są Twoje umiejętności?

Zwiększamy efektywność zespołów projektowych 68

Page 69: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

Zdobywanie doświadczenia

Zwiększamy efektywność zespołów projektowych 69

Page 70: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

A zatem

Zwiększamy efektywność zespołów projektowych 70

# Pracuj z lepszymi od siebie

# Szukaj różnorodności

# Nie zwalaj winy za niepowodzenia na czynniki zewnętrzne

# Nie przywiązuj się zbytnio do swojego zdania

Page 71: [33rd] x driven-y niczego nie zmienią

www.bnsit.pl

1. Buduj doświadczenie

2. Ułatwiaj sobie życie za pomocą *-Driven *

Podsumowanie

Zwiększamy efektywność zespołów projektowych 71

# Szukaj mentorów # Szukaj

różnorodności # Bądź wytrwały # Przeprowadzaj

retrospekcje # Praktykuj pokorę

Page 72: [33rd] x driven-y niczego nie zmienią

DZIĘKUJĘ ZA WASZ CZAS!

Michał Bartyzel

mbartyzel.blogspot.com

@MichalBartyzel