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

Post on 02-Dec-2014

1.460 views 3 download

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ą

X-DRIVEN DESIGN, Y-DRIVEN DEVELOPMENT NICZEGO

NIE ZMIENIĄ

Michał Bartyzel

mbartyzel.blogspot.com

@MichalBartyzel

www.bnsit.pl

„Lepszy” framework

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

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

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 *

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

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

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

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

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

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

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

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

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

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

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

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

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

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

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

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

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

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

www.bnsit.pl

*-Driven * wzmagają zjawiska społeczne

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

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”

www.bnsit.pl

Programiści lubią frameworki

Dlaczego tak się dzieje?

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

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

www.bnsit.pl

Dlaczego frameworki mentalne są popularne?

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

www.bnsit.pl

Framework odrywa się od intencji jego twórcy

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

www.bnsit.pl

Klucz do powodzenia frameworka

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

Chwytliwy mem

Obietnica

www.bnsit.pl

Klucz do powodzenia frameworka

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

Chwytliwy mem Obietnica

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

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

www.bnsit.pl

Kto wymyśla *-Driven *?

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

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

www.bnsit.pl

Jak powstaje framework mentalny?

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

www.bnsit.pl

Jak powstaje framework mentalny?

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

www.bnsit.pl

Jak powstaje framework mentalny?

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

www.bnsit.pl

Jak powstaje framework mentalny?

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

www.bnsit.pl

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

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

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

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

www.bnsit.pl

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

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

www.bnsit.pl

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

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

www.bnsit.pl

Co zrobi programista z małym doświadczeniem?

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

www.bnsit.pl

Co zrobi programista z małym doświadczeniem?

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

www.bnsit.pl

Ograniczenia w zespołach

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

www.bnsit.pl

Ograniczenia w zespołach

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

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

www.bnsit.pl

A może oceniasz się zbyt optymistycznie?

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

www.bnsit.pl

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

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

www.bnsit.pl

Co zrobi doświadczony programista?

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

www.bnsit.pl

Implementing *-Driven *

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

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

www.bnsit.pl

Dlaczego *-Driven * niczego nie zmienią?

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

www.bnsit.pl

Czy to oznacza, że zniechęcam do

TDD, BDD, DDD, DDDD, etc. ?

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

www.bnsit.pl

Czy to oznacza, że zniechęcam do

TDD, BDD, DDD, DDDD, etc. ?

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

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

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

www.bnsit.pl

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

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

www.bnsit.pl

Przykład: Modelowanie „rzeczywistości”

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

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

www.bnsit.pl

Przykład: Modelowanie „rzeczywistości”

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

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

www.bnsit.pl

Przykład: Modelowanie „rzeczywistości”

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

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

www.bnsit.pl

Wie, czy nie wie, czego chce?

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

www.bnsit.pl

Fight, Flight, Freeze

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

www.bnsit.pl

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

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

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

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

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

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

www.bnsit.pl

Techniki pracy z kodem

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

www.bnsit.pl

Techniki pracy z kodem

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

# Czytelność dla innych

# Prostota

# Samoopisywanie się

www.bnsit.pl

Kod jest dla programisty, a nie programista dla kodu

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

www.bnsit.pl

Praca u podstaw

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

www.bnsit.pl

Praca u podstaw

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

www.bnsit.pl

Jak żyć, Panie Prelegencie,

jak żyć?!

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

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

www.bnsit.pl

Jak zachodzi uczenie się?

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

www.bnsit.pl

Gdzie są Twoje umiejętności?

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

www.bnsit.pl

Gdzie są Twoje umiejętności?

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

www.bnsit.pl

Zdobywanie doświadczenia

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

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

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ę

DZIĘKUJĘ ZA WASZ CZAS!

Michał Bartyzel

mbartyzel.blogspot.com

@MichalBartyzel