Studium przypadku

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.

Have a nice dayHave a nice day12 min czytania
Modernizacja 12-letniego systemu magazynowego bez zatrzymywania ciężarówek

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ę.
to, czego właściciel z początku nie potrafił powiedzieć na głos

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.
Róg biura magazynowego ze starym beżowym komputerem stacjonarnym z przestarzałym oprogramowaniem, otoczonym odręcznymi karteczkami, wydrukowanym segregatorem obejść i kubkiem kawy, ciepłe dokumentalne światło
Prawdziwy system nie był na ekranie — był w karteczkach, w segregatorze i w pamięci jednej osoby.

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ć.

  1. 1
    Zmapuj, co system naprawdę robi
    Trzy 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.
  2. 2
    Wyczyść dane, zanim je przeniesiesz
    Przeprowadziliś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.
  3. 3
    Najpierw wymień najbardziej bolesny element
    Zbudowaliś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.
  4. 4
    Podłą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.
  5. 5
    Odł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.
Czysta ilustracja w stylu diagramu pokazująca nową nowoczesną warstwę oprogramowania rosnącą wokół starej legacy-skrzynki i stopniowo ją zastępującą, ze strzałkami pokazującymi przekierowywanie pracy element po elemencie, redakcyjny płaski styl
Otocz, przekieruj, zmniejszaj: stary system działał jako siatka bezpieczeństwa, aż prawie nic prawdziwego od niego nie zależało.

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.
jak wdrożenie naprawdę zdobyło poparcie

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.

MiaraPrzedPoEfekt
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 osobaMniej więcej tydzień pracy odzyskany miesięcznie
Zamówienia online przepisywane ręcznieKażdeZeroKanał zasila teraz stany bezpośrednio
Czas wdrożenia nowego pracownikaKilka tygodniKilka dniWiedza plemienna jest teraz w oprogramowaniu
Jedna krucha maszyna administracyjnaTakNieDziała wszędzie, porządnie zabezpieczona kopiami
Zaokrąglone, poglądowe liczby z jednej modernizacji magazynu w ciągu dwunastu miesięcy.

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.

Jasny nowoczesny magazyn, gdzie pracownicy używają ręcznych skanerów i tabletów, z ekranem na ścianie pokazującym czytelne pulpity zapasów na żywo, spokojny i uporządkowany, ciepłe naturalne światło
Rok później: ten sam magazyn, ten sam zespół, ale wiedza żyje teraz w systemie, a nie w pamięci jednej osoby.

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 magazynowe

Częste pytania

Czy naprawdę da się wymienić system magazynowy bez przestojów?
Tak — to cały powód podejścia element po elemencie zamiast nocnego przełączenia. Stary system działa jako siatka bezpieczeństwa, podczas gdy każda nowa funkcja jest budowana, testowana równolegle i zyskuje zaufanie dopiero, gdy zgadza się z rzeczywistością. Aż do samego końca nie ma momentu, w którym magazyn nie mógłby wrócić do starego sposobu. Zrobione tak, hala ledwie zauważa migrację.
Czemu po prostu nie kupić gotowego systemu zarządzania magazynem?
Czasem to właściwa odpowiedź i powiemy o tym, jeśli tak jest. Ale gotowe platformy zakładają, że Państwa procesy pasują do ich założeń. Firma z dekadą specyficznych, nieudokumentowanych obejść często stwierdza, że standardowy produkt pasuje w 80% i walczy z nią na pozostałych 20% — dokładnie w tej części, która się liczy. Tę decyzję warto podjąć świadomie, a nie domyślnie.
Ile trwa taki projekt?
Dla dystrybutora z jednym magazynem tej wielkości należy liczyć w miesiącach, a nie tygodniach — ten konkretny trwał z grubsza rok od początku do końca, celowo bez pośpiechu. Metoda element po elemencie wymienia szybkość na bezpieczeństwo: na papierze wolniejsza niż wielki wybuch, ale nie niesie ryzyka zamrożonej firmy czekającej na zamiennik, który nigdy do końca nie powstaje.
Jaki jest najważniejszy pierwszy krok?
Uczciwe udokumentowanie tego, co obecny system naprawdę robi — w tym każdego arkusza i obejścia, które wokół niego wyrosły — a następnie wyczyszczenie danych. Oba dzieją się, zanim zbuduje się jakiekolwiek nowe oprogramowanie. Przeskok wprost do nowej technologii to sposób, w jaki projekty modernizacyjne dziedziczą wszystkie stare problemy i są za nie obwiniane.
Co dzieje się z wiedzą tkwiącą w głowie jednego kluczowego pracownika?
Jej uchwycenie to jeden z głównych celów, a nie efekt uboczny. Towarzysząc tej osobie i kodując jej nieudokumentowane zasady w nowym systemie, firma przestaje zależeć od jakiejkolwiek pojedynczej osoby w utrzymaniu magazynu. W tym przypadku kluczowy pracownik przeszedł na emeryturę w trakcie projektu, a działalność toczyła się bez zakłóceń — co jest dokładnie tym wynikiem, dla którego modernizacja powstała.
Have a nice day
Have a nice day
Redakcja

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.

Pasujące usługi