Michał Bartyzel X-DRIVEN DESIGN, Y-DRIVEN DEVELOPMENT NICZEGO NIE ZMIENIĄ mbartyzel.blogspot.com @MichalBartyzel
Lepszy framework Zwiększamy efektywność zespołów projektowych 2
Refleksja: Kolejny framework 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 Zwiększamy efektywność zespołów projektowych 3
Coś nowego Model-Driven Development Architecture-Driven Development Behavior-Driven Development Test-Driven Developmen Use Case-Driven Design Data-Driven Development Use Case-Driven Development Architecture-Driven Design *-Driven * Data-Driven Design Agile Model-Driven Development Use Case-Driven Development Data-Driven Design Design Use Case-Driven Data-Driven Development Architecture-Driven Design Architecture-Driven Development Domain-Driven Design Use Case-Driven Design Zwiększamy efektywność zespołów projektowych 4
*-Driven * wzmagają zjawiska społeczne Zwiększamy efektywność zespołów projektowych 5
*-Driven * wzmagają zjawiska społeczne Zwiększamy efektywność zespołów projektowych 6
*-Driven * wzmagają zjawiska społeczne Zwiększamy efektywność zespołów projektowych 7
*-Driven * wzmagają zjawiska społeczne Zwiększamy efektywność zespołów projektowych 8
*-Driven * wzmagają zjawiska społeczne Zwiększamy efektywność zespołów projektowych 9
*-Driven * wzmagają zjawiska społeczne Zwiększamy efektywność zespołów projektowych 10
*-Driven * wzmagają zjawiska społeczne Zwiększamy efektywność zespołów projektowych 11
*-Driven * wzmagają zjawiska społeczne Zwiększamy efektywność zespołów projektowych 12
*-Driven * wzmagają zjawiska społeczne Zwiększamy efektywność zespołów projektowych 13
*-Driven * wzmagają zjawiska społeczne Zwiększamy efektywność zespołów projektowych 14
Dlaczego tak się dzieje? Przykład DDD # Przykład: DDDD by Greg Young http://abdullin.com/storage/uploads/2010/04/2010-04- 16_DDDD_Drafts_by_Greg_Young.pdf ( ) this architecture will be good enough for 80% of the projects that they run into Zwiększamy efektywność zespołów projektowych 15
Dlaczego tak się dzieje? Programiści lubią frameworki Zwiększamy efektywność zespołów projektowych 16
Framework mentalny *-Driven * # Strategie myślenia i postępowania # Uporządkowany sposób działania # Sposób na Zwiększamy efektywność zespołów projektowych 17
Dlaczego frameworki mentalne są popularne? Zwiększamy efektywność zespołów projektowych 18
Framework odrywa się od intencji jego twórcy Zwiększamy efektywność zespołów projektowych 19
Klucz do powodzenia frameworka Chwytliwy mem Obietnica Zwiększamy efektywność zespołów projektowych 20
Klucz do powodzenia frameworka Chwytliwy mem Obietnica Zwiększamy efektywność zespołów projektowych 21
Przykład: TDD rozumiane czysto mechanicznie # 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 Zwiększamy efektywność zespołów projektowych 22
Przykład: DDD rozumiane czysto buildingblokowo # 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 Zwiększamy efektywność zespołów projektowych 23
Kto wymyśla *-Driven *? Zwiększamy efektywność zespołów projektowych 24
Kto wymyśla *-Driven *? http://www.domainlanguage.com http://programmer.97things.oreilly.com/wiki/ http://pl.wikipedia.org/wiki/kent_beck Zwiększamy efektywność zespołów projektowych 25
Jak powstaje framework mentalny? Zwiększamy efektywność zespołów projektowych 26
Jak powstaje framework mentalny? Zwiększamy efektywność zespołów projektowych 27
Jak powstaje framework mentalny? Zwiększamy efektywność zespołów projektowych 28
Jak powstaje framework mentalny? Zwiększamy efektywność zespołów projektowych 29
Prace na koncepcją *-Driven * (i książką) Zwiększamy efektywność zespołów projektowych 30
Prace nad koncepcją *-Driven (i książką) # Wyprowadzanie logicznych wniosków # Niekoniecznie sprawdzonych w rzeczywistości # Wnioski można weryfikować, ale czas Zwiększamy efektywność zespołów projektowych 31
Przykład: DDD i Strategic Design 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 Zwiększamy efektywność zespołów projektowych 32
Co robi Twórca, gdy framework nie działa? Zwiększamy efektywność zespołów projektowych 33
Co robi Twórca, gdy framework nie działa? Zwiększamy efektywność zespołów projektowych 34
Co zrobi programista z małym doświadczeniem? Zwiększamy efektywność zespołów projektowych 35
Co zrobi programista z małym doświadczeniem? Zwiększamy efektywność zespołów projektowych 36
Ograniczenia w zespołach Zwiększamy efektywność zespołów projektowych 37
Ograniczenia w zespołach Zwiększamy efektywność zespołów projektowych 38
Pytania, które zadajemy zbyt rzadko? # 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? Zwiększamy efektywność zespołów projektowych 39
A może oceniasz się zbyt optymistycznie? Zwiększamy efektywność zespołów projektowych 40
Na czym wykładamy się najczęściej? Zwiększamy efektywność zespołów projektowych 41
Co zrobi doświadczony programista? Zwiększamy efektywność zespołów projektowych 42
Niektórzy z nich napiszą książkę Implementing *-Driven * Zwiększamy efektywność zespołów projektowych 43
Dlaczego *-Driven * niczego nie zmienią? Zwiększamy efektywność zespołów projektowych 44
Czy to oznacza, że zniechęcam do TDD, BDD, DDD, DDDD, etc.? Zwiększamy efektywność zespołów projektowych 45
Czy to oznacza, że zniechęcam do TDD, BDD, DDD, DDDD, etc.? Zwiększamy efektywność zespołów projektowych 46
Chodzi o priorytety 1. Buduj swoje doświadczenie 2. Ułatwiaj sobie pracę za pomocą frameworków mentalnych Zwiększamy efektywność zespołów projektowych 47
Chodzi o priorytety 1. Frameworki mentalne 2. Doświadczenie 1. Doświadczenie 2. Frameworki mentalne Zwiększamy efektywność zespołów projektowych 48
Na czym się skoncentrować i jak budować doświadczenie? Zwiększamy efektywność zespołów projektowych 49
Milczące założenie większości *-Driven * Przykład: Modelowanie rzeczywistości Zwiększamy efektywność zespołów projektowych 50
Milczące założenie większości *-Driven * Przykład: Modelowanie rzeczywistości Zwiększamy efektywność zespołów projektowych 51
Milczące założenie większości *-Driven * Przykład: Modelowanie rzeczywistości Zwiększamy efektywność zespołów projektowych 52
Wie, czy nie wie, czego chce? Zwiększamy efektywność zespołów projektowych 53
Fight, Flight, Freeze Zwiększamy efektywność zespołów projektowych 54
Z jakimi programistami chcą pracować klienci? Jakich programistów cenią liderzy? Zwiększamy efektywność zespołów projektowych 55
Z jakimi programistami chcą pracować klienci? Jakich programistów cenią liderzy? Zwiększamy efektywność zespołów projektowych 56
Z jakimi programistami chcą pracować klienci? Jakich programistów cenią liderzy? Zaangażowany := robi wszystko co konieczne, aby doprowadzić sprawy do końca Zwiększamy efektywność zespołów projektowych 57
Czy zatrudnisz programistę? i niewielkie umiejętności techniczne Raczej tak duże umiejętności techniczne bez Raczej nie Zwiększamy efektywność zespołów projektowych 58
Techniki pracy z kodem Zwiększamy efektywność zespołów projektowych 59
Techniki pracy z kodem # Czytelność dla innych # Prostota # Samoopisywanie się Zwiększamy efektywność zespołów projektowych 60
Kod jest dla programisty, a nie programista dla kodu Zwiększamy efektywność zespołów projektowych 61
Praca u podstaw Zwiększamy efektywność zespołów projektowych 62
Praca u podstaw Zwiększamy efektywność zespołów projektowych 63
Jak żyć, Panie Prelegencie, jak żyć?! Zwiększamy efektywność zespołów projektowych 64
W czym się mierzy doświadczenie? # W latach? # W liczbie wyłożonych projektów? # W zmienności: Projektów Branż Współpracowników Technologii Zwiększamy efektywność zespołów projektowych 65
Jak zachodzi uczenie się? Zwiększamy efektywność zespołów projektowych 66
Gdzie są Twoje umiejętności? Zwiększamy efektywność zespołów projektowych 67
Gdzie są Twoje umiejętności? Zwiększamy efektywność zespołów projektowych 68
Zdobywanie doświadczenia Zwiększamy efektywność zespołów projektowych 69
A zatem # 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 Zwiększamy efektywność zespołów projektowych 70
Podsumowanie 1. Buduj doświadczenie # Szukaj mentorów # Szukaj różnorodności # Bądź wytrwały # Przeprowadzaj retrospekcje # Praktykuj pokorę 2. Ułatwiaj sobie życie za pomocą *-Driven * Zwiększamy efektywność zespołów projektowych 71
Michał Bartyzel DZIĘKUJĘ ZA WASZ CZAS! mbartyzel.blogspot.com @MichalBartyzel