Kiedy przepływ staje się za duży

Splątany łańcuch lampek

Przepływ rośnie stopniowo, o jeden warunek na raz. Moment, w którym przestał być zrozumiały, mija niezauważony.

Objawy

  • nikt nie potrafi wyjaśnić działania bez otwierania schematu,
  • drobna zmiana zajmuje nieproporcjonalnie dużo czasu,
  • poprawka w jednym miejscu psuje inne,
  • przepływ obsługuje kilka różnych spraw,
  • schemat nie mieści się na jednym ekranie.

Wystarczy jeden z tych objawów, żeby zająć się sprawą. Zwykle występują razem i nasilają się przy każdej kolejnej zmianie.

Skąd się to bierze

Rzadko z błędu projektowego. Częściej z tego, że proces się rozrastał: doszedł nowy typ dokumentu, wyjątek dla jednego kontrahenta, dodatkowe powiadomienie. Każda zmiana z osobna była drobna i uzasadniona, a suma przestała się składać w całość.

Podział

Rozbicie na kilka mniejszych przepływów wywoływanych kolejno. Pierwsza rzecz do spróbowania. Naturalna granica podziału biegnie tam, gdzie kończy się jedna sprawa: osobno przyjmowanie zdarzenia, osobno przetwarzanie, osobno powiadomienia. Każdy fragment da się wtedy sprawdzić i wyłączyć niezależnie.

Podział ma koszt: między przepływami trzeba przekazać dane, a to wymaga uzgodnienia, co dokładnie wędruje dalej. Zwykle opłaca się mimo to, bo w zamian znika konieczność rozumienia całości naraz.

Kiedy dzielić nie wystarczy

Jeśli po podziale każdy fragment nadal jest zawiły, problem leży w regułach procesu, a nie w schemacie. Wtedy porządkowanie zaczyna się od strony organizacyjnej: od rozstrzygnięcia wyjątków, które narastały bez decyzji.

Przeniesienie logiki

Skomplikowane wyliczenia lepiej wykonać po stronie systemu i zwrócić gotowy wynik. Przepływ zostaje wtedy prosty: pobierz, przekaż, zapisz. Ta droga jest szczególnie sensowna, gdy reguły dotyczą danych, które i tak są w jednym systemie — wtedy przenoszenie ich do platformy tylko po to, by je porównać, jest pracą bez wartości.

Przepisanie w kodzie

Uzasadnione, gdy złożoność jest nieusuwalna. Kod bywa czytelniejszy niż rozbudowany schemat, w którym rozgałęzienia biegną przez kilka ekranów. Decyzja nie musi obejmować całości — zwykle wystarczy przenieść jeden najbardziej obciążony fragment. Kryteria opisuje tekst o tym, kiedy platforma, a kiedy własny kod.

Koszt

Duży przepływ to też duży rachunek za operacje, bo każdy krok nalicza się przy każdym uruchomieniu. Podział zwykle go obniża, zwłaszcza gdy pozwala odsiać nieistotne zdarzenia na wejściu, zanim uruchomią całą resztę. Sposób liczenia opisuje tekst o rozliczeniu za operacje.

Kiedy działać

Przy pierwszej zmianie, która zajęła nieproporcjonalnie dużo czasu. Później jest tylko gorzej, bo każdy dodany warunek utrudnia rozplątanie całości. Przebudowę łatwiej też przeprowadzić, dopóki autor przepływu jeszcze pamięta, dlaczego zbudował go w ten sposób.

Jak nie zacząć od nowa

Przebudowa nie polega na skasowaniu i napisaniu wszystkiego jeszcze raz. Stary przepływ zostaje włączony, nowy powstaje obok i przejmuje ruch stopniowo — najpierw jedną kategorię spraw, potem resztę. Zasady takiego postępowania opisuje tekst o tym, jak budować przepływy.