„Power! Unlimited power!” - tak właśnie krzyczał Darth Sidious w Star Wars III: Revenge of the Sith. Teraz kiedy myślę o EventStormingu (połączonym z Event Modelingiem) i jego możliwych efektach, czuję dokładnie to samo. Niestety nie zawsze tak było. To jak z wystąpieniami na konferencji, jeśli treści będą zbyt skomplikowane, to uczestnicy mogą wyjść z dwoma rodzajami przemyśleń:
Niezależnie od wyniku, wiele to nie wnosi w programistyczną codzienność słuchaczy. Ja przez około dwa lata od usłyszenia o EventStormingu, sądziłem, że nie jest to nic specjalnego. Chcę, żeby wpisy na tym blogu były inne i szybko doprowadził Cię do odkrycia benefitów pokazywanych przeze mnie technik. Żeby to mogło się stać, to konieczna jest Twoja praktyka. To z nią przychodzi zrozumienie! Sam też nawet próbowałem go stosować-bez większych rezultatów. Aż w końcu nastąpił moment Aha!, do którego będę chciał też Ciebie doprowadzić. Dodatkiem spinającym wszystko w zrozumiałą całość był EventModeling. Zaznajomię Cię z tą metodą w kolejnych wpisach na tym blogu. Dzięki niej bez problemu przełożysz wyniki warsztatu na działający kod! A przy tym spostrzeżesz wiele zależności i zawczasu rozwiążesz problemy, które dla diagramów UML są nie do wyrażenia. W dalszej części będę używał słowa warsztat czy sesja. Oznacza to spotkanie, na którym przeprowadzasz EventStorming.
Co ma wspólnego pizza z EventStormingiem? 👨🍳 Na szczęście określił to już Alberto Brandolini! Autor tej techniki. Co w takim razie mają wspólnego? Nie tylko to, że Alberto jest Włochem. Odpowiedź znajdziesz dalej.
W poprzednim wpisie TUTAJ zaproponowałem Ci świetne, proste ćwiczenie na obycie się z EventStormingiem. Jeśli jeszcze go nie zrobiłeś to dobrze tam wrócić albo przeprowadzić z uczestnikami na realnym warsztacie.
Jendak naszym głównym zajęciem jako developerów nie jest rozstrzyganie sporów w bajkach, ale… No właśnie, co? Może właśnie spowoduję Twój szok, ale jednym z cytatów, jakim się kieruję, jest: Software development is a learning process. Working code is a side effect.
Akurat nieprzypadkowo pochodzi on z książki Introducing EventStorming (tutaj Brandolini cytuje Dana Northa). Spokojnie, też kiedyś myślałem inaczej. Domain-Driven Design i EventStorming zmienił moje podejście do developmentu o 180 stopni. I nie tylko moje. Możesz posłuchać, co mówi o tym Mariusz Gil (obecnie największy autorytet z zakresu EventStormingu w Polsce) podczas prelekcji na konferencji Boiling Frogs 2018 - Discovering unknown domain with Event Storming. Na prezentacji są też ładne obrazki. Więc chyba warto 😆? Szczególnie jeśli z opisu ciężko Ci sobie wyobrazić jak to wszystko powinno wyglądać.
Event Storming jest jak pizza. Każdy może dołożyć swoje składniki.
(Kliknij obrazek, aby powiększyć)
Jak to jest, że jako programiści głównie musimy się uczyć, a powstały kod to tylko skutek uboczny tego procesu? Powiedz, jaka jest wartość dobrego kodu, napisanego na czas i w budżecie, przez kogoś, kto nie zrozumiał problemu do rozwiązania? Można go od razu wyrzucić do kosza. Jako developerzy optymalizujemy naszą aplikację, ale nie proces pozyskiwania wiedzy domenowej. A niestety, aby rozwiązać jakiś problem / zautomatyzować działanie czegoś musimy najpierw dogłębnie zrozumieć o co chodzi. Spisane setki stron analizy biznesowej i diagramy UML tutaj nie pomogą. Wiem to z własnego doświadczenia. Ty pewnie niestety też. EventStorming pomaga w procesie zwanym „knowledge crunching”, czyli wyciągania wiedzy od osób, które ją mają. Ty jesteś developerem, nie klepaczem kodu! Będziesz w stanie wyssać wiedzę z głów ekspertów domenowych, znaleźć ich problemy i zaproponować rozwiązanie za pomocą znanych Ci technologii. Ekspertami domenowymi nazywamy osoby, które są specjalistami w obszarze, jaki modelujemy. W branży medycznej może to być lekarz, przy paczkomatach będzie to kurier czy osoba na sortowni itd.
Ten artykuł pisałem jako część mailingu na tydzień przed prowadzeniem kolejnego EventStormingu, dlatego na prawdziwym przykładzie opiszę Ci jak przygotować się do takich warsztatów i co powinno być ich rezultatem. A domyślasz się, co tym razem będzie Twoim zadaniem? Zrobić dokładnie to samo, korzystając z moich instrukcji 😀. Mam nadzieję, że niedługo podzielimy się wzajemnie swoimi doświadczeniami!
Właśnie tak, nieograniczona (teoretycznie) przestrzeń, to pierwsze co trzeba zapewnić. W przypadku EventStormingu on-line jest to dość łatwe. Nigdy nie doszedłem do maksymalnego rozmiaru pliku na Miro czy w Figmie (dwa narzędzia, które jak dotąd używałem do ES). Na żywo? To trochę bardziej problematyczne. Jakieś 10 metrów ściany to powinno być minimum. Niestety realia bywają tutaj różne, a do sąsiadów się nie przebijemy 🔥.
Prowadzony przeze mnie EventStorming
(Kliknij obrazek, aby powiększyć)
Na tej ścianie będą pojawiać się nasze zdarzenia i inne elementy notacji EventStormingu, a także wszystko, co się po prostu przyda 😀. Potrzebne też będzie sporo post-itów odpowiednich kolorów, jeśli chcemy się spotkać na warsztaty fizycznie. W tym przypadku najlepiej mieć kolory: pomarańczowy, czerwony, różowy, zielony, żółty, fioletowy. Z bardziej ograniczonym zasobnikiem też da radę, ale będzie po prostu ciężej 😀. ProTip: Jeśli nie chcesz oderwać razem z karteczką farby ze ściany to lepiej zaopatrzyć się też w folię elektrostatyczną, którą widzisz na zdjęciu powyżej.
Druga rzecz to czas. Choć EventStorming potrafi naprawdę zaangażować, to jednak polecam każdą sesję ograniczyć do około 3 godzin. Jest to czas, w którym powinno się jeszcze utrzymać skupienie ludzi, a zmęczenie czy ból nóg (przy wersji stacjonarnej) nie dają się jeszcze tak bardzo we znaki.
Mamy przestrzeń, mamy termin. Super! Tylko co będziemy robić sami w pokoju? Warunkiem koniecznym dla efektywności warsztatów są ludzie z właściwymi pytaniami i ci, którzy potrafią na nie odpowiedzieć. Pytania zazwyczaj będziesz zadawał Ty czy zespół developerski. Kto ma mieć odpowiedzi? Od kogo pozyskiwać wiedzę? Eksperci domenowi to właściwy kierunek. Jak nie pamiętasz, kto to jest to Ctrl+F na tym wpisie Ci pomoże 😀. EventStorming nie jest tylko dla programistów. To świetny czas, kiedy osiąga się symbiozę między ludźmi technicznymi a biznesem.
Wspomniałem o bólu nóg? Jak tylko zaproszeni uczestnicy wejdą do pokoju, niech zobaczą, że to nie jest kolejne z nudnych spotkań, na którym będą siedzieć w nosie z laptopem. Wszelkie laptopy i krzesła powinny w ogóle się tam nie znaleźć, a przynajmniej zostać umieszczone pod ścianą. “Notowanie” w telefonie też jest zabronione — wszystko będzie się pojawiać na wspólnej tablicy :) EventStorming wymaga dużo aktywności, chodzenia — biegania po przygotowanej przestrzeni. Nie mam tutaj jeszcze przepisu na wersję zdalną — ale może stanie przy biurku coś tutaj da 😂? À propos wersji zdalnej. Możesz przeczytać co sądzi o niej Alberto PRZED i PO wydarzeniach ostatnich lat i boomie na pracę zdalną.
Ten post jest częścią Mailingu Domain-Driven Design. Jeśli chcesz dostać więcej tego typu treści i mieć ze mną ułatwiony kontakt, to koniecznie zapisz się TUTAJ. Czytam i odpowiadam na wszystkie maile. To czasochłonne zajęcie, ale karma wraca z prędkością światła. Wszelkie luźne myśli też mile widziane albo cokolwiek innego, co Twoje paluszki chcą właśnie wystukać na klawiaturze.
Wszyscy na miejscu? Narzędzia gotowe? No to zaczynamy! Zebraliśmy się tutaj… no właśnie. EventStorming musi mieć określony cel. Mówi o tym też wspomniany Mariusz Gil w rozmowie z Maćkiem Aniserowiczem.
Cele zazwyczaj są podobne i obracają się wokół usprawnienia aktualnych procesów. Na mój kolejny warsztat mamy kilka celów:
Kiedy już je osiągniemy, na kolejnych sesjach, będziemy projektować, jak byśmy chcieli, żeby te procesy wyglądały i gdzie zastosować programowanie 😀. No albo uznamy, że wszystko jest w porządku i żadna aplikacja ani cokolwiek nie jest potrzebne (tak ES też może zadziałać).
Aby jak najbardziej zwiększyć prawdopodobieństwo powodzenia, zaprosiliśmy osoby wymienione poniżej.
Wcześniejsze warunki spełnione? Wszyscy stoją już w pokoju? Świetnie! W takim razie rozpoczynamy warsztat. EventStorming BigPicture (tak się nazywa część, którą opisuję w tym mailu) składa się z kilku faz. Zatytułowałem je wg. angielskich nazw, jakich Brandolini używa w swojej książce. W kwadratowych nawiasach znajdziesz, ile czasu przeznaczam na każdą z części. To bardzo ważne, aby go pilnować. Jeśli dyskusja trwa za długo, umieszczasz HotSpot (czym to jest wyjaśnię zaraz) na modelu, do którego wrócisz później. Jeśli nie przeprowadzisz warsztatu do końca, to później może już nie nastąpić, bo uczestnicy nie będą mieć ochoty na kolejny, nie widząc efektów.
Ten plan powstał na bazie jego książki i moich własnych doświadczeń. Właśnie tutaj stosuje się analogię do przygotowywania pizzy. Alberto mówi, że Event Storming jest jak pizza. On dał tylko podstawę, a my dodajemy swoje składniki. Notacja i forma nie jest sztywna. Możesz ją dostosowywać pod konkretne potrzeby, a nawet tworzyć na bieżąco w trakcie sesji! Sam podczas prowadzenia takich sesji, mam zawsze przy sobie ściągę w postaci nagłówków poniższych sekcji i czasu, żeby wiedzieć czy damy radę się ze wszystkim wyrobić.
Dlaczego tak ważne jest modelowanie za pomocą karteczek? Dlaczego nie lepiej od razu siadać do kodu i wykonać Proof of Concept?
Czas programistów jest drogi-zmiana procesu w kodzie pociąga za sobą gigantyczne koszty.
A ile kosztuje przeklejenie karteczki z miejsca na miejsce? Czy po prostu pogniecenie i wyrzucenie?
Zbieraj te karteczki, które ostatecznie nie znalazły się na modelu. To będzie dobra metryka, żeby zobaczyć jakie złe wyobrażenia rozwiał Event Storming 😀.
Kawałek procesu zamodelowany za pomocą EventStormingu.
(Kliknij obrazek, aby powiększyć)
Dostałeś już gotową instrukcję i listę składników. Czas pieczenia też jest dobrze znany. Więc na co czekasz? Wrzucaj składniki do pieca i zorganizuj swój pierwszy EventStorming!
Dzisiaj proponuję Ci, żebyś włożył poprzedni ES Kopciuszka STĄD między bajki, albo przynajmniej przesunął go gdzieś na bok na MIRO. Ostatnie ćwiczenie to była tylko zabawa. Chociaż książę zapewne też dysponował górami złota, to czas zacząć stosować EventStorming w prawdziwych problemach, gdzie w grę wchodzą często niewyobrażalne kwoty. Sam zdajesz sobie sprawę, ile teraz pieniędzy jest inwestowanych w branże IT. Poniżej znajdziesz kilka propozycji, w jaki sposób przeprowadzić swój EventStorming. Nawet jeśli nigdy wcześniej tego nie robiłeś-to z pewnością dasz radę! Jesteś też tutaj po to, żeby Ci pomóc. Instrukcja może wydawać się długa, ale trzymanie się jej krok po kroku naprawdę jest bardzo proste. To o wiele łatwiejsze niż postępowanie bez żadnego planu. Niezależnie od tego, który wariant wybierzesz, podziel się ze mną efektami Twojej sesji, a także wszystkimi wątpliwościami i pytaniami, jakie się pojawiają, nawet już teraz 😀.
Wariant #0 - Mariusz Gil (nieprzypadkowo po raz 4 w tym wpisie - policzyłem!), Skrzynkomaty i Domain Explorers
O co w tym wszystkim chodzi, dowiesz się na oficjalnej stronie tej inicjatywy. Wysokiej jakości filmiki i występujący w nich “ekspert domenowy” - jeden w co najmniej trzech osobach wdroży Cię w sposób działania skrzynkomatów. Tym razem Mariusz mnie wyręczy i też przedstawi Ci szczegóły Twojego zadania. Obecnie inicjatywa Mariusza trochę ledwo dycha, niczym Internet Explorer, ale sam autor obiecał, że będzie lepiej. Trzymam za słowo 😀! Nawet jak zdecydujesz się na inny wariant to i tak warto obejrzeć to, co przygotował Mariusz 😀.
Wariant #1 - Twoja domena z zespołem
Zbierz twój aktualny zespół i otwórz swojego Boarda. Jeśli wszyscy nie będą chętni, to najlepiej mieć chociaż jedną dodatkową osobę. A całą resztę odesłać na tego bloga 😀. Możesz też wziąć kogoś spoza zespołu, chętnego do rozwoju i zajaranego tematami DDD. Może to być też osoba nietechniczna. Nie musi Ci pójśc od razu wszystko książkowo. Nawet jeśli nie będziesz w stanie zaangażować ekspertów domenowych, to może znajdziecie HotSpoty, które warto z nimi wyjaśnić? Albo już tyle siedzicie w tym projekcie, że sami jesteście ekspertami 😀? Problemem będzie, jeśli Twoja domena nie jest procesowa. Czyli np. programujesz algorytmy albo CRUD do bazy danych. EventStorming do tego pierwszego się nie nadaje, a do drugiego wiele nie wniesie. Wtedy pozostają Ci inne warianty 😀.
Wariant #2 - Twoja domena / procesy w pracy i nowy kolega w zespole
Bardzo przyjemnym sposobem na EventStorming jest też wdrożenie nowego pracownika. Przychodzi ktoś nowy do zespołu? Spotkajcie się razem przed tablicą i przynieś pomarańczowe karteczki albo odpal MIRO! To ma sens też dla Ciebie, żebyś na nowo przeprowadził proces odkrywania domeny, nad którą pracujesz. Może Ty sam dojdziesz do jakiś nowych odkryć? Ogólnie, ważną zasadą w EventStormingu jest to, że samo pokazywanie wyników poprzednich sesji nie działa dobrze. Sam wynik jest tylko podsumowaniem. Dla osoby, która nie była obecna podczas modelowania, nie będzie znaczył wiele więcej niż tapeta na ścianie. Jednak dla uczestnika warsztatów będzie dobrym streszczeniem i konkretne karteczki będą mu przypominać dyskusje, jakie się działy podczas modelowania. Zamodelować możecie nie tylko domenę, ale np. procesy w trakcie dnia pracy. Flow od zadania na JIRA do deploymentu itd.
Wariant #3 - Używany przez Ciebie system
Możesz przeprowadzić EventStorming np. dla systemu rezerwacji biletów na jakieś wydarzenie albo jakiejkolwiek innej aplikacji, którą używasz 😀. Jednak ciężko, żebyś w tym przypadku miał wiedzę eksperta domenowego.
All rights reserved by RagingPhotography
(Kliknij obrazek, aby powiększyć)
W tym wpisie zawarłem pigułę niezbędnej wiedzy do przeprowadzenia sesji EventStormingu. Mam nadzieję, że proces zmiany Twojego programistycznego JA czy dążenia do bycia “rzemieślnikiem” zachowującym jakość, postępuje coraz bardziej wraz z kolejnymi artykułami 😀. Chcesz go przyśpieszyć? Lubisz uczyć się z książek? Już dzisiaj proponuję Ci prawdziwy niezbędnik każdego Stormingtroopera! Książka Alberta Brandoliniego to po prostu MUST HAVE, dla przyszłego prowadzącego warsztaty, jeśli nie chcesz być tylko klepaczek kodu, ale prawdziwym partnerem biznesowym! Możesz ją kupić TUTAJ. Nie patrz na to, że jest dokończona tylko w 70%. To nie ma znaczenia 😀. EventStorming ma tyle różnych składników, że ciężko byłoby postawić ostatnią kropkę. Alberto już otwarcie mówi, że nie można go pytać, kiedy to nastąpi. Przeczytałem ją w tej formie i naprawdę BYŁO WARTO!. Z samej treści ciężko się domyślić, że może w niej czegoś brakować (bardziej wymaga trochę refaktoringu i posprzątania).
Jak zawsze, jestem po drugiej stronie monitora i czekam na efekty Twoich sesji! A może już masz pierwsze doświadczenia za sobą i podobny schemat na warsztat, którym mógłbyś się podzielić? Z chęcią wymienię się spostrzeżeniami w komentarzach! Życz mi dokładnego poznania domeny na nadchodzącym EventStormingu!
PS. Nie możesz znaleźć nikogo chętnego na modelowanie razem? To dodaj komentarz do tego artykułu z kontaktem do Ciebie. Może uda się kogoś znaleźć do wspólnego “stormowania” 😀.
🤔 Nie masz pomysłu na przykładową domenę? Co powiesz na Heroes III? ZOBACZ JAK TO ROBIĘ TUTAJ.
Wciąż za mało życiowych cheatów?
Zostaw swój adres e-mail i zobacz moje spojrzenie na codzienność programisty.
Na sam początek opowiem Ci o zetknięciu z Domain-Driven Design, zmianie myślenia i nowej erze mojego programistycznego ja.
Możesz liczyć na materiały o Event Sourcingu, Event Modelingu, DDD, programowaniu obiektowym i funkcyjnym oraz innych powiązanych tematach.
Na pewno poświęcę trochę maili umiejętnością miękkim.
Będziesz też informowany o nowościach Życia na kodach prosto na Twoją skrzynkę!