Azure-DevOps: 03 – Waterfall vs Agile

14-lis-2022

Każdy projekt zaczyna się tak samo: od potrzeby klienta. Sama potrzeba jest zwykle na początku bardzo słabo opisana. Dzięki pracy architekta można jednak zdefiniować wymagania klienta, które da się przenieść do postaci funkcjonalności aplikacji, tzw. functional & non-functional requirements.

W oparciu o requirements i dokładniej opisane rozwiązanie (Low Level Design), do pracy przystępują programiści. Właściwie to właśnie w tym miejscu najczęściej zaczynamy dostrzegać różnice w rónych sposobach podejścia do tematu.

W Waterfall, programiści zbudują w oparciu o wymagania aplikacje, która zostanie przekazana do klienta. Jeśli po drodze czy to architekt, czy programista popełnił błąd, to na tym etapie będzie go trudno odkręcić. Na dodatek żadne zmiany w requirements na tym etapie nie są dopuszczalne.

Co innego w Agile. Tutaj programiści będą skupiać się na małych zadaniach, które są stale dostarczane do klienta. Klient może wcześnie zareagować na niepoprawne decyzje, ale co ważniejsze – również architekt może wprowadzić pewne zmiany do rozwiązania. To podejście jest zdecydowanie bardziej elastyczne. Zasady pracy w zespole Agile są spisane w postaci manifestu:

https://www.agilealliance.org/agile101/12-principles-behind-the-agile-manifesto/

Czy Waterfall jest zawsze zły? Pewnie nie. Dobrze sprawdzi sie tam, gdzie jako twórca oprogramowania doskonale wiesz, co chcesz osiagnąć. Jeśli jednak takiej pewności nie masz, a tak chyba aktualnie jest w większości przypadków, to metoda Agile wydaje sie lepsza.

Istotna jest też budowa zespołów pracujacych nad danym rozwiązaniem. Chcociaż w DevOps uciekamy od podziału zespołów ze względu na umiejętności, to nadal jest możliwe budowanie zespołu w strukturze poziomej „horizontal”. Tak utworzone zespoły mogą wspierać i budować rozwiązania w tylko ściśle określonej technologii – tylko user interface, tylko backend, tylko bazy danych. Wydaje sie jednak, że organizacja w strukturze pionowej „vertical” lepiej sprawdza się w modelu DevOps. Jeden zespół będzie tu odpowiadał za całą pracę jednej wybranej aplikacji od A do Z, od interfejsu użytkownika po backend i bazę danych.

Struktura horizontal będzie częściej wybierana przez organizaję migrującą się z modelu silosów. Do istniejących zespołów można dodać mentorów, którzy będą wpływać na zmianę modelu pracy całego zespołu oraz modyfikować blokujące ten zespół istniejące procesy.

Agile charakteryzuje się również specyficznym zestawem narzędzi, jak np. Kanban, dashboards itp.

Komentarze są wyłączone

Autor: Rafał Kraik