Z tego wpisu dowiesz się:
- co to jest zwinne programowanie?
- na czym polega podejście agilowe?
- jak w praktyce wygląda praca według jego zasad?
Błyskawiczny rozwój rynku tworzenia aplikacji sprawia, że wytwarzanie oprogramowania nie może być dzisiaj procesem powolnym. W zespole projektowym, który chce odnieść sukces, nie ma miejsca na poświęcanie miesięcy na analizę, projektowanie, dokumentację, wytwarzanie, testowanie i wdrażanie. Produkt musi być dostępny niemal natychmiast. Dodatkowo trzeba wziąć pod uwagę fakt, że oczekiwania wobec kodu mogą się wielokrotnie zmieniać podczas trwania prac nad nim. W jaki sposób developer może spełnić te wymagania? Jedną z metod jest wdrożenie zasad zwinnego programowania.
Agile znaczy zwinny
Termin „zwinne programowanie” upowszechnił się po 2001 roku, kiedy to w ośrodku narciarskim w stanie Utah w USA spotkało się 17 praktyków budowania software’u, pracujących na co dzień w niewielkich zespołach skupiających się na współpracy z klientem, wczesnym dostarczaniu mu produktu a także dbałości o doskonałość techniczną. „Lekkie metody”, w oparciu o które działali, takie jak Scrum, programowanie extremalne czy Feature-driven development, stały w opozycji do tworzenia oprogramowania na podstawie opasłej dokumentacji wymagań i specyfikacji. W ciągu kilku dni udało im się znaleźć wspólny mianownik dla tych sposobów pracy. Uznali, że najlepiej opisuje je słowo „agile” (zwinny). Spotkanie zaowocowało również powstaniem Manifestu zwinnego programowania (Manifest Agile Software Development).
Cztery filary metodyki
W Manifeście zawarto cztery najważniejsze wartości, na jakich opiera się agilowy sposób pracy. Metodyka ta marginalizowała znaczenie procesów i narzędzi, dokumentacji, twardych negocjacji z klientem oraz postępowania zgodnie z planem. Choć nie negowała całkowicie zasadności istnienia tych elementów, kładła nacisk na takie aspekty tworzenia oprogramowania, którym dotychczas nie poświęcano należytej uwagi a w klasycznej metodzie wodospadowej wręcz je pomijano. Co zatem stoi u podstaw zwinnego podejścia? Przede wszystkim komunikacja i ścisła współpraca programisty z klientem. Drugim ważnym elementem jest szybkie adaptowanie się do zmian tak, aby wprowadzenie ich nawet na późnym etapie realizacji projektu było możliwe. W przeciwieństwie do klasycznych metod, takich jak kaskadowa, w których rezultaty prezentowane są dopiero po ukończeniu pracy, zwinne podejście zakłada regularne przedstawianie efektów. Co równie istotne, miarą sukcesu jest tu ilość dobrej jakości kodu.
Zwinna praca
Jak w praktyce wygląda bycie agile? Jednym z sygnałów, po których można poznać zwinnego programistę jest stawianie satysfakcji klienta na samej górze priorytetów. Osiągnąć je można dzięki regularnemu i wczesnemu dostarczaniu działającego, wartościowego oprogramowania. Im częściej tym lepiej. Nie sposób wyobrazić sobie zwinnej metodyki bez komunikacji. Podczas gdy w kaskadowych technikach programowania rola klienta ograniczała się do sformułowania oczekiwań i uregulowania rachunku, tu jest on partnerem, który pozostaje z programistą w stałym kontakcie i jest angażowany w projekt. Nieodłącznym elementem podejścia agile jest również elastyczność, która przejawia się m.in. w możliwości zmiany wymagań na każdym, nawet późnym etapie tworzenia oprogramowania. Oczywiście nie oznacza to bezkrytycznego dostosowywania się do poleceń klienta. Zwinny programista potrafi powiedzieć „nie”, kiedy okazuje się, że w wyniku dodatkowych wymagań, zakres prac stale się powiększa. Przede wszystkim jednak regularnie analizuje swoją wydajność i podejmuje działania, aby ją zwiększać i zmieniać się na lepsze.
Bycie zwinnym przestało być dziś ciekawostką czy eksperymentem, na który mogą sobie pozwolić tylko nieliczni. Elastyczność i dopasowywanie się do zmian to dziś jedne z podstawowych oczekiwań, jakie branża IT stawia przed programistami. Wbrew pozorom zwinne podejście to nie tylko ulga od dokumentacji. Metodyka ta wymaga i zobowiązuje.