Ostatnimi czasy odeszliśmy trochę od teoretycznych aspektów związanych z dostarczaniem produktów. Opisywaliśmy miary zwinności, zajmowaliśmy się nadgorliwością Scrum Mastera czy próbą znalezienia zależności pomiędzy rolą SM-a i Agile Coacha. Dziś wrócimy odrobinę do teorii i opiszemy Prawo Little’a (ang. Little’s law).
Czym jest Prawo Little’a?
Zacznijmy od samego początku, czyli od definicji Little’s law. Być może na pierwszy rzut oka wygląda skomplikowanie, ale tak naprawdę jest dziecinnie proste.
„Średnia liczba rzeczy/klientów w systemie jest równa iloczynowi średniego czasu przebywania w systemie oraz średniego tempa ich przybywania.” – Prawo Little’a
Little’s law to prawo, które zostało po raz pierwszy sformułowane w 1954 przez Alana Cobhama. Dokładnie 7 lat później John Little przedstawił dowód na to, że prawo to możemy zaobserwować w każdym systemie kolejkowym pod warunkiem, że obserwujemy go wystarczająco długo. I to dzięki temu mówimy o Prawie Little’a (Little’s law), a nie na przykład Prawie Cobhama (Cobham’s law).
Prawo Little’a wykorzystywane jest między innymi do analizy pracy w toku (Work in Progress). Pisaliśmy już o WIP wielokrotnie – jest to jeden z elementów Kanbana. Kanban zaś z kolei jest metodyką należącą do szerokiego zbioru metodyk agile.
Zastosowania Little’s law
Prawo Little’a znalazło zastosowanie w praktycznie każdym aspekcie naszego życia. Nie zdajemy sobie z tego sprawy, ale stojąc do kasy w hipermarkecie i szacując, ile potencjalnie zmarnujemy czasu, możemy skorzystać z tego prawa. W jaki sposób? Obserwujemy średni czas obsługi jednego klienta i dzielimy go przez średnie tempo przybywania klientów.
To istotne, bo naszym odruchem mogłoby być podzielenie średniego czasu obsługi klienta przez liczbę klientów już obecnych w kolejce. Wyniki te byłyby podobne pod warunkiem, że nie mamy daleko do końca kolejki. W przeciwnym wypadku – zanim ustawimy się na ostatnim miejscu, do naszego jakże skomplikowanego systemu mogą trafić kolejne osoby, co wydłuży czas obsługi.
Może się też zdarzyć, że nasze szacunki były błędne. Analizowana osoba miała tylko jeden produkt w swoim koszyku, a każda następna ma ich więcej niż 10. Pamiętajmy, że Little’s law mówi o wartościach średnich. To, że my spędzimy tam trochę krócej bądź dłużej i tak nie będzie miało znaczenia, pod warunkiem, że obserwujemy system wystarczająco długo. Bo jeżeli nie interesuje nas obserwacja, a jedynie szybki powrót do domu, to oczywiście będzie to miało dla nas znaczenie.
Gdzie jeszcze znalazło zastosowanie obserwacja, o której dziś piszemy? Prawo Little’a pozwoli nam na wyliczenie średniego czasu spędzonego przez pacjenta w szpitalu, przy tworzeniu i analizie rozwiązań just-in-time czy przy analizie wielkości zapasów wyrobów gotowych. Wszystko to bez wiedzy o sposobie obsługi, strukturze procesu i innych niepotrzebnych szczegółach. Wystarczy średni czas obsługi oraz średnie tempo przybywania klientów. Jak się okazuje – nic więcej nie ma znaczenia.
Prawo Little’a w tworzeniu oprogramowania
Osobną kategorią, gdzie Prawo Little’a znalazło wykorzystanie, to tworzenie oprogramowania. Nie jest istotne czy działamy w czystym Kanbanie, czy w jakiejkolwiek innej metodyce. Zawsze próbujemy coś mierzyć, a jeżeli chodzi o „przepływy”, to Little’s law ułatwia nam to w dużym stopniu. Przykładem może być analiza Cycle Time, o którym pisaliśmy w drugiej części miar zwinności.
Jeśli średnio, we wszystkich fazach realizacji, mamy „rozgrzebane” 40 błędów, a średnio dziennie poprawiamy ich 26, to Cycle Time (średni czas poprawy błędu) wynosi nieco ponad 1,5 dnia. Takie obliczenie pozwala nam sterować zarówno wartością Work In Progress jak i odpowiednio dopasowywać Cycle Time do naszych potrzeb i podpisanego SLA. I znów – bez kłopotliwych pomiarów i obliczeń, wszystko na podstawie dwóch wartości, które możemy zmierzyć.
Jeśli potrzebujemy skrócić Cycle Time, musimy zmniejszyć WIP, bądź zwiększyć naszą przepustowość. Obie te rzeczy można osiągnąć na wiele różnych sposobów. Od zmniejszenia liczby zgłoszeń (pierwsza linia wsparcia ograniczy WIP) do zatrudnienia dodatkowych osób (zwiększenie przepustowości). Jeśli zaś wartość Cycle Time nie jest dla nas istotna, a najbardziej zależy nam na poprawie maksymalnej liczby błędów, zwiększamy wartość WIP (i liczymy na to, że Cycle Time nie spadnie).
Przecież używamy tego często!
Little’s law znajdzie zastosowanie nie tylko w przypadku zespołów zajmujących się rozwiązywaniem problemów produkcyjnych, ale również w przypadku np. prac rozwojowych. Jedyne co musimy zrobić, to zastąpić „ilość zgłoszeń” przez na przykład „sumę Story Points„.
Prawo Little’a to jedno z tych twierdzeń, które uznać możemy za oczywiste. Z jednej strony wykorzystujemy je w codziennym życiu, z drugiej, gdybyśmy brali udział w Milionerach, pewnie posiłkowalibyśmy się jakimś kołem ratunkowym.
Czy możemy je wykorzystać? Tak, zawsze i wszędzie. Poza najprostszymi przykładami wziętymi z życia, bardzo istotne jest jego zastosowanie w świadomym tworzeniu oprogramowania. Jak już pisaliśmy przy okazji omawiania terminów w Scrum, w części przypadków ciężko jest zaplanować „dowiezienie” wymagania. A Prawo Little’a może nam w tym pomóc. Podobnie jak niektóre filmy z naszego kanału na YouTube.