
Domain Storytelling
Zanim przejdę do meritum, czyli do tytułowego Domain Storytelling, kilka zdań wstępu.
Jakiś czas temu widziałem badanie, z którego wynikało, że około 70% projektów związanych z oprogramowaniem kończy się przekroczeniem budżetu, dostarczeniem produktu niezgodnie z wymaganiami klienta lub nie jest dostarczane na czas. Przyczyn takiego stanu jest zapewnie wiele. Jestem jednak przekonany, że w wielu przypadkach głównym problemem jest komunikacja. Problemy w komunikacji to niejasne cele, wymagania, scenariusze działania. I piszę tu przede wszystkim o niezrozumieniu biznesu przez twórców oprogramowania. I niezrozumieniu programistów przez biznes.
Domain Driven Design
Bodajże w 2004 roku Eric Evans opublikował, będącą już chyba klasykiem, książkę Domain-Driven Design, która wprowadziła DDD. Metody i narzędzia Domain Driven Design miały pomóc i pomagają w zrozumieniu dziedziny biznesowej. A głównym motywem DDD jest właśnie poprawa komunikacji, co ma prowadzić do wyeliminowania głównej przyczyny niepowodzeń w projektach informatycznych.
A jak ma się do tego Domain Storytelling?
Domain Storytelling
Zanim przejdę do tego czym Domain Storytelling jest, zacznijmy może od tego, co nam daje.
Dlaczego Domain Storytelling?
Pytanie, na które bardzo łatwo odpowiedzieć. Domain Storytelling łączy ze sobą programistów, architektów, ekspertów dziedzinowych (biznes), projektantów interfejsów użytkownika, managerów, … Łączy właściwie wszystkich zaangażowanych w dany projekt.
W telegraficznym skrócie, najważniejsze, wg mnie, zalety Domain Storytelling. W czym potrafi pomóc:
- zrozumienie domeny, czyli tego o co chodzi
- umożliwienie wszystkim uczestnikom porozumiewania się wspólnym językiem związanym z tą domeną
- wydobyć i wyjaśnić prawdziwe wymagania dla oprogramowania
- uniknąć nieporozumień pomiędzy uczestnikami
- często przeprojektować same procesy biznesowe
- zaprojektować oprogramowanie
- znaleźć granice dla serwisów (mikroserwisów).
Domain Storytelling pomaga lub wręcz umożliwia, przełożenie domeny biznesowej na oprogramowanie komputerowe.
Czym jest Domain Storytelling?
Tu już mam małą trudność w odpowiedzi. Ale dlatego, że nie wiem, na którą odpowiedź się zdecydować. Spróbuję jednak połączyć wszystkie w jedną. A więc…
Domain Storytelling to technika lub wręcz forma warsztatu, która poprzez zgromadzenie różnych ludzi pozwala zrozumieć jak zarówno oni, jak i systemy informatyczne pracują razem. Eksperci domenowi opowiadają jak wyglądają poszczególne procesy, które nazywane są jako Domain Stories. Całość moderowana jest przez osobę, która je zapisuje za pomocą piktogramów. Eksperci widzą na bieżąco, czy moderator dobrze rozumie procesy i mogą je na bieżąco korygować. Moderator „napędza” ekspertów zadając pytania
- kto?
- co robi?
- za pomocą czego?
- dlaczego?
Co ważne, opisując rzeczywistość, szczególnie na początku, skupiamy się na tym co naprawdę się dzieje w biznesie, a nie co ewentualnie może się wydarzyć. Jedno Domain Story skupia się na jednym, konkretnym przypadku.
Zanim pokażę przykładowy efekt, na początek zacznę od podstawowych elementów, które występują w schematach:
- actor – inicjuje aktywność
- activity – aktywność
- work objects – obiekt akcji
- other actors – inne obiekty, za pomocą których aktor działa.
Oto przykład. Użytkownik (actor) kupuje (activity) klawiaturę (work object) od sprzedawcy (other actor). Do tego pewnie przydadzą się jakieś ikony.
Przykład
Pewnie domyślacie się, że w tej chwili piszę ten artykuł i to mógłby być temat na storytelling. Ale uprośćmy trochę temat. Załóżmy, że chcę sprzedać wszystkie swoje płyty CD. Mam ich mnóstwo, nie ogarniam tematu. W tym celu postawiłem stoisko w jakimś centrum handlowym, ozdobiłem je balonikami i serpentynami, a wokół przechadzają się hostessy reklamując mój towar.
Wszystko wygląda pięknie, ale… Ręczne sprawdzanie czy mam płytę, o którą pyta zainteresowany jest czasochłonne. Pomyślałem, że znam bardzo dobrego programistę, Adama. I do głowy wpada pomysł , a gdyby tak napisać oprogramowanie, które by mnie wspomogło. Szybka myśl, pogadam o tym z Adamem.
Od myśli do czynów, początek rozmowy wyglądał mniej więcej tak:
Wstępna rozmowa
Przemek: Potrzebuję softu, który pomoże mi w sprzedaży płyt
Adam: Taaaaa….
Przemek: Może mógłbyś mi w tym pomóc?
Adam: Przemek, zarobiony jestem. Robię system do śledzenia mrówek i kleszczy w AWS IoT.
Przemek: Kurcze, pomóż. Proszę.
Cisza. Słychać tylko przelatujące ptaki i kuriera DHL parkującego nieopodal. W oddali jeszcze starsza kobieta o imieniu Wiesława (nie pytajcie skąd wiem) nawołuje, aby kupić od Niej świeże pączki. Z tego co dosłyszałem, do każdego dodaje jakiś gratis.
Nadal cisza… Ale widzę, że Adam myśli.
Zegar tyka, słońce powoli zachodzi. Jeszcze bardziej powoli zbliża się zima. Nagle Adam się odzywa:
Adam: Wiesz…., znamy się kopę lat. O kasie na razie nie gadajmy. Pomogę Ci. Ale chcę to zrobić na swoich warunkach odnośnie współpracy. Szczególnie pod kątem zaprojektowania oprogramowania. Czy to jest dla Ciebie OK?
Przemek: Myślę, że tak.
Chwila ciszy. Teraz ja myślę. Szukam dziury w całym. Szukam w myślach niebezpieczeństw. Adam to zauważa i zagaja:
Adam: Przemek, jak po prostu przed zaimplmentowaniem czegoklowiek, chcę dobrze zrozumieć Twój biznes. To czym się zajmujesz, jak wygląda proces sprzedaży
Znowu kilkadziesiąt sekund ciszy. Myślę i w końcu odpowiadam
Przemek: Jasne, pogadajmy o tym. To powinno pomóc nie tylko Tobie, ale także mnie. Możesz przyjść do mnie jutro koło 10?
Adam: Nie ma problemu. Widzimy się rano. Wezmę ze sobą wszstkie potrzebne rzeczy.
Zacząłem zastanawiać się o jakich rzeczach mówił Adam. Podeszła jednak Pani Kasia, zapytała czy mam jakieś płyty Depeche Mode , założyłem więc rękawiczki i udałem się do magazynu przeszukiwać kartony.
Zaczynamy projekt
Na szczęście dziś sobota. Ku mojemu zdziwieniu Adam przyjechał 10 minut przed czasem. Wypiliśmy świeżą kawę i skierowaliśmy się do Jego samochodu. Adam otworzył bagażnik i zobaczyłem w nim mnóstwo rzeczy. Małe karteczki, pisaki, magnesy, whiteboard i laptopa. Zapytałem oczywiście po co to wszytko, na co padła odpowiedź:
Adam: Zabrałem ze sobą rzeczy, które nam mogą pomóc. Osobiście najbardziej lubię pracować z laptopem, bo łatwo nanosi się poprawki, ale może lepiej sprawdzi się tablica. Nie wiem.
Po zamknięciu bagażnika wsiedliśmy do samochodu i ruszyliśmy w drogę do biura Adama. Weszliśmy do biura. Adam usiadł przy biurku i wyciągnął laptopa, którego podłączył do wielkiego ekranu widocznego dla nas obu i zaczął zadawć pytania:
Adam: Czym się zajmujesz?
Przemek: Sprzedaję płyty CD.
Adam: OK, a jak wygląda proces sprzedaży? Co się dzieje po kolei. Od samego początku do zakończenia transkacji.
Przemek: To chyba jest proste. Postaram Ci się to opisać.
Adam uruchomił jakąś aplikację na laptopie, spojrzał na mie, zmróżył oczy i powiedział:
Adam: OK, jestem gotowy. Słucham. Spróbujmy zastosować Domain Storytelling. Czym się zajmujesz?
Przemek: Sprzedaję płyty CD.
Adam zapisał coś na komputerze i zapytał:
Adam: OK, opisz mi typową transakcję sprzedaży. Od początku do końca.
Przemek: Aaaaa… To nie powinno być trudne. Podchodzi klient i pyta mnie, czy mam konkretną płytę danego wykonawcy.
Adam: Czekaj, czekaj. Czyli Ty jesteś sprzedawcą? Sprzedajesz płyty.
Przemek: Tak.
Adam: OK, czyli mamy pierwszego aktora.
Poklikał coś w laptopie i na ekranie pojawiła się pierwsza ikona.
Adam: No i jeszcze kupujący, drugi aktor.
Przemek: Tak, wszystko się zgadza.
Adam: Dobrze, i co kupujący robi na początku?
Przemek: Mówi mi, czyli sprzedawcy, jaką płytę chce kupić.
Adam pochylił się nad laptopem i po chwili zobaczyłem pierwszą aktywność.
Przemek: Tak, to się zgadza.
Adam: Dobra, co się dzieje potem?
Przemek: Nooo, wyciągam zeszyt, w którym mam listę płyt na sprzedaż i patrzę czy mam płytę, o którą pyta klient. Nie ogarniam tego w głowie.
Adam: OK, poczekaj chwilę… Powoli, zacznijmy od list płyt.
Jakieś 3 minuty później obraz na ekranie się zmienił
Adam: Dobra, teraz szukasz na liście płyty. Więc to chyba wygląda tak
Przemek: Dokładnie tak, trafiłeś w punkt.
Adam: Fajnie. Teraz jak się domyślam, płyta na liście jest, albo jej nie ma.
Przemek: W punkt. Przeważnie jest. Ludzie wiedzą, czego się mogą u mnie spodziewać.
Adam: Super, przyjmijmy najczęstszy przypadek, czyli płyta jest dostępna i możesz ją sprzedać. Co się dzieje potem?
Przemek: Aaaaaa… Mowię, że płyta jest. A tak naprawdę, że powinna być. I idę….
Adam: Stop, poczekaj. Ogarnijmy to po kolei.
Przemek: Ale pamiętaj, mogę nie mieć tej płyty na sprzedaż.
Adam: OK, dodajmy komentarz. A właściwie annotację.
Adam: W ten sposób zaznaczyłem, że płyta jest dostępna. OK, wiem, wiem. Powinna być dostępna. 😉
Przemek: Dobrze to ująłeś. Czasem coś ginie. Czasem coś zapomnę skreślić. A czasem nie mam po prostu danej płyty.
Adam: Jasne. Koncentrujemy się teraz przede wszystkim na happy path. Wszystko się udaje.
Przemek: Dobra, lećmy tą drogą. Chciałbym, żeby tak życie wyglądało. 🙂
Adam: Też bym chciał. Nie zawsze tak się dzieje, ale na potrzeby naszej opowieści tak załóżmy. Przynajmniej na poczatek. Co dalej? Co robisz?
Przemek: Idę szukać płyty.
Przemek: O matko. Co to za pajęczyna? To nie może być aż tak skomplikowane.
Adam: A jednak jest. Zresztą Twój przypadek jest naprawdę bardzo prosty. Spokojnie. To co robimy pozwoli wszystkim zrozumieć co się dzieje i czego oczekujemy. Nawet Tobie. A jak przejdziemy na przykład do projektowania UI, to i tam będzie to pomocne. Spokojnie. Mówiłeś, że czasem zapominasz skreślić płytę z listy. Często się to zdarza?
Przemek: Nie za bardzo. Muszę być naprawdę zakręcony, żeby czegoś nie skreślić.
Adam: Czyli możemy przyjąć, że jeżeli płyta jest na liście to jest także w magazynie?
Przemek: Chyba tak. Tak. Naprawdę rzadko się zdarza, że czegoś nie wykreślę. Idziemy dalej. Jak to nazwałeś?
Adam: Happy path.
Przemek: No tak. Płyta się znalazła. Pokazuję ją klientowi. Rysuj!
Adam: Powoli. A co z ceną za płytę.
Przemek: Noooo, jest na liście. Podałem ją wcześniej. Razem z informacją o dostępności płyty. Dobra, przy okazji. A właściwie po tym, jak potwierdzę dostępność płyty.
Adam: Hmmm, to trochę zmienia postać rzeczy. Zmienia schemat. Poczekaj chwilę. Pokażę Ci, jak ja to rozumiem.
Adam: Coś takiego? Tak to wygląda?
Przemek: Daj na spokojnie popartrzeć!
Adam: Jasne.
Po chwili, czyli 3 momentach.
Przemek: Brakuje mi jednej rzeczy. Wiesz, nie pójdę szukać płyty w gratach, zanim klient nie powie mi, że akceptuje cenę.
Adam: No tak, bez sensu szukać płyty, jeżeli klient wyjdzie. Zakładamy happy path? Klient jest zainteresowany?
Przemek: Jasne. Mam niskie ceny. Chcę się pozbyć płyt. Chcę sprzedać, nie sprzedawać! Tak jest najczęściej.
Adam: Poczekaj chwilę. Dodam jedną annotację.
Przemek: Much better 🙂
Adam: Dobra, przestańmy sobie słodzić. Co dalej?
Przemek: Nooo, klient płaci za towar. Za płytę.
Adam: OK, dodajemy.
Przemek: Matko boska! Przestaję to ogarniać! To takie skomplikowane?
Adam: Nie. Twój przypadek jest dość prosty. Pamiętaj, że cały czas idziemy przez happy path. Co jak nie będzie płyty? Co jak klient nie zgodzi się na cenę? Ale to później. Powiem Ci tylko, że jak klient mówi mi, że ma prostą rzecz do oprogramowania i nie powinno to zająć dużo czasu, to tylko sarkastycznie się uśmiecham.
Przemek: Wiesz, chyba masz rację. Zaczynam to widzieć. Mam nadzieję, że nie bierzesz dużo za godzinę pracy. 😉
Adam: To zależy 😉 Pewnie się jakoś dogadamy. Analizę masz po znajomości gratis. Ale idźmy dalej. Domyślam się, że jeżeli klient zapłacił, to dajesz mu płytę.
Przemek: No nie inaczej. Przecież nie staram się o medal oszusta roku. 😉
Adam: Dobra, to dodajemy do schematu. Daj mi moment.
Adam: No i jak to wygląda?
Przemek: Wiesz…. Dobrze. Ale co z sytuacjami, że coś pójdzie nie tak? Klient zrezygnuje? Płyty nie będzie w magazynie?
Adam: Spokojnie. Dojdziemy do tego. Używając Domain Sotrytelling zakładamy, że nie ma warunków. Modelujemy jeden scenariusz. Brak płyty lub zgody klienta na zakup to inne scenariusze. Inne alternatywy to inne scenariusze. Staram się jak najbardziej je uprościć. Nawet nie ja, a Domain Storytelling. Nie oferuję, nie oferujemy Ci warunkowych ścieżek, bo zaczniesz z nich korzystać i to zagmatwa akcje. Jeżeli coś ma się podziać inaczej, to znaczy, że to jest inna akcja. Przejdziemy do tego. Przemyślimy dziasiaj przynajmniej jeden taki scenariusz. Spokojnie.
Przemek: OK, zmierzajmy do celu.
Adam: Ty jesteś zmęczony?! Przecież to ja wszystko rysuję!. Ty tylko opowiadasz. Przważnie opowiadających jest o wiele więcej. Rzadko jedna osoba zna całą domenę biznesową. Postaw się w mojej sytuacji!
Przemek: OK, OK. Chyba rozumiem. Idziemy dalej?
Adam: Jasne. Spróbujmy dziś omówić i zaprojektować chociaż jeden scenariusz alternatywny. Co o tym mylisz?
Przemek: Dam radę. Zadzwonię tylko do żony, że spóźnię się na kolację. Trzymaj kciuki.
Adam: Jasne. 10 minut przerwy
Po kilkunatu momentach wraca Przemek. Lekko spocony, widać, że nie było łatwo z żoną.
Przemek: Ufff, mam godzinkę.
Adam: Mało czasu. Skoncentrujmy się dziś na najławiejszym przypadku. To będzie chyba w naszym przypadku ostatnia alternatywa. Klient rezygnuje z zakupu po poznaniu ceny.
Przemek: Ale wiesz, że klient może także zrezygnować także wtedy, gdy zobaczy płytę?
Adam: Jezu! Nie mówiłeś o tym. Ale sam powinienem o to zapytać. Przewidzieć to. Kurcze, wrócimy do tego jutro. I tak nie zacznę dziś programować. To jest zaleta Domain Storytellig, rozmawiamy i razem brniemy przez temat. Razem rozkminiamy zdarzenia. To jest bardzo ważne. Wspomniałem już o tym, że z tego gędzie mogło skorzystać mnóstwo ludzi.
Premek: Matko, dajesz. Jestem zmęczony. Żona zrzędzi. Ile jeszcze? Ile jeszcze tych numerków?
Adam: Na dziś zaraz kończymy. Sam widzisz, że nie jest to takie proste jak się wydaje. Numerków na pewno będzie więcej. Ale czym więcej czasu spędzimy teraz na projekcie, tym mniej będzie nieporozumień. I zaistnieje też szansa, że dostaniesz ode mnie to, czego chcesz. Wiesz, mi zależy na Twoim sukcesie. Ten soft ma być dla Ciebie, nie dla mnie.
Przemek: Dobra. Dawaj.
Adam: OK, to na dziś mamy jeszcze scenariusz gdy klient rezygnuje z zakupu po poznaniu ceny. Resztę ogarniemy później.
Przemek: Jedziesz!
Adam: Dobra, to co się dzieje, jeżeli klient zrezygnuje z zakupu po poznaniu ceny?
Przemek: W sumie to nic. Odkładam zeszyt z listą płyt. A klient odchodzi. Tyle. Czasem sobie pogadamy o czymś nieistotnym.
…
Co dalej?
To tylko wstęp do Domain Storytelling. Nie ma tu na przykład nic o formie warsztatów.
Chciałem Was jednak zainteresować tematem. Zbyt wiele razy widziałem nie do końca udane projekty, bo ktoś się z kimś nie dogadał. Klient chce jedno, sales sprzeda drugie, a architekt i programiści wyprodukują jeszcze coś innego. Tak niestety czasami wygląda nasze życie, jeżeli nie rozmawiamy w tym samym języku.
Zainteresowanym polecam te zasoby. Warto.