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:

całkowity czas cyklu = liczba elementów procesu / średnia prędkość realizacji

są dwie możliwości na zwiększenie czasu odpowiedzi:

  1. można zwiększyć nakłady aby zwiększyć średnią prędkość realizacji
  2. 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)