Czy już powinienem zacząć pracować w Agile’u? Gdzie Agile ma zastosowanie poza IT? Czy są przeciwwskazania w jego stosowaniu? W tej serii artykułów zmierzę się z tymi pytaniami i konkluzjami, które się na ich podstawie nasuwają.

Kiedy warto rozważyć zastosowanie metodyk Agile? Powodów wprowadzenia Agile może być wiele. Postaram się wybrać najczęściej spotykane:

1# Zadania stawiane przed zespołem są trudne lub niemożliwa jest dokładna estymacja czasu i/lub nakładu pracy w sensownym czasie.

Co rozumiem przez sensowny czas planowania zadań? To taki czas, który jest dużo mniejszy niż czas realizacji zadań. Jednak czasami dokładne planowanie zajęłoby zbyt wiele czasu.

Kiedy planowanie zadania może zająć więcej czasu niż jego wykonanie?

Może się tak zdarzyć na przykład w pracy wymagającej przeprowadzenia badań. Za przykład może posłużyć agencja reklamowa, która ma za zadanie przygotować nową kampanię marketingową produktu. Nie ma możliwości deterministycznego stwierdzenia, ile czasu zajmie przygotowanie kampanii reklamowej z dokładnością na przykład do roboczo-dni. Wynika to m.in z faktu, że do stworzenia nowej kampanii potrzebne są często badania rynkowe. W zależności od ich wyniku dostosowuje się tworzoną kampanię lub przeprowadza dalsze badania.

Ale każdy projekt ma swój termin realizacji, który musi być oparty na jakiejś estymacji.

Oczywiście, każda kampania reklamowa ma swój deadline, który w pewnym sensie jest estymatą. Prawda jest jednak taka, że zazwyczaj sprowadza się to do stwierdzenia: „Zrobimy, co będziemy w stanie w wyznaczonym czasie, tak, żeby chociaż po części pokryć każdy wymagany aspekt zlecenia”. A nie do wykonania założonego harmonogramu co do kropki.

Jak wprowadzenie Agile może mi tutaj pomóc?

Dzięki filozofii „Inspect and Adapt” Agile pozwala na rozpoczęcie projektu posiadając tylko informację o kierunku, w którym ma się on rozwijać – bez określenia kompletnego i szczegółowego finalnego celu. Wprowadza również mechanizm, który pozwala sterować zmianą procesu działania zespołu w trakcie prac nad projektem w regularnych odstępach czasu. Dodatkowo Agile zakłada, że w trakcie projektu będą następowały zmiany celi i pozwala na wprowadzenie tych zmian bez „zaczynania od początku”, jeśli to tylko fizycznie możliwe.

2# Czas wykonania zadań stawianych przed zespołem nie jest deterministyczny.

Zdarzają się takie przypadki, kiedy nie można określić czasu osiągnięcia wyznaczonego celu, niezależnie od tego, ile czasu poświęcimy na planowanie zadań.

O co chodzi z czasem wykonania zadań? Skoro wiemy, co mamy zrobić i jak mamy to zrobić, to na pewno można wyznaczyć czas potrzebny na wykonanie tego zadania.

Często słyszę ten argument. Niestety jest on równie chwytliwy, co nieprawdziwy. Moim ulubionym przykładem jest rekrutacja pracowników. Większość działów HR ma komplet procedur dotyczących rozpoczęcia nowej rekrutacji. Formatka, kanały, wymagania itp. Elementy te są z reguły od razu gotowe lub wymagają niewielkiego nakładu pracy. I tutaj pojawia się pytanie: „Skoro wiemy, co i jak mamy zrobić, to dlaczego rekrutacja na dane stanowisko zajmuje raz tydzień, a raz 2 miesiące?” Odpowiedź jest oczywiście banalna – nie jest to deterministyczny proces i odbywa się on w dynamicznie zmieniającym się środowisku. Powoduje to szereg problemów. Bo jak można planować kolejne rekrutacje, jeśli nie wiemy, ile potrwają te obecnie prowadzone?

No to dlaczego nie przyjąć 2 miesięcy jako interwału czasu, który będzie zarezerwowany na osiągnięcie danego celu – przecież mamy „gwarancję”, że jest to wystarczająca ilość czasu.

Oczywiście można przyjąć 2 miesiące jako maksymalny termin i zakładać, że po tym czasie na pewno zostanie zrekrutowana właściwa osoba. Ale co jeśli uda się znaleźć odpowiedniego kandydata po tygodniu? Jak teraz zaplanować czas pracy pracowników działu HR? Klasyczne metody zarządzania często nie dają na to pytanie satysfakcjonującej odpowiedzi.

Jak wprowadzenie Agile może mi tutaj pomóc?

Agile wprowadza m. in. pojęcie kolejki zadań do wykonania. Nie jest to cecha wyróżniająca na tle innych metodologii zarządzania. Natomiast to, co w tym względzie wyróżnia Agile, to samoorganizujące się zespoły, których członkowie sami „przypisują” do siebie zadania, żeby wykonać je w optymalnym czasie. Pozwala to na przykład na zbalansowanie obłożenia pracowników z danego działu.

3# Zakres projektu, a nawet jego skala nie są znane w momencie jego rozpoczęcia.

Jak można mieć projekt i nie znać jego skali? Proste: wystarczy, że mamy potrzebę, a nie wiemy, jak ją zaspokoić.

W jakim projekcie nie jesteśmy w stanie ocenić na początku jego skali?

Jest wiele przykładów opartych na potrzebach projektów, których skala nie jest od początku oczywista:

  1. Optymalizacja procesów w organizacji.
  2. Stworzenie nowego produktu uwzględniającego zmieniające się trendy rynkowe.
  3. Przejęcie i utrzymanie istniejącego produktu z zewnętrznego źródła.

I wiele innych projektów, w których znamy cel, ale kroki do ich osiągnięcia są co najmniej dyskusyjne.

Jak wprowadzenie Agile może mi tutaj pomóc?

Agile wprowadza pojęcie pracy iteracyjnej. W bardzo dużym skrócie polega to na podzieleniu jednego dużego projektu na serię relatywnie krótkich etapów, czyli iteracji. Jednak to co odróżnia iteracje w metodykach Agile od innych filozofii jest to, że na koniec każdej iteracji powstaje tak zwany „przyrost”. „Przyrost” jest częścią finalnego wyniku projektu, która jest gotowa do wykorzystania. Lub ujmując to inaczej: na koniec każdej iteracji dostajemy część finalnego produktu gotową do wykorzystania. W odniesieniu do powyższych przykładów mogą być to np.:

  1. Jeden lub kilka zoptymalizowanych procesów.
  2. Moduł produktu oparty na badaniach rynkowych.
  3. Przejęty w całości fragment/podzespół produktu.

Powyżej przedstawiłem tylko kilka wybranych powodów, dla których warto wdrożyć Agile. Jeśli znasz inne i chciałbyś się swoimi przemyśleniami podzielić z czytelnikami, zostaw komentarz.

Śledź naszego bloga, żeby nie przeoczyć kolejnego artykułu. Powiem w nim, w jakich przypadkach lepiej nie decydować się na Agile i dlaczego.

Coach, mentor and Team Leader. Certified .NET developer, Agile enthusiast and Machine Learning specialist. In his free time ̶ avid scuba diver and fantasy books reader.