Możliwe że już kiedyś słyszałeś, że warto się tą techniką zainteresować. W tej serii postów – postanowiłem podzielić to na kilka postów z uwagi na ilość materiału – wyjaśnię co to jest Event Storming, jakie są jego zalety oraz wady. Wyjaśnię też ogólne zasady – jak i gdzie można go stosować. Podam też kilka informacji od czego zacząć. Odpowiem na pytanie – Po co mi ta technika?
Sprawy organizacyjne serii
Seria ta będzie ewoluowała wraz ze mną. Co to znaczy? Ciągle się uczę i poznaje nowe możliwość Event Stormingu. Istniejące wpisy będą aktualizowane oraz dojdą nowe.
Aby było łatwiej i przyjemniej posłużę się przykładem. Czyli tak jak ja poznałem tą technikę.
A oto przykład
Pan Grzegorz posiada jednoosobową firmę zajmującą się tworzeniem aplikacji na zamówienie. Do Pana Grzegorza zgłasza się klient. Ma on „problem” ze wzrastającym zapotrzebowaniem na jego usługi sprzątania. Do tej pory wystarczał plik w Excelu do zarządzania zleceniami. Dlatego wpada na pomysł – będzie potrzebował aplikacji, która wyręczy go w codziennej pracy.
Na spotkaniu z klientem Pan Grzegorz dowiaduje się, że jego zadaniem ma być stworzenie aplikacji przyjmowania zleceń oraz optymalne planowanie sprzątania. Spisujemy wszystkie wymagania na kilku kartkach.
Po spotkaniu Pan Grzegorz spędza parę dni na planowaniu po czym przystępuje do pisania aplikacji. W trakcie pisania, klient zgłasza nowe pomysły. Po jakimś czasie oddajemy pierwszą wersję, a klient zgłasza poprawki. Piszemy drugą wersję i znowu poprawki … i tak przez pół roku. Ostatecznie oddajemy produkt po terminie, z przekroczonym budżetem, a do tego klient nie jest do końca zadowolony z efektów.
Jestem świadom że wiele projektów powstało w ten sposób i mają się dobrze. Chcę jednak zwrócić uwagę, i co zabawne oraz smutne jednocześnie, że równie wiele projektów nie doczekuje szczęśliwego zakończania.
Na jakie problemy napotykamy podczas pisania oprogramowania
Poniżej lista kilku problemów, jakie na swojej drodze mógł napotkać Pan Grzegorz:
- Komunikacja z klientem
- Niejasne wymagania
- Zrozumienie problemu
- Klient zmienia koncepcję w trakcie procesu wytwarzania
Ilość możliwych problemów jest oczywiście większa. Skupiam się jednak nad zrozumieniem zadania z jakim przyszło się zmierzyć Panu Grzegorzowi. Inaczej nad problemami w rozwiązywaniem problemu klienta.
W mojej pracy jako programista często brakowało jakości w komunikacji z klientem. Co znaczy że brakowało jakości? Po zakończonym spotkaniu z klientem odchodziłem z przeświadczeniem „o teraz na pewno rozumiem o co mu chodziło”. Jakie było moje zdziwienie gdy przedstawiałem skończoną funkcjonalność i słyszałem: „No nie do końca to miałem na myśli”, „Nie oto nam chodziło”, „A czy można zrobić to inaczej” …
Czyli nie rozumiałem albo klient sam nie wiedział o co mu chodzi – tłumacząc sobie wybierałem to drugie ;). Na usprawiedliwienie powiem że nie zawsze tak było, no ale jednak.
Czym to skutkowało? Jak można szybko się domyślić, brakiem czasu na nowe funkcjonalności.
Wiec jak Pan Grzegorz mogliby sobie oraz oczywiście klientowi pomoc? Powinien poznać narzędzie jakim jest Event Storming.
Co to jest Event Storming?
Zanim przejdę do przykładu z Event Stormingiem i jak mogło by wyglądać spotkanie Pana Grzegorza po poznaniu tego narzędzia. Warto choć trochę się z nim zapoznać.
Najprościej: Event Storming jest narzędziem do pozyskiwania wiedzy domenowej. Polega na przyklejaniu różnokolorowych karteczek (Post-it) na ścianę/tablicę, z zapisanymi na nich informacjami. Wprowadza wspólny „interfejs” do komunikacji.
Czym jest wiedza domenowa?
Od razu warto wyjaśnić czym jest wiedza domenowa. Do wyjaśnienia posłużmy się powyższym przykładem, czyli usługami sprzątania. Osoba planująca usługi sprzątania u różnych klientów planując będzie brała pod uwagę wiele rzeczy. Czas w jakim usługa powinna zostać wykonana, jakich środków czyszczących użyć u danego klienta, dojazd na miejsce, przejazd do następnego klienta i wiele innych czynników, które będą miały wpływ na jakość oraz czas w jakim zostanie taka usługa zrealizowana.
I tak do pozyskania wiedzy domenowej będzie potrzebna nam osoba która tą wiedzę posiada. Warto o tym pamiętać planując sesję z klientem. Bardzo prawdopodobne że pierwsza sesja będzie skupiała się na ogólnikach. BigPicture. Po takiej sesji powinniśmy już wiedzieć gdzie będziemy potrzebowali wiedzy eksperckiej – domenowej.
A więc uściślając: wiedza domenowa jest to wiedza na temat zasad oraz procesów – w naszym przypadku – koniecznych do zaplanowania usługi sprzątania u klienta.
Warto wiedzieć:
- Event Storming to technika do pozyskiwania wiedzy domenowej
- Dobrze mieć do dyspozycji eksperta domenowego
- Na pierwszej sesji robimy szeroki obraz (ang. BigPicture)
W następnym opiszę jak zabrać się do Event Storming – korzystając z powyższego przykładu. Oraz co będzie potrzebne żeby rozpocząć.