Tworzenie oprogramowania nie polega jedynie na pisaniu kodu. W rzeczywistości to przede wszystkim rozumienie problemów, z którymi borykają się użytkownicy, i projektowanie odpowiednich rozwiązań. Jednak w miarę wzrostu skomplikowania projektu, zespoły mogą doświadczać przeładowania kognitywnego, co sprawia, że trudniej jest zrozumieć i odpowiednio zareagować na potrzeby.
Czym jest przeładowanie kognitywne?
Przeładowanie kognitywne to stan, w którym ilość informacji przekracza naszą zdolność do przetwarzania i podejmowania decyzji. W kontekście tworzenia oprogramowania może się to objawiać trudnościami w zrozumieniu wymagań, zapominaniu o pewnych aspektach projektu lub nawet paraliżem decyzyjnym.
Zatłoczona autostrada
Wyobraź sobie autostradę, po której poruszają się samochody (informacje). Kiedy ruch jest płynny, samochody (myśli) mogą się poruszać bez przeszkód i docierać do celu. Ale gdy zbyt wiele samochodów wchodzi na autostradę jednocześnie, tworzy się korek. Prędkość ruchu spada, samochody poruszają się powoli, a niektóre z nich mogą nawet zatrzymać się całkowicie. Podobnie, gdy nasz umysł jest zbyt obciążony informacjami, przetwarzanie myśli i informacji może zostać spowolnione lub nawet zablokowane.
Jakie są jego skutki?
Przeładowanie kognitywne może prowadzić do błędów w kodzie, nieoptymalnych rozwiązań i frustracji wśród członków zespołu. Dodatkowo zespoły mogą tracić motywację i poczucie kierunku, gdy czują, że nie są w stanie zrozumieć pełnego zakresu problemu.
Dwie techniki, które świetnie sprawdzają się w walce z przeładowaniem kognitywnym, to Event Storming i Specyfikacja na Przykładach.
Czym jest Event Storming?
Event Storming to technika modelowania, która pozwala zespołom na eksplorację i modelowanie skomplikowanych procesów biznesowych za pomocą „burzy mózgów”. Uczestnicy, przy użyciu kolorowych kartek, wizualizują zdarzenia, komendy, agregaty i inne elementy systemu. To narzędzie, które skupia się na komunikacji, współpracy i głębokim zrozumieniu domeny biznesowej.
Jak Event Storming może pomóc zespołowi?
1. Wizualizacja problemu – często złożone problemy stają się bardziej zrozumiałe, gdy mamy je przed oczami. Event Storming pozwala na wizualizację skomplikowanych procesów i relacji.
2. Komunikacja i współpraca – zamiast polegania na dokumentacji, której często brakuje kontekstu, zespoły mogą wspólnie eksplorować i dyskutować o problemach, co prowadzi do głębszego zrozumienia.
3. Uproszczenie złożonych procesów – dzięki segmentacji procesu na mniejsze części, łatwiej jest zrozumieć poszczególne elementy i ich relacje.
4. Identyfikacja błędów i luk – w trakcie sesji Event Storming, zespoły mogą szybko identyfikować potencjalne błędy w procesie czy niejasności w wymaganiach.
5. Wydzielenie kontekstów – podzielenie problemu na mniejsze konteksty umożliwi w późniejszym czasie odpowiednie zmodularyzowanie naszego systemy oraz łatwiejszy rozwój.
Jak Event Storming pomaga w redukcji przeładowania kognitywnego?
Event Storming pomaga w redukcji przeładowania kognitywnego poprzez:
– Zmniejszenie niepewności – wiedza jest uporządkowana i klarowna, co zmniejsza ilość informacji do przetworzenia na raz.
– Poprawa koncentracji – zamiast rozpraszania uwagi na wiele aspektów problemu, programiści mogą skupić się na jednym konkretnym fragmencie.
– Wspieranie zdolności analitycznych – ułatwia analizę i refleksję nad problemem, zamiast zapychania umysłu niezwiązanymi informacjami.
Czym jest Specyfikacja na Przykładach?
Specyfikacja na przykładach to technika definiowania wymagań i testowania oprogramowania, w której specyfikacje (wymagania) są tworzone na podstawie rzeczywistych przykładów. Te przykłady stają się jednocześnie testami akceptacyjnymi, które weryfikują poprawność działania systemu.
Wymaganie: Użytkownik może dokonać wpłaty na swoje konto bankowe. Przykład 1: Użytkownik dokonuje wpłaty w wysokości 500 zł na swoje konto. Saldo konta zwiększa się o 500 zł. Przykład 2: Użytkownik próbuje dokonać wpłaty w wysokości -100 zł. System wyświetla komunikat o błędzie, informując, że wpłata musi być wartością dodatnią.
Funkcja: Logowanie do systemu W celu uzyskania dostępu do mojego konta Jako użytkownik Chcę się zalogować używając adresu e-mail i hasła Scenariusz: Pomyślne logowanie Zakładając, że jestem na stronie logowania Gdy wpisuję e-mail "jan.kowalski@example.com" I wpisuję hasło "Haslo123" I klikam przycisk "Zaloguj się" Wtedy zostaję przeniesiony na stronę główną I widzę powitanie "Witaj, Jan Kowalski!" Scenariusz: Nieudane logowanie z błędnym hasłem Zakładając, że jestem na stronie logowania Gdy wpisuję e-mail "jan.kowalski@example.com" I wpisuję hasło "Haslo124" I klikam przycisk "Zaloguj się" Wtedy widzę komunikat "Błędny e-mail lub hasło"
Jak Specyfikacja na Przykładach pomaga w redukcji przeładowania kognitywnego?
1. Jasność i precyzja – zamiast abstrakcyjnych opisów, mamy konkretne scenariusze. Pomaga to w eliminacji niejasności.
2. Automatyzacja testów – przykłady mogą być automatycznie testowane, co daje pewność co do poprawności implementacji i zmniejsza obawę o błędy.
3. Współpraca zespołu – wszyscy członkowie zespołu (programiści, testerzy, analitycy biznesowi) mają wspólny język – są to konkretne scenariusze, które każdy rozumie.
4. Skupienie na wartości biznesowej – dzięki konkretom zamiast abstrakcji, łatwiej skupić się na tym, co naprawdę jest ważne dla biznesu.
Połączenie Event Storming z Specyfikacją na Przykładach tworzy potężny duet w walce z przeładowaniem kognitywnym. Pierwsza technika pomaga w wizualizacji i zrozumieniu złożonych problemów, druga dodaje warstwę precyzji i pewności. Razem pomagają zespołowi skupić się na tym, co naprawdę ważne, zamiast gubić się w morzu niejasnych wymagań i złożonych relacji.
Dodatkowe materiały:
– https://piszeo.it/2018/behavior-driven-development-bdd-jak-pisac-wymagania-zrozumiale-dla-interesariuszy-i-zespolu-deweloperskiego/
– https://devstyle.pl/2020/10/12/najobszerniejsze-wprowadzenie-do-event-stormingu-z-przykladem/
– https://radekmaziarka.pl/category/event-storming/
– https://helion.pl/ksiazki/specyfikacja-na-przykladach-poznaj-zwinne-metody-pracy-i-dostarczaj-wlasciwe-oprogramowanie-gojko-adzic,speprz.htm#format/e
– https://helion.pl/ksiazki/bdd-w-dzialaniu-sterowanie-zachowaniem-w-rozwoju-aplikacji-john-ferguson-smart,bdddzi.htm#format/e