Metodyka Kanban zawiera wiele ciekawych i bardzo użytecznych elementów. U jej podwalin leży ograniczenie strat, a co za tym idzie – optymalizacja kosztów. Co zostało zakwalifikowane jako strata (ang. waste) i czy elementy te będą podobne również w dzisiejszych czasach?
Marnotrawstwo
Idea eliminacji marnotrawstwa nie jest, jak się okazuje nowa. Jak wiele innych, pochodzi ze słynnego już Toyota Production System. Pracował nad nią niejaki Taiichi Ohno, japoński inżynier, który większą część swojego życia poświęcił na rozwój TPS. W czasie analizy systemu produkcyjnego, opisał on trzy aspekty, które mają wpływ na sposób pracy przedsiębiorstwa: Muda (rozrzutność), Muri (przeciążenia) i Mura (nierówności).
Samo marnotrawstwo (czyli waste) podzielił na dwa zasadnicze typy:
Niezbędne – czynności nie dodające wartości, ale niezbędne do wytworzenia wysokiej jakości produktu. Przykładem tego typu „marnotrawstwa” będą planowanie, testowanie, raportowanie. Czynności te nie są produkcją, nie służą bezpośredniemu wytworzeniu produktu, jednak trudno bez nich wyobrazić sobie proces produkcji. Trochę tak, jak wydarzenia w Scrumie.
Zbędne – nie dodające wartości, niepotrzebne czynności, które mogą być natychmiast usunięte z naszego procesu bez wpływu na produkt końcowy. Doskonałym przykładem takiego marnotrawstwa będzie czekanie. W każdym okresie bezczynności nie wytwarzamy dobra, a jedynie generujemy koszty.
7 waste’ów Lean
Teoria Lean, powstała po II wojnie światowej, oparta została o następujące elementy: elastyczność, wysoką jakość, eliminację marnotrawstwa i ciągłe doskonalenie. W ramach eliminacji marnotrawstwa wyróżnionych zostało 7 głównych obszarów, znanych również jako 7 waste’ów Lean:
Transport – marnotrawstwo tego typu polega na przesunięciu materiałów bez wpływu (dodania wartości) na produkt końcowy. Nadmierne przemieszenie materiałów może być kosztowne dla przedsiębiorstwa i powodować spadek jakości, wiąże się również z koniecznością poniesienia kosztów związanych z czasem, miejscem składowania czy maszynami wykorzystywanymi do transportu.
Magazynowanie – jest często rezultatem robienia zapasów „na wszelki wypadek”. Powoduje, że firmy gromadzą zapasy, spodziewając się bliżej nieokreślonych problemów z dostawami. Zapasy te mają uchronić organizację przed opóźnieniami w produkcji i niską jakością wytwarzanego produktu. „Nieokreślone” ryzyko ma jednak to to do siebie, że rzadko dochodzi do jego materializacji.
Przesunięcia – marnotrawstwo to związane jest z niepotrzebnymi przesunięciami pracowników i maszyn, co powodować może wydłużenie czasu produkcji. Aby ograniczyć wpływ przesunięć na proces należy postępować zgodnie z zasadą, która mówi, że ludzie powinni wykonywać minimalną ilość ruchów niezbędną do ukończenia danej czynności (patrz też: pragmatyzm).
Oczekiwanie – najłatwiejszy do zaobserwowania i zrozumienia przykład marnotrawstwa. Oczekiwanie na wykonanie konkretnej czynności zawsze powoduje straty.
Nadprodukcja jest wszystkim tym, za co nie chce zapłacić nasz klient, bo tego nie zamawiał. Jest też ona wyzwalaczem pozostałych 6 opisanych dziś marnotrawstw. Dzieje się tak dlatego, że w przypadku nadprodukcji musimy wykonać czynności polegające na transporcie, przesunięciu czy magazynowaniu.
Z kolei nadgorliwość jest działaniem podlegającym na wykonywaniu czynności, które nie dostarczają wartości dodanej naszemu produktowi lub dostarczają jej za dużo. Przykładem drugiego podejścia może być dodanie do produktu cech, z których nikt nigdy nie skorzysta, jednak generować one będą dodatkowe koszty (patrz: wodotryski).
Błędy – marnotrawstwo, które powodować może potrzebę dokonania „reworku” lub nawet doprowadzić do całkowitego upadku projektu. Wykrycie błędu wiąże się z koniecznością jego poprawy i ponownego wdrożenia do produkcji, co generuje koszty w postaci na przykład konieczności zatrudnienia dodatkowych ludzi lub inwestycji w sprzęt. W części przypadków, praca skażona błędem jest bezpowrotnie stracona.
Waste w produkcji oprogramowania
Omówione powyżej przykłady marnotrawstw zaobserwowane zostały w fabrykach Toyoty. Analizując każdą z osobna dojdziemy jednak do wniosku, że nie dotyczą one tylko i wyłącznie linii montażowych. Mają one zastosowanie również dziś. Co więcej część z nich znajdziemy wprost w 12 zasadach zwinnego tworzenia oprogramowania.
Na kanwie 7 opisanych powyżej marnotrawstw z TPS powstał spis 7 waste’ów występujących w procesie tworzenia oprogramowania:
Transport – częste przełączanie się pomiędzy zadaniami.
Magazynowanie – wymagania „prawie zrealizowane”, ale niedostarczone.
Przesunięcia – zbędne spotkania, duży nakład czasu niezbędny do znalezienie właściwych informacji.
Oczekiwanie – oczekiwanie na zakończenie testów, code review, wdrożenie na środowisko produkcyjne, itp.
Nadprodukcja – wytwarzanie funkcjonalności, których nikt nie będzie wykorzystywał na środowisku produkcyjnym.
Nadgorliwość – niepotrzebna komplikacja kodu rozwiązującego proste problemy.
Błędy – chyba nie wymagają komentarza.
Powyższy „kodeks” marnotrawstwa jest możliwy do zaobserwowania absolutnie wszędzie, w każdym z naszych projektów, niezależnie od jego wielkości. Aktualność 7 waste’ów jest więc ponadczasowa.
Jak się ma waste do rzeczywistości?
Czasem najprostsze rzeczy są najtrudniejsze do zaobserwowania. Każdy z nas codziennie widzi wiele przykładów waste’ów, które już dawno powinny zostać zniwelowane. I tak też się dzieje, o ile tylko zostaną one zidentyfikowane. Proces „Inspect and Adapt” nie zadziała bez pierwszego kroku.
Moim ulubionym przykładem „z życia” jest McDonald’s. Starsi czytelnicy, jeśli chodzili do restauracji, której logo przypomina arkady, zapewne pamiętają „godziny ważności” poszczególnych produktów. W restauracji dochodziło do nadprodukcji żywności w nadziei, że pojawią się klienci chętni do zakupu. Kiedy minął czas gotowości do spożycia, produkt był utylizowany (wyrzucany do śmieci). Oczywiście, powodowało to dodatkowe koszty.
Po wprowadzeniu mechanizmu kolejkowego zmieniono filozofię działania restauracji. Proces „na wszelki wypadek” zastąpiono procesem „dokładnie na czas”, który nie powoduje nadprodukcji i odpowiada na aktualne potrzeby klientów.
W podobny sposób, w każdym z naszych procesów, możemy pozbyć się marnotrawstwa. Jedyne, co musimy zrobić, to przyjrzeć się uważnie i znaleźć obszary do poprawy. Później pójdzie już z górki.