Zarządzanie zwinne Agile
Odkrywamy nowe metody programowania dzięki praktyce w programowaniu i wspieraniu w nim innych. W wyniku naszej pracy, zaczęliśmy bardziej cenić:
Ludzi i interakcje od procesów i narzędzi
Działające oprogramowanie od szczegółowej dokumentacji
Współpracę z klientemod negocjacji umów
Reagowanie na zmiany od realizacji założonego planu.
Oznacza to, że elementy wypisane po prawej są wartościowe, ale większą wartość mają dla nas te, które wypisano po lewej.
Zwinne zarządzanie projektami, czyli iteracyjne, elastyczne i otwarte na ciągłą współpracę z klientem to zarządzanie Agile. Po raz pierwszy takie zarządzanie pojawiło się już w 1957 roku. W dniach 11-13 lutego 2001 roku siedemnastu deweloperów na spotkaniu w Utah stworzyło i podpisało się pod deklaracją wspólnych zasad dla zwinnych metodyk tworzenia oprogramowania - Agile manifesto, Manifesto for agile software development.
Adaptacyjne zarządzanie projektami charakteryzuje się stałą, ścisłą współpracą z klientem. Projekt jest podzielony na mniejsze fragmenty - iteracje co powoduje, że ramy projektu nie są ściśle określone. Uwaga jest skupiana nad zadaniem, które jest w danym momencie wykonywane. W przypadku wytwarzania oprogramowania kod jest testowany w każdej iteracji, co pozwala osiągnąć oprogramowanie bardzo wysokiej jakości.
Głównymi celami oraz zasadami zwinnego zarządzania projektami są:
- elastyczność i adaptacyjność projektowania względem zmieniających się wizji klienta co do produktu końcowego,
- tworzenie innowacyjnych i wartościowych rozwiązań,
- można minimalizować koszty skracaniem harmonogramów,
- członkowie zespołu są świadomi dużej odpowiedzialności ze swojej strony, co powoduje wzrost motywacji do pracy,
- zespoły same tworzą swój harmonogram pracy,
- kontakt z klientem jest bardzo ścisły, co zwiększa też jego satysfakcję,
- można łatwo minimalizować ryzyko niepowodzenia.
W metodyce Agile możemy wyróżnić sześć etapów, które tworzą cykl powtarzany do zakończenia danego zadania. Kolejne cykle mogą służyć do skorygowania poprzednich zadań po otrzymaniu informacji zwrotnej, jednakże nie powinny one się opierać na ciągłym poprawianiu wcześniejszych błędów poprzez pominięcie lub niedokładności przeprowadzenia etapu planowania.
- Planowanie/plan - zbieranie dokładnych wymagań od klienta, ich analiza oraz zaplanowanie kroków koniecznych do realizacji danego zadania na podstawie pozyskanych informacji. Jest to etap, który ma duże znaczenie dla czasu i jakości zrealizowania danego elementu. Etap ten jest często pomijany, ponieważ wymaga od bardzo dużego kontaktu z klientem oraz umiejętności komunikacyjnych z drugą osobą, umiejętności słuchania drugiej osoby.
- Projektowanie/design - po uzbieraniu informacji w fazie planowania projektujemy wykonanie danego elementu tak, jak architekt projektuje dom dla osób, które go później budują.
- Programowanie/develop - wykonywanie prac dotyczących danego zadania.
- Testowanie/test - testowanie danego elementu od strony technicznej przez zespół oraz przez klienta.
- Implementacja/release - po zakończeniu testów przekazanie danego elementu do użytku klienta.
- Informacja zwrotna/feedback - przekazywanie drobnych błędów niewychwyconych podczas testów. Zgłaszanie usprawnień do realizacji w kolejnych iteracjach. Przekazanie zmian, które wynikły ze zmiany procesów lub potrzeb klienta, a nie ze złego zrozumienia lub z braku komunikacji w pierwszym etapie
Członkowie małego zespołu projektowego realizują wiele funkcji, potrafią sami sobą zarządzać w efektywny sposób. Zazwyczaj nie jest ustalana hierarchia członków zespołu. Możemy czasami wyróżnić managera, który pełni rolę mentora oraz osoby rozwiązującej ewentualne konflikty. Każdy członek zespołu może sam zadecydować, w jaki sposób zrealizuje swoje zadanie. Zespół jest dobrze skomunikowany i nie traci czasu na tworzenie dokumentacji.
Agile jak każda metoda ma swoje plusy i minusy.
Plusy | Minusy |
---|---|
Elastyczność, na dowolnym etapie prac możemy dokonać zmian, które nie zniszczą nam całości projektu | Słaba kontrola postępu prac. |
Na samym początku przystępowania do prac nad projektem nie musimy dokładnie definiować produktu końcowego, może on się zmieniać w trakcie prac wraz z wizją zleceniodawcy | Projekty są celowane w małe zespoły, które powinny mieć duże doświadczenie, aby osiągać efektywne rezultaty. Członkowie zespoły powinni umieć u strukturyzować swoją pracę, gdyż ten rodzaj wykonywania projektów jest mało sformalizowany |
Metodyka Agile promuje samodzielność i odpowiedzialność zespołów, co wiąże się z większym zaangażowaniem nad pracami przy projekcie | Koncentracja jest tutaj oparta głównie na dostarczeniu jak najlepszego produktu przy pominięciu analiz kosztów, analiz wymagań biznesowych, gromadzeniu dokumentacji, która może się przydać w przyszłych podobnych projektach i która może ułatwić wdrożenie nowego zespołu sprawnie, jeżeli stary zrezygnuje. Są również pomijane aspekty prawne i formalne |
Osoba zlecająca projekt ma pewność, że najważniejsze w projekcie jest to, aby jej wizja została zrealizowana | Bardzo częstym błędem jest nadinterpretacja założeń metodyki Agile i całkowicie błędne pomijanie bardzo ważnych etapów projektu "zbierania wymagań", a następnie na ich podstawie "analizy" oraz "planowania" |
Metody zaliczane do nurtu Agile:
- Metodyka SCRUM,
- Crystal Clear,
- Metodyka Extreme Programming,
- Adaptive Software Development,
- Dynamic Systems Development Method,
- Feature-Driven Development,
- Behaviour Driven Development/Acceptance Driven Development
- Lean Software Development,
- Kanban.
Podsumowując, Agile jest głównie stosowany w realizacji projektów innowacyjnych, z dużą dawką niepewności np. do projektów informatycznych m.in. w zakresie inżynierii oprogramowania. Nie nadaje się natomiast do projektów bardzo dużych i rozbudowanych gdzie wymagane są duże wydatki technologiczne.
Congratulations @dragonassi! You received a personal award!
You can view your badges on your Steem Board and compare to others on the Steem Ranking
Do not miss the last post from @steemitboard:
Vote for @Steemitboard as a witness to get one more award and increased upvotes!