Obsługujac Rurociąg
Tytuł tego artykułu jest bezpośrednim tłumaczeniem artykułu Mary Poppendieck ("Managing the Pipeline"). Mary prowadzi stronę internetową poświęconą Lean Software Development - pomysłowi na tworzenie oprogramowania w sposób efektywny poprzez odpowiednią reorganizację procesu produkcyjnego.
- [http://www.poppendieck.com/pipeline.htm]
Mary Poppendieck podsuwa następujące pomysły na organizację firmy programistycznej oparte na teorii kolejek:
Ograniczenie przepływu do przepustowości
Czasami akceptujemy nierealne terminy realizacji lub zbyt wiele zadań do realizacji w danym momencie. Powoduje to powstawanie oczywistych opóźnień i negatywną opinię o szybkości realizacji. Należy akceptować pracę, która zmieści się w "przepustowości" naszego działu. Jak można zmierzyć tę przepustowość? Najlepiej zbadać dane historyczne i z nich oszacować prędkość realizacji zadań.
Zrównoważenie pojawiania się zadań
Aby realizacja nie stanowiła problemu należy zadbać o równomierne rozłożenie pracy w ciągu roku.
Minimalizacja liczby elementów procesu
Według prawa Little'a:
są dwie możliwości na zwiększenie czasu odpowiedzi:
- można zwiększyć nakłady aby zwiększyć średnią prędkość realizacji
- postarać się zmniejszyć liczbę elementów procesu
Innymi słowy: jeśli jest mniej zadań przydzielonych do iteracji szybciej pojawią sie one "na wyjściu".
Minimalizacja wielkości elementów procesu
Jeśli składowe procesu będą łatwiejsze do realizacji, wcześniej będą wykonane. Na poniższym diagramie na osi X przedstawione jest wykorzystanie dostępnych zasobów. Widzimy, że im większe wykorzystanie zasobów (ludzi, sprzętu) tym dłuższy jest czas cyklu. Dlaczego tak się dzieje? Ponieważ posiadając część zasobów wolnych szybciej można zrealizować np. krytyczną poprawkę w systemie niż w sytuacji kiedy wszyscy pracownicy są obłożeni zadaniami.
Ustalenie regularnego rytmu pracy
Chodzi o to, by dostarczać funkcjonalność w (miarę) regularnych odstępach czasu. Daje to stale informację o prędkości procesu. W jaki sposób można tego dokonać? Najprościej dzieląc zadania na iteracje tak, by iteracja była zakończona w zdefiniowanym czasie.
Z czasem zespół może dość dokładnie estymować czas realizacji danego zadania (w miarę realizacji kolejnych zadać) ponieważ tego się uczy - estymacja istniejąca przy każdej iteracji uczy umiejętności szacowania pracochłonności.
Pobieranie z kolejki
Na początku każdej iteracji zespoły powinny pobierać zadania z kolejki priorytetowej. Pobierają tylko tyle ile mogą zrealizować w założonym czasie (rytm pracy). Wymaga to poznania prędkości realizacji i umiejętności estymacji, ale jak wspomniałem wcześniej zespoły nabywają tej umiejętności wraz z postępem prac.
System pobierania z kolejki ma następujące korzyści:
- Każdy ma coś do pracy (chyba, że kolejki są puste)
- Zarządzanie procesem opiera się na zarządzaniu kolejkami (ewentualnie zmianami w priorytetach)