5S w Informatyce

Wprowadzenie

System 5S jest zbiorem reguł opracowanym w celu wprowadzenia podstawowej dyscypliny oraz zaprowadzenia i utrzymania porządku w miejscu pracy. Praktyki 5S są jednym z fundamentów tworzenia środowiska pracy sprzyjającego działaniom projakościowym, harmonijnej pracy i ciągłemu doskonaleniu stosunków ludzkich, co przekłada się na efektywność organizacji. Nazwa 5S pochodzi od pierwszych liter japońskich wyrazów Seiri, Seiton, Seiso, Seiketsu i Shitsuke (odpowiedniki angielskie to: Sort, Systematize, Sweep, Sanitize, Selfdiscipline - istnieją również inne wersje przekładu). Jest to pięć filarów na których opiera się ta praktyka.

  1. Seiri - Selekcja - polega na oddzieleniu wszelkich narzędzi, instrukcji, materiałów zbędnych na stanowisku pracy od tych niezbędnych oraz na usunięciu (przeniesieniu, wyrzuceniu) tych zbędnych.
  2. Seiton - Systematyka - polega na oznakowaniu części i narzędzi oraz wyznaczenie dla nich miejsca, w którym mają być dostępne. Każdej części, narzędziu, instrukcji określone zostaje miejsce, w którym ma się znajdować. Przedmioty wykorzystywane najczęściej powinny znajdować się w zasięgu ręki pracownika, powinny być łatwiej dostępne.
  3. Seiso - Sprzątanie - oznacza sprzątanie, układanie, usuwanie brudu, odpadów produkcyjnych, czyszczenie, także odnowienie miejsca pracy i jego otoczenia.
  4. Seiketsu - Schludność (także Standaryzacja) - to ciągłe utrzymanie porządku, czystości i schludności na stanowisku pracy i w jego otoczeniu. W praktyce jest to codzienne wykonywanie Seiri, Seito oraz Seiso.
  5. Shitsuke - Samodyscyplina - wyrobienie w sobie nawyku przestrzegania powyższych zasad. Stosowanie się do nich i dbanie o to, by stosowali się do nich współpracownicy.

Czy tylko warsztat mechaniczny?

Pierwsze wrażenie, jakie sprawia 5S, to obraz plakatu rozwieszonego gdzieś w fabryce mającego skłonić pracowników do pilnowania, by młotki i pilniki leżały uporządkowane na warsztacie. Taki obraz wynika z zawężonego rozumienia pojęcia "stanowisko pracy". Jeśli użyjemy sformułowania "obszar działalności" skojarzenie nie jest już takie jednoznaczne. Jak można zaadoptować powyższe reguły w informatyce (w tworzeniu oprogramowania w szczególności)?

Selekcja, czyli minimalizm

Co jest w programowaniu narzędziem? Oczywiście kompilatory, środowiska programistyczne, narzędzia, biblioteki. Należy przeanalizować, czy na systemie na którym pracuję znajduje się oprogramowanie, z którego nie korzystam i je usunąć.

W ten sposób łatwiej jest np. spisać narzędzia wymagane do danego projektu (co jest ważne np. kiedy na nowych maszynach instalowane jest środowisko deweloperskie projektu). Podobnie jest z bibliotekami, jeśli w systemie jest całe mnóstwo niepotrzebnych bibliotek możemy niepostrzeżenie uzależnić projekt od którejś z nich, co spowoduje błąd przy kompilacji / uruchomieniu na innej maszynie.

Systematyka, czyli automatyzacja

Jednym z podstawowych grzechów współczesnej praktyki w tworzeniu oprogramowania jest magia. Aby zbudować projekt potrzeba np. przeklikać się lub wywołać z konsoli jakieś narzędzie X, które przegeneruje pewien zbiór plików lub wygeneruje pakiet instalacyjny. Powoduje to powstanie pewnej ukrytej wiedzy, którą trzeba przekazać każdej osobie, która wchodzi do projektu. Samo wykonanie listy manualnych czynności zajmuje czas nie mówiąc już o rozwiązywaniu problemów kiedy N-ty krok zrobiło się inaczej niż powinno.

Panaceum na magię jest czytelny plik budujący. Najczęściej wykorzystuje się narzędzia make lub ant, które pozwalają automatyzować często wykonywane czynności. Coś, co nie jest zapisane w pliku budującym nie powinno w projekcie występować. Lądują tam cele: budowania projektu, wywołania testów automatycznych, przygotowania środowiska.

Pracowałem dla jednej dużej firmy, gdzie musiłem poświęcić aż trzy dni na zestawienie podstawowego środowiska do pracy (nieprzenośny skrypt budujący napisany w plikach *.bat, zrzut bazy danych przesłany e-mailem - konieczna ręczne wczytanie go do bazy danych, niespodzianki podczas uruchamiania odkrywane po kilku godzinach odpluskwiania spowodowane brakiem pliku konfiguracyjnego X).

O ileż prościej było by wydać dwa polecenia: 1) ściągnięcie z repozytorium świeżej wersji 2) wykonanie ant init, które przygotowało by maszynę do pracy w domyślnej konfiguracji i sprawdziło, czy są wszystkie komponenty w systemie.

Sprzątanie, czyli refaktoryzacja

Jednym z podstawowych obszarów działalności informatyka tworzącego systemy jest pisanie kodu / specyfikacji / dokumentacji. Przy założeniu, że nie znamy pełnej specyfikacji na początku (tworzymy w stylu przyrostowym) w trakcie trwania projektu konieczne są poprawki w już istniejącym kodzie. Powoduje to z czasem narastanie zagmatwania i niespójności w ogólnej strukturze systemu.

Refaktoryzacja to termin zapożyczony z Extreme Programming opisujący poprawianie struktury kodu bez zmiany jego funkcjonalności. Oczywiście ingerencja taka niesie ryzyko popsucia czegoś, ale jestem zdania, że lepiej przećwiczyć "psucie" w trakcie prac niż tuż przed oddaniem kodu do klienta. Uczymy się podczas refaktoryzacji kontroli nad kodem, ponadto istnieje zestaw technik, które zmniejszają ryzyko uszkodzenia funkcjonalności przy refaktoryzacji (np. testy jednostkowe, techniki statyczne).

Sprzątanie zakłada, że warto zainwestować czas w uporządkowanie struktury teraz, kiedy jest ona zaburzona w sposób nieznaczny aby ułatwić pracę w przyszłości. Wielokrotnie doświadczyłem, że jeśli projekt jest dojrzały (zawiera techniki zapewnienia jakości) wprowadzenie nawet złożonych refaktoryzacji (przecinających dużą część kodu systemu) jest proste i bezpieczne.

Schludność i Samodyscyplina

Powyżej przedstawione trzy praktyki nie mogą być zastosowane raz i zapomniane. Powinno się je wykonywać ciągle. Dwie ostatnie praktyki 5S dotyczą utrzymania czystości poprzez ponawianie sprzątania i reorganizacji.

W informatyce dotyczy to woli do odłożenia pilnych, ale nie ważnych, spraw i realizacji raz na jakiś czas spraw ważnych, które wcale nie są pilne. Np. wykryte powtórzenie kodu w kilku miejscach nie powoduje żadnego widocznego błędu w budowanym systemie. Jeśli jednak poprawkę takiego drobnego defektu struktury odłożymy kilka razy "na później" możemy mieć problem w momencie, kiedy pojawi się pilna potrzeba wprowadzenia zmian w takim powtórzonym kodzie.

Podsumowując: inwestując regularnie nieduży czas teraz ułatwiamy sobie pracę w przyszłości.

Podsumowanie

Praktyki 5S są podstawą szerszego systemu dbania o jakość w organizacji zwanego TQM (Total Quality Management). Ogólna zasada przy wdrażaniu systemów jakości w organizacji to konieczność rozłożenia tego procesu w czasie. Nie można w rewolucyjny sposób (magicznie) poprawić jakości jeśli nie zapewni się regularnego wykonywania procesów związanych z systemem jakości. Do regularności konieczne są nawyki samodyscypliny, ostatniej praktyki 5S.

Odnośniki