Modernizacja 12-letniego systemu magazynowego bez zatrzymywania ciężarówek
Dystrybutor prowadził cały magazyn na oprogramowaniu starszym niż część jego pracowników. Oto jak wymienialiśmy je element po elemencie — bez wielkiego przełączenia, bez utraconych dostaw — i co zrobilibyśmy tak samo ponownie.

Najgroźniejsze oprogramowanie w małej firmie to to, które działa. Nie wadliwe narzędzie, na które wszyscy narzekają — ono w końcu zostanie wymienione. Groźny jest dwunastoletni system, którego nikt nie lubi, ale od którego wszyscy zależą — ten, który uruchamia się z beżowej wieży w kącie i prowadzi magazyn jeszcze zanim zatrudniono połowę zespołu. Działa. Aż do dnia, gdy prawie przestaje działać, a wszyscy naraz uświadamiają sobie, że na nim balansuje cała firma.
To historia jednego z takich systemów i tego, jak go wymieniliśmy. Klient to regionalny dystrybutor — kilka tysięcy linii produktowych, jeden magazyn, około trzydziestu osób na hali i w biurze. Zanonimizowaliśmy go i zaokrągliliśmy liczby, ale przebieg projektu jest dokładnie taki, jaki był. Jeśli siedzą Państwo na starzejącym się systemie, którego boją się Państwo dotknąć, tak mniej więcej wygląda rozsądna modernizacja od środka.
W tej historii nie ma heroicznego przepisania od nowa, nie ma weekendu, w którym przełączyliśmy przełącznik i wszystko było nowe. Cały sens — to, co sprawiło, że się udało — polega na tym, że nie wydarzyło się nic dramatycznego. Ciężarówki wciąż się ładowały. Magazyn ledwie zauważył, że grunt usuwa mu się spod nóg. To jest cel pracy ze starymi systemami i warto zrozumieć dlaczego.
Sytuacja: system trzymający się na pamięci jednej osoby
Magazyn działał na dedykowanym systemie zbudowanym około 2013 roku przez programistę, który dawno odszedł. Robił to, co najważniejsze — śledził stany, drukował listy kompletacyjne, wysyłał zamówienia — i w normalny dzień robił to dobrze. Problemem nie było tak naprawdę oprogramowanie. Problemem było wszystko, co wyrosło wokół niego, by utrzymać je w użyteczności.
Przez ponad dekadę zespół po cichu zbudował z taśmy klejącej system-cień: arkusz na stany, które oprogramowanie liczyło błędnie, drugi arkusz uzgadniający pierwszy z rzeczywistością, grupę na WhatsAppie, w której kierownik magazynu oznaczał pozycje, których system nie potrafił odwzorować, i wydrukowany segregator obejść, których nowi pracownicy musieli uczyć się na pamięć. Nic z tego nie było spisane w jednym miejscu. Żyło to w głowie kierowniczki operacyjnej — spokojnej kobiety po pięćdziesiątce, która pracowała tam czternaście lat i funkcjonalnie była dokumentacją.
Gdy właściciel zadzwonił do nas po raz pierwszy, nie chodziło o awarię. Chodziło o to, że ogłosiła ona chęć przejścia na emeryturę za dwa lata, a on policzył i zdał sobie sprawę, że w dniu jej odejścia spora część tego, jak naprawdę funkcjonuje magazyn, wyjdzie razem z nią za drzwi. To częstszy wyzwalacz modernizacji niż jakakolwiek awaria techniczna: nie awaria systemu, lecz świadomość, że ludzie łatający go nie będą tu wiecznie.
“Ryzykiem nie był stary system. Ryzykiem było to, że wiedza utrzymująca go przy życiu tkwiła w jednej osobie, która chciała przejść na emeryturę.”
Objawy, których wszyscy przestali zauważać
Gdy spędziliśmy pierwsze dwa dni, tylko obserwując pracę magazynu, koszty starego systemu były wszędzie — ale stały się tak normalne, że nikt już nie zgłaszał ich jako problemów. Stanom magazynowym ufano, że są błędne o przewidywalny margines, więc każde duże zamówienie przechodziło ręczną kontrolę fizyczną „na wszelki wypadek”. Nowi pracownicy potrzebowali tygodni, by stać się przydatni, bo tak duża część pracy była niespisaną wiedzą plemienną. A system działał na systemie operacyjnym tak starym, że nie dało się go już łatać, w sieci, o której właściciel po cichu wiedział, że to incydent bezpieczeństwa czekający na swój moment.
- Dokładność zapasów oscylowała wokół 80%, więc pracownicy ręcznie sprawdzali stany wszystkiego, co istotne — codziennie godzinami, po cichu.
- Logika listy kompletacyjnej nie radziła sobie z obecnym układem magazynu, więc kompletujący chodzili trasą wskazaną przez segregator, a nie przez ekran.
- Comiesięczne uzgadnianie stanów zajmowało dwóm osobom większą część trzech dni.
- Tylko jedna maszyna mogła obsłużyć część administracyjną oprogramowania, a gdyby padła, nikt nie miał jasnego planu.
- Nic nie łączyło się z kanałem zamówień online dodanym przez firmę w 2019 roku — te zamówienia przepisywano ręcznie.

Czego celowo nie zrobiliśmy
Oczywisty ruch — taki, jaki zaproponowałoby wielu dostawców — to kupić duży gotowy system zarządzania magazynem, przenieść wszystko w jeden weekend i w poniedziałek rano wyłączyć stary system. Widzieliśmy, jak to podejście kończy się źle wystarczająco często, by nie proponować go takiej firmie. Przełączenie „wielkim wybuchem” zakłada, że rozumie się stary system całkowicie. Przy dekadzie nieudokumentowanych obejść nikt go nie rozumiał — nawet ludzie, którzy go obsługiwali.
Drugi kuszący ruch to pełne przepisanie od zera na zamówienie: weź wszystko, co robi stary system, zbuduj to czysto na nowo, wdróż nowy. Brzmi odpowiedzialnie i to klasyczny sposób, by spalić rok i duży budżet, podczas gdy firma czeka zamrożona na zamiennik, który wciąż się przesuwa. Kłopot w tym, że przepisanie musi odtworzyć każdą osobliwość, zanim wystartuje — w tym te osobliwości, o których nikt nie pamięta, że są nośne, dopóki ich nie zabraknie.
Więc nie zrobiliśmy żadnego z nich. Potraktowaliśmy stary system nie jako coś do wyburzenia, lecz jako coś do otoczenia i powolnej wymiany — jedna funkcja naraz, ze starym systemem działającym pod spodem jako siatka bezpieczeństwa przez całą drogę. Bez blasku. I jedyna wersja tego, która niezawodnie działa.
Podejście: zdław stary system, nie wysadzaj go
Wśród programistów ten wzorzec ma utartą nazwę — podejście „dławiciela” (strangler), od pnącza, które rośnie wokół drzewa, aż może stać samodzielnie, a oryginał po cichu znika. Starego systemu nie wymienia się jednym ruchem. Buduje się wokół niego nowe elementy, kieruje do nich prawdziwą pracę jedną po drugiej i pozwala staremu systemowi kurczyć się, aż to, co zostaje, jest na tyle małe, by je wyłączyć, gdy nikt nie wstrzymuje oddechu.
Dla tego magazynu oznaczało to uzgodnienie z góry kolejności: którą funkcję odłupiemy najpierw, którą zostawimy na koniec i — co kluczowe — zasadę, że na każdym etapie, jeśli nowy element się zacinał, mogliśmy tego samego dnia wrócić do starego sposobu. Żaden krok nie mógł być punktem bez powrotu aż do samego końca. Właśnie ta zasada pozwoliła właścicielowi spać, a pracownikom magazynu zaufać projektowi, zamiast się przeciw niemu spinać.
- 1Zmapuj, co system naprawdę robiTrzy tygodnie towarzyszenia pracy na hali i w biurze, by udokumentować rzeczywisty przepływ pracy — w tym każde obejście z arkusza i segregatora. Spisaliśmy system, który istniał, a nie ten, który opisywała pierwotna specyfikacja.
- 2Wyczyść dane, zanim je przeniesieszPrzeprowadziliśmy pełną fizyczną inwentaryzację i wyczyściliśmy względem niej bazę produktów. Migracja brudnych danych do nowego systemu daje tylko szybszą błędną odpowiedź — więc to nastąpiło, zanim jakiekolwiek nowe oprogramowanie dotknęło danych.
- 3Najpierw wymień najbardziej bolesny elementZbudowaliśmy nowy moduł śledzenia i liczenia stanów, uruchomiliśmy go równolegle ze starym i zaufaliśmy mu dopiero, gdy liczby zgadzały się z rzeczywistością przez cały miesiąc.
- 4Podłącz kanały, które stary system ignorowałNastępnie podpięliśmy kanał zamówień online bezpośrednio do nowych danych o stanach, kończąc ręczne przepisywanie, które po cichu istniało od 2019 roku.
- 5Odłup resztę, potem wycofaj stary rdzeńKompletacja, raportowanie i uzgadnianie przeszły jedno po drugim. Gdy na starym systemie nie działało już prawie nic prawdziwego, w końcu go wyłączyliśmy — co było już wtedy niewydarzeniem.

Części, które były naprawdę trudne
Nieuczciwe byłoby przedstawianie tego jako gładkiego. Praca techniczna była łatwą częścią. Trudne części były ludzkie i proceduralne — i to te same trudne części niemal w każdym projekcie ze starym systemem.
Nieudokumentowana zasada, która zepsuła funkcję
Dwa tygodnie po uruchomieniu nowego modułu stanów równolegle, liczby dla jednej kategorii produktów zaczęły się rozjeżdżać i nie widzieliśmy dlaczego. Po dniu grzebania kierowniczka operacyjna wspomniała niemal mimochodem, że pewne towary luzem liczy się na palety, a nie na sztuki, i że stary system miał wbudowane ukryte przeliczenie, którego przez dekadę nikt nie udokumentował. Nie było tego w żadnej specyfikacji. Żyło wyłącznie w jej głowie i w segregatorze. Nigdy nie znaleźlibyśmy tego z samego kodu — tylko uruchamiając oba systemy obok siebie i pytając, dlaczego się różnią. To cały argument za równoległą pracą zawarty w jednej anegdocie.
Zdobycie zaufania hali
Pracownicy magazynu przetrwali niejedno dobrze pomyślane „usprawnienie”, które pogorszyło ich dzień, więc przyjęli projekt z uzasadnioną podejrzliwością. Nie walczyliśmy z tym prezentacją. Wybraliśmy kompletującego, który narzekał najgłośniej, usiedliśmy z nim na jeden poranek i przebudowaliśmy ekran kompletacji wokół tego, jak naprawdę chodzi po hali. Gdy zaczął bronić nowego systemu w pokoju socjalnym, reszta poszła za nim. W projektach ze starymi systemami najtrudniejszy krytyk, raz pozyskany, staje się najlepszym orędownikiem — a tego nie kupi się notatką służbową.
“Nigdy nie dowodziliśmy, że nowy system jest lepszy. Pozwoliliśmy liczbom zgadzać się z rzeczywistością przez miesiąc, a potem pozwoliliśmy najgłośniejszemu sceptykowi powiedzieć to za nas.”
Rezultaty po roku
Jesteśmy ostrożni wobec lśniących liczb „przed i po”, bo każda firma mierzy inaczej i u Państwa będzie inaczej. Traktujcie je więc jako uczciwe, zaokrąglone liczby z jednego projektu, mające pokazać kształt zwrotu, a nie obietnicę. Sednem jest mniej jakikolwiek pojedynczy wskaźnik, a bardziej to, co przestało być straszne.
| Miara | Przed | Po | Efekt |
|---|---|---|---|
| Dokładność zapasów | ~80% | ~98% | Ręczne podwójne sprawdzanie w większości zniknęło |
| Comiesięczne uzgadnianie | ~3 dni, 2 osoby | ~pół dnia, 1 osoba | Mniej więcej tydzień pracy odzyskany miesięcznie |
| Zamówienia online przepisywane ręcznie | Każde | Zero | Kanał zasila teraz stany bezpośrednio |
| Czas wdrożenia nowego pracownika | Kilka tygodni | Kilka dni | Wiedza plemienna jest teraz w oprogramowaniu |
| Jedna krucha maszyna administracyjna | Tak | Nie | Działa wszędzie, porządnie zabezpieczona kopiami |
Liczba, na której właścicielowi zależało najbardziej, nie była na żadnym wykresie. Chodziło o to, że gdy kierowniczka operacyjna faktycznie przeszła na emeryturę — jak się okazało, kilka miesięcy przed planem — magazyn nawet się nie zachwiał. Wiedza, która kiedyś żyła w jej głowie, żyła teraz w systemie, którego można było nauczyć kogokolwiek w kilka dni. Pierwotny powód całego projektu został po cichu, całkowicie rozwiązany.

Jeśli siedzą Państwo na takim systemie
Większość właścicieli ze starzejącym się systemem rdzeniowym czuje dwie rzeczy naraz: ryzykownie go trzymać i przerażająco wymieniać. Oba są prawdą. Błędem jest pozwolić wygrać tej drugiej obawie, bo ryzyko starego systemu nie stoi w miejscu — rośnie po cichu z każdym rokiem, w miarę jak ludzie, którzy go rozumieją, zbliżają się do odejścia, a platforma, na której działa, oddala się od wsparcia.
Nie trzeba wybierać między „zostaw go w spokoju i módl się” a „postaw firmę na wielkim przepisaniu”. Droga środka — otocz go, wymieniaj element po elemencie, trzymaj stary jako siatkę, dopóki nowy nie zasłuży na zaufanie — jest wolniejsza i znacznie mniej heroiczna. Jest też tą wersją, która nie zatrzymuje ciężarówek. Jeśli z całej tej historii warto wynieść jedną rzecz, to właśnie tę.
Mają Państwo stary system, którego boją się dotknąć?
Jeśli Państwa magazyn lub kontrola stanów działa na oprogramowaniu, któremu nie można już w pełni ufać — lub którego nie da się już w pełni zrozumieć — przyjrzyjmy się temu razem. Zmapujemy, co naprawdę robi, i pokażemy najmniej ryzykowną drogę do nowoczesnego zamiennika, element po elemencie.
Zobacz, jak modernizujemy systemy magazynoweCzęste pytania
Czy naprawdę da się wymienić system magazynowy bez przestojów?
Czemu po prostu nie kupić gotowego systemu zarządzania magazynem?
Ile trwa taki projekt?
Jaki jest najważniejszy pierwszy krok?
Co dzieje się z wiedzą tkwiącą w głowie jednego kluczowego pracownika?

Have a nice day to studio programistyczne, które pomaga małym i średnim firmom w cyfryzacji — automatyzacja, sztuczna inteligencja i oprogramowanie na zamówienie, które działa w codziennej pracy, a nie tylko na slajdach.