fbpx

Event Storming: Dlaczego zdarzenia są ważne?

Zauważyłem, że najpierwszą i powtarzającą się trudnością przez, którą trzeba przejść uczestnicząc w warsztacie Event Storming jest poprawne identyfikowanie zdarzeń.

Dla przypomnienia: zdarzenie to coś, czemu można jednoznacznie przypisać znacznik czasu. W związku z tym prowadzący warsztaty najczęściej dają następującą wytyczną odnośnie do nazywania zadarzeń

  • ma być w czasie przeszłym
  • ma być w formie dokonanej

Mamy zatem zdarzenia:

  • ZakupyZrobione
  • FakturaWygenerowana
  • MailWysłany

Ale nie:

  • ZróbZakupy – bo to nie zdarzenie, lecz akcja
  • GenerowanieFaktury – bo to nie zdarzenie, lecz proces
  • WysłanieMaila – bo to czynność

Prowadząc warsztaty Event Storming widzę, że początkowo moja skrupulatność, co do nazywania zdarzeń wnerwia niektórych uczestników. Przypatrzmy się temu nieco bliżej.

Sprzątanie mieszkania

Zakładam, że nawet jeśli ta pożyteczna aktywność, jaką jest sprzątanie zaniknęła na rzecz outsourcingu, to mniej więcej wiesz, jak to się odbywa.

„Sprzątanie mieszkania” jest procesem, który rozpoczyna się, załóżmy, że „wyjęciem odkurzacza”, a kończy „schowaniem odkurzacza”.

Na początek całkowicie zignoruję wytyczne co do nazywania zdarzeń i rozpiszę ten proces tak, jak robi to typowy newbie na pierwszym warsztacie:

  • wyjęcie odkurzacza
  • odkurzanie przedpokoju
  • odkurzanie wc
  • odkurzanie pokoi
  • odkurzanie balkonu
  • przełącz odkrzacz do innego gniazdka, bo kabel za krótki
  • odkurz kuchnię
  • wyłączenie odkurzacza
  • zwiń przewód
  • schowanie odkurzacza

Czy podążanie ww. rozpisanym procesem doprowadzi do posprzątania mieszkania? Tak, doprowadzi. A zatem jest dobrze? Nie, nie jest….

Natomiast inny newbie

Zobaczmy, w jaki sposób inny typowy początkujący uczestnik warsztatu rozpisze proces sprzątania mieszkania:

  • wyjęcie odkurzacza
  • szybkie przetarcie kurzy na wszystkich szafkach
  • rozwinięcie kabla
  • podłączenie odkurzacza
  • odkurzanie dywanu w przedpokoju
  • odkurzanie podłogi w przedpokoju
  • schowanie odkurzacza
  • wyjęcie dywaników z WC
  • odkurzanie dywaników
  • odkurzanie podłogi w WC
  • włożenie dywaników do WC
  • odkurzanie na balkonie
  • odkurzanie dużego pokoju
  • odkurzanie małego pokoju
  • odkurzanie kuchni
  • wyłączenie odkurzacza
  • wymiana worka w odkurzaczu
  • schowanie odkurzacza

Czy podążanie ww. procesem doprowadzi do posprzątania mieszkania? Tak, doprowadzi. Czy zatem teraz jest dobrze? Nie, nie jest. Dlaczego? Bo nie wiadomo, który rozkład procesu jest tym „właściwym”.

Niejednoznaczny proces biznesowy

Zauważ, że w powyższym przykładzie dwie osoby, zaprezentowały inną wersję tego samego procesu biznesowego i obie mają rację. Podążając za każdą z propozycji, proces biznesowy o nazwie „sprzątanie mieszkania” zostanie z sukcesem wykonany.

Jeśli zatem grupa osób zabierze się za rozczłonowywanie np. procesu „zamawiania karty stałego klienta” i posłuży się metodyką radosnej twórczości, na koniec dnia i tak nie będzie wiadomo, co poźniej należy zaimplementować. Albo co gorsza deweloperzy napiszą oprogramowanie, wpierające proces, którego nikt właściwie nie rozumie.

Twierdzenie o rozkładzie procesu 🙂

No, może to będzie takie niby-twierdzenie, bo twierdzenie z prawdziwego zdarzenia musi mieć dowód, a mój dowód będzie poglądowy i mało ścisły. A brzmi to tak:

Każdy proces biznesowy można przedstawić jako ciąg następujących po sobie czynności,
a dla danego procesu biznesowego ciągów tych jest nieskończenie wiele.

Dowód, jak wspomniałem, będzie poglądowy i trochę śmieszny. Zatem wyobraź sobie kawałek sznurka, a potem że go tniesz na pewną skończoną liczbę kawałków. A innym razem tniesz ten sznurek na jeszcze inne kawałki i jeszcze inne i jeszcze inne. Jakkolwiek byś nie pociął sznurka na kawałki, to po każdym cięciu suma kawałków da cały sznurek. Koniec dowodu.

Innymi słowy, jeśli rozpracowujesz proces biznesowy i nie dbasz o nomenklaturę – raz używasz nazw czynności, raz nazw akcji, innym razem samych rzeczowników – to zawsze coś tam wypracujesz, ale istnieje bardzo duże ryzyko, że zidentyfikowane przez Ciebie składowe procesu nie będą „tymi istotnymi” składowymi. W związku z tym, gdy już powstanie jakieś oprogramowanie, to ze sporą pewnością będzie nieużyteczne.

Co zmienia identyfikowanie zdarzeń?

Jeszcze raz rozłóżmy „sprzątanie mieszkania” na kawałki, ale tym razem będą to zdarzenia z prawdziwego…zdarzenia…

  • odkurzacz wyjęty
  • przedpokój odkurzony
  • duży pokój odkurzony
  • mały pokój odkurzony
  • wc odkurzone
  • balkon odkurzony
  • kuchnia odkurzona
  • worek wymieniony
  • odkurzacz schowany

Dostrzegasz różnicę? Posługiwanie się zdarzeniami pomaga uchwycić istotne momenty, które trzeba „zaliczyć”, aby „mieszkanie zostało posprzątane”.

Oczywiście można sobie dyskutować, że może granulacja powinna być większa, może więcej jest istotnych punktów sprzątania do „zaliczenia” np. dodatkowo: odkurzacz włączony, dywan zwinięty, dywan rozwinięty, sedes umyty itd.

Istotne jest przede wszystkim to, że to dalsze uszczegóławianie dzieje się na tej samej wersji procesu. Natomiast w poprzednich przykładach kolejne uszczegółowienia często tworzyły alternatywne wersje procesu, co skutkowało niejednoznacznością.

Podsumowując, gdy następnym razem trafisz na warsztat EventStorming nie marudź, tylko pisz te zdarzenia 🙂