PiszeO.IT

Przeładowanie kognitywne w tworzeniu oprogramowania. Jak sobie z nim radzić?

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

Miłosz Karolczyk

Nazywam się Miłosz Karolczyk i tworzenie oprogramowania jest moją pasją.

Jestem gorącym zwolennikiem architektury ewolucyjnej, podejścia Domain Driven Design, Event Stormingu oraz modularyzacji. Uwielbiam proste rozwiązania i szczupłe podejście do zarządzania oraz tworzenia produktów.