Model Produktywności

Opublikowano: May 16, 2021 przez Mariusz Borycki

Photo by Jess Bailey on Unsplash

 

Moim pierwszym projektem w Pythonie był Model Produktywności, który stworzyłem dla firmy, w której pracowałem w tamtym czasie. Naszym głównym zadaniem jako działu produktywności było wskazanie jakie jest zapotrzebowanie w godzinach na pokrycie wszystkich operacji sklepowych w podziale na odpowiednie stoiska i obszary. Narzędzie które stworzyłem było wydajne i bardzo dokładne.

 

Zacznijmy od początku:

Modele produktywności były i nadal są tworzone głównie w oparciu o Microsoft Excel. Oczywiście, każdy właściciel modelu ma możliwość korzystania z innych technologii, ale Excel jest najbardziej powszechny.

Ja byłem odpowiedzialny za większość działów handlowych takich jak:

  • Sucha Żywność
  • Świeża Żywność (paczka, wyłączając lady i piekarnię)
  • Warzywa i Owoce
  • Dział Przemysłowy

 

Mariusz Borycki - Replenishment Departments

Lista obszarów, za które byłem odpowiedzialny

Warto nadmienić, że liczyliśmy zapotrzebowanie na godziny do budżetów dla prawie 1000 sklepów w 4 krajach (Czechy, Słowacja, Węgry i Polska). Przejmując wyżej wymienione obszary miałem 4 oddzielne pliki Excel wielkości ok 40MB. Natomiast każdy z nich miał wiele cech wspólnych.

 

Skąd pomysł na zmianę:

Budżetowanie to była tylko część naszych obowiązków i występowała maksymalnie 4 razy w roku. Pozostałe nasze obowiązki związane z modelami to:

  • pomiary na sklepach
  • analiza danych zmierzonych i zaobserwowanych
  • porównanie wyników po pomiarach z wynikami pochodzącymi z modeli
  • kontakt ze sklepami oraz osobami odpowiedzialnymi za procesy na sklepach
  • kalkulacja zysków i strat dla wielu pomysłów i projektów, które były w planach
  • aktualizacja modeli

 

Mariusz Borycki - Productivity Dept Objectives

Główne cele w Dziale Produktywności

Z czasem zauważałem, że analizy, aktualizacje modelów oraz większość kalkulacji różnych procesów trwały zdecydowanie zbyt długo. Poza tym wykonywałem za każdym razem podobne czynności, które nie koniecznie były czymś fascynującym - szczególnie jak się to robiło setny raz.

W związku z tym doszedłem do wniosku, że muszę coś z tym zrobić…

 

Moim pierwszym celem, który przed samym sobą postawiłem, było połączenie czterech modeli w jeden, co zaoszczędziło by zarówno sporo miejsca na dysku, ale co najważniejsze - również czasu. Z założenia nie musiałbym liczyć wszystkiego 4 razy, ponieważ wszystkie obszary byłyby w jednym pliku. Ot, cała filozofia.

Krótko cieszyłem się z nowego modelu towarowania, bo zauważyłem, że nie jest tak szybki, jak powinien wedug mnie być. Dużo pamięci zabierały zakładki zawierające wyliczenia (formuły), co sprawiało, że model był zbyt wolny. W związku z tym doszedłem do wniosku, że lepiej to wszystko już mieć przeliczone gdzieś poza Excelem. I tak trafiłem na Microsoft Access, który z założenia miał zawierać całą bazę z przeliczonymi wartościami w SQL i łączyć się z zakładką w modelu, w której miały być już tylko wartości.

Działało to bardzo dobrze, do czasu…

 

Nowe technologie:

W naszej firmie pojawił się Hadoop. Oczywiście słyszałem o tym narzędziu wcześniej i jak tylko dowiedziałem się, że będziemy mogli używać tego systemu, od razu się zgłosiłem do wzięcia udziału w szkoleniu.

Okazało się, że w jednym miejscu będą znajdować się wszystkie dane dotyczące sprzedaży, zapasu, ruchu na kasach i wiele więcej, a to wszystko dla pojedynczego produktu na każdym sklepie w całej sieci. Mówiąc wprost, mogłem zdobyć wszystko czego potrzebowałem w kilka sekund bez wychodzenia z biura. Żeby zobrazować czym dla mnie była ta zmiana, posłużę się krótkim przykładem.

Wyobraźcie sobie, że chcecie dowiedzieć się jaki jest stosunek ilości produktów na paletach do produktów na półkach w wybranym obszarze. Musiałem pojechać na wybrany sklep (im więcej sklepów tym lepsza średnia) i policzyć ilości oraz podzielić je przez siebie. Następnie używałem danego udziału procentowego dla wszystkich sklepów.

W Hadoop miałem to wszystko i wiele więcej na wyciągnięcie ręki. Oczywiście, zawsze jest dobrze co jakiś czas weryfikować dane jadąc na wybrany sklep i porównać je z rzeczywistością. W każdym razie, był to ogromny skok technologicznym, z którego mogłem i oczywiście chciałem skorzystać.

 

Na mój kontakt z językiem programowania Python wpłynęły dwie kwestie:

  • Access nie był dobrym narzędziem do przeliczeń na dużych danych. Nie zagłębiając się, chodziło głównie o to, że po przekroczeniu 2GB pamięci wstrzymywał swoje działanie. Poza tym jaki jest sens przenosić dane z jednej bazy w Hadoop do kolejnej lokalnie w Access.
  • drugą kwestią był film, na który natknąłem się na YouTube "WHY are you STILL using EXCEL? Is it time to up your game and move to PYTHON", w którym Giles McMullen-Klein zapytał czemu nadal używamz Excela, jeśli można użyć Pythona? W taki sposób, po krótkim zastanowieniu, nie znając narzędzia, poprosiłem swoją przełożoną o zgodę na stworzenie modelu właśnie w języku Python. Wierzyłem, że narzędzie zbudowane w tym języku programowania umożliwi mi korzystanie z danych po produkcie dla każdego sklepu zamiast używania średnich dla formatu. Warto dodać, że zawsze chciałem:
    • nauczyć się czegoś nowego
    • mieć szybkie narzędzie, które paradoksalnie okazało się łatwiejsze do zrozumienia
    • posiadać znacznie dokładniejsze dane spersonalizowane dla każdego sklepu w całej sieci w Centralnej Europie.

 

Zgodę otrzymałem bez problemu z tym, że oczywiście musiałem nadal utrzymywać pierwotny model w Microsoft Excel.

Nowy Model dla działów handlowych budowałem około roku. Może to długo, ale tworzyłem i uczyłem się w tym samym czasie.

Aby zobrazować na czym mniej więcej polegała zmiana, przygotowałem dwa schematy. Pierwszy schemat przedstawia logikę działania modelu podstawowego w Excelu, z którego korzystałem przed zmianą. Większośc danych w tym modelu była zbierana podczas moich wizyt na sklepach.

 

Mariusz Borycki - Excel Replenishment Model Scheme

Schemat pierwszego Modelu Produktywności

Poniższy schemat z kolei przedstawia jak wygląda model aktualnie:

 

Mariusz Borycki - Python Replenishment Model Scheme

Schemat Modelu Produktywności zbudowanego w Python

Jak widać, duża część danych jest wyciągana obecnie z systemu i są to dane bardzo detaliczne. Nadal są obszary, których z oczywistych względów nie można wyciągnąć z systemu np.:

  • profile poszczególnych sklepów. Mianowicie, czy jakiś obszar posiada specjalne meble na banany lub czy trzymamy produkty na tzw. Capping Shevles (jest to rodzaj magazynowania towarów na najwyższych półkach, bez oznaczenia cenowego, po to by skrócić maksymalnie czas na zatowarowanie szybko-rotujących produktów niwelując konieczność chodzenia między magazynem, a powierzchnią sprzedaży)
  • czas potrzebny do wykonywania czynności (MOST). Nazwa to skrót od Maynard Operation Sequence Technique. Jest to metoda pomagająca określić czas niezbędny do wykonywania określonych czynności. MOST również potrafi wskazać, gdzie można ulepszyć metodę. Zapewnia możliwe do prześledzenia kalkulacje czasu niezbędnego do wykonania wybranych czynności. Dzięki tej metodzie można wskazać również możliwości zaoszczędzenia czasu, pieniędzy i wysiłku ludzkiego. Więcej informacji znajdziesz w poniższych odnośnikach:

 

Zalety użycia języka Python:

Aby zrozumieć jakie Python daje możliwości i jak wpłynął na działanie modelu produktywności, posłużę się porównaniem między dwoma narzędziami, jakimi są właśnie Python oraz Excel.

Główną zaletą programu Excel jest jego prostota i łatwość uruchamiania. Najlepiej przy wykonywaniu małych i jednorazowych analiz lub szybkim tworzeniu podstawowych wizualizacji. Dzięki graficznemu interfejsowi użytkownika Excel jest łatwy w użyciu bez zbytniego doświadczenia.

Python z kolei jest trudniejszy do nauczenia, z uwagi na wyższy próg wejścia. Do prawidłowego działania należy pobrać i ustawić odpowiednie środowisko programistyczne na swoim komputerze. Jednakże gdy przez ten proces przejdziemy, to Python zapewnia wielką przewagę podczas pracy z dużymi zbiorami danych i tworzenia powtarzalnych, zautomatyzowanych analiz i dogłębnych wizualizacji. Jest narzędziem znacznie szybszym, skrypty są zdecydowanie lżejsze od odpowiedników stworzonych w Excel. Dzięki czemu możemy cały model (wszystkie funkcje, kalkulacje i analizy) trzymać w jednym małym pliku, który po wrzuceniu do repozytorium w GitHub daje nam wiele dodatkowych możliwości, takich jak backup danych czy pełną historię zmian w modelu, a także eliminuje temat redundancji plików.

 

Mariusz Borycki - Python Model Benefits

Korzyści używania Modelu zbudowanego w języku Python

 

Podsumowanie:

Praca w Dziale Produktywności dała mi mnóstwo możliwi, z których chętnie korzystałem. Mogłem się rozwijać i próbować nowych rozwiązań wdrażając je w życie, mimo iż nikt inny w dziale z nich nie korzystał. Uważam, że była to odważna decyzja moich przełożonych, która opłaciła się dwum stronom. Ja poznałem nowe narzędzia i znalazłem nowe hobby, a mój były dział otrzymał narzędzie, które daje mnóstwo możliości rozwoju.

 

Wszystkie skrypty, wraz z ich opisem znajdują się w moim repozytorium na platformie GitHub, na którą serdecznie zapraszam.

Comments:

1 comment

anconda - Aug. 23, 2021, 6:42 p.m.

perfecto

Add new comment: