Czym jest agile?

Wielu z was poszukuje na naszej stronie artykułów o podstawowych zagadnieniach, pytacie o nie również podczas spotkań z nami. Na czym polega Scrum? Czym zajmuje się Product Owner? Jak przeprowadzić efektywne retro? Jak wygląda praca Kanbanem? Czym jest WIP? Z myślą o osobach, które zaczynają przygodę z agilem, rozpoczynamy cykl artykułów poświęconych podstawowym zagadnieniom. Wszystkie artykuły publikowane w jego ramach będą specjalnie otagowane i oznaczone zielonym listkiem. Na początek kwintesencja naszego sposobu pracy – agile.

Czym jest agile?

Agile to dzisiaj buzz word. Mamy agile’owe firmy, zespoły, książki, blogi, agile’owych coachów, konsultantów i trenerów. W sieci znajdziecie sporo definicji agile, które akcentują różne wartości, np. minimalizowanie kosztów zmiany wymagań, czy szybkie dostarczanie potencjalnie gotowych do użycia rozwiązań (ang. potentially shippable). Czasem agile jest nazywane metodologią, którą nie jest. Czym więc jest?

W największym możliwym skrócie to sposób pracy w zgodzie z wartościami opisanymi niemal 15 lat temu w Manifeście agile. Mimo, że sam Manifest powstał w środowisku programistycznym i bezpośrednio nawiązuje do pracy nad wytwarzaniem oprogramowania, jego przesłanie można rozpatrywać uniwersalnie. Zapraszam Was na krótką podróż w czasie.

Mamy rok 2001. Miliony ludzi zamiast śledzić, co dzieje się na Facebooku, czy Twitterze, o których nikomu się nawet jeszcze nie śniło, grają w pierwszą część kultowych “Simsów”. W radio słychać Spice Girls, a w internecie pierwsze kroki stawia ogólnodostępna Wikipedia. Ponad 5 mlnów wpisów w wiki później, dzisiaj, to dla nas zamierzchłe czasy. 11 lutego 2001 roku w ośrodku narciarskim w stanie Utah w USA spotyka się 17 praktyków, którzy na co dzień pracują w małych, samoorganizujących się zespołach, we współpracy z klientem, atmosferze wzajemnego szacunku, skupieniu na wczesnym i regularnym dostarczaniu klientowi działającego oprogramowania oraz dbałości o doskonałość techniczną. Działają w oparciu o tzw. lekkie metody (ang. lightweight methods) takie jak Scrum, Extreme Programming, Feature-Driven Development, czy Clear Crystal. “Lekkie” w kontraście do budowania software’u na podstawie opasłej dokumentacji wymagań i specyfikacji (ang. documentation driven development). Pośród uczestników spotkania są osoby zaangażowane w rozwój tych metod, m.in. Jeff Sutherland & Ken Schwaber (Scrum), Kent Beck (Extreme Programming), Alistair Cockburn (Crystal Clear), ale i pionierzy w ich używaniu jak Ward Cunningham, który w latach ‘90 napisał kod pierwszej wersji wiki.

Spotykają się, żeby porozmawiać o specyfice lekkich metod, z których korzystają, wymienić się doświadczeniami i opiniami, pojeździć na nartach i miło spędzić czas. Networking w najlepszym wydaniu. W ciągu 3 dni udaje im się zrobić dużo więcej, niż oczekiwali. Po pierwsze znajdują wspólny mianownik dla wszystkich tych metod i decydują, że obiegowa nazwa “lekkie metody” jest nieodpowiednia. Uznają, że określenie “zwinne” (ang. agile)” lepiej oddaje ich specyfikę. To początek terminu “Agile methods” (zwinne metody). Tworzą również Manifest zwinnego programowania, zwany potocznie Manifestem agile (ang. Manifesto for Agile Software Development, Agile Manifesto), który ma podkreślić 4 wartości, na jakich opierają się wszystkie zwinne, agilowe metody pracy. Poniżej jego pełna treść.

Manifest zwinnego programowania

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 klientem od 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.

Jeśli zastanawiacie się, czy dyskusje w tym gronie były burzliwe, z relacji uczestników spotkania wynika, że tak. Jeff Sutherland uchyla rąbka tajemnicy podczas swoich szkoleń ze Scruma i opowiada anegdotkę o tym, że tak naprawdę Manifest powstał podczas jednej z przerw kawowych. Napisało go 4 uczestników, a reszcie na tyle przypadł do gustu, że wszyscy uznali jednogłośnie, że w takiej formie oddaje to, co chcieli wyrazić.

Martin Fowler, jeden z sygnatariuszy Manifestu, napisze po latach: Agile’owe metody to dla nas sposób pracy, który lubimy, a nie sedno tego, o co nam chodzi. Jeśli odkryjemy lepszy sposób pracy, zaadoptujemy go. Chodzi o to, że jak dotąd agile’owe metody wydają się najlepszym sposobem na budowaniu użytecznego software’u. (Całą wypowiedź Martina nt. Manifestu Agile znajdziecie tutaj)

Nie o metody same w sobie chodzi, to ważne. Agile’owe metody pracy nie są celem samym w sobie, a jedynie środkiem do celu. Dlatego z powodzeniem można ich używać tam, gdzie liczy się efektywna współpraca, dostarczanie wartościowych rozwiązań, zadowolenie klienta i umiejętność szybkiej adaptacji zmian. Dość ekstremalnym przykładem jest wykorzystanie Scruma w kościele przez pastor Arline Conan Sutherland. W dokumencie opisującym jej doświadczenia, przeczytacie: Jeżeli to (Scrum) działa w kościele, może zadziałać niemal wszędzie.

Praca w agile

Jak w praktyce wygląda praca w agile? Panowie nie pozostawili nas z inspirującymi, ale lakonicznymi zdaniami Manifestu. Otrzymaliśmy od nich w spadku również 12 zasad zwinnego tworzenia oprogramowania. Na ich podstawie przygotowałam dla Was w kilku punktach kwintesencję “bycia agile”, niezależnie od wybranej metody.

Priorytetem jest zadowolenie klienta

Klient jest zadowolony, dzięki temu, że wcześnie i regularnie otrzymuje wartościowe, działające oprogramowanie, które jest mu dostarczane co kilka tygodni lub miesięcy. Im częściej, tym lepiej.

Motywujące środowisko pracy

Ludzie są zmotywowani, bo mają do dyspozycji potrzebne środowisko; otrzymują wsparcie i zaufanie, że wykonają powierzone im zadania. Najlepsze rozwiązania architektoniczne, wymagania i projekty (ang. design) pochodzą od samoorganizujących się zespołów. Zwinne procesy umożliwiają wszystkim zaangażowanym (sponsorom, deweloperom i użytkownikom) zrównoważony rozwój.

Bezpośrednia komunikacja

Najskuteczniejszym sposobem przekazywania informacji zespołowi i w zespole jest rozmowa twarzą w twarz. Osoby biznesowe i developerzy na bieżąco ze sobą współpracują przez cały czas trwania projektu.

Miarą postępu jest działające oprogramowanie

Nieustanne skupianie się na technicznej doskonałości i dobrym projektowaniu (ang. design) wspiera zwinność. Kluczem jest prostota, czyli sztuka minimalizowania ilości niezbędnej pracy, a miarą postępu jest po prostu działające oprogramowanie.

Zmiana to szansa

W każdym momencie, nawet na późnym etapie developmentu, są możliwe zmiany wymagań, co zapewnia klientowi przewagę konkurencyjną.

Zespół regularnie poprawia swoją wydajność

Zespół w regularnym odstępach czasu analizuje, co zrobić, żeby zwiększyć swoją wydajność. Następnie dostosowuje swoje działania do wyciągniętych wniosków i zmienia się na lepsze.

Cała trudność polega na tym, że wszystkie wartości wymienione w Manifeście agile są równoważne. Możesz tworzyć świetne rozwiązania dla klienta, ale jeśli nie szanujesz ludzi, z którymi pracujesz, albo którzy dla ciebie pracują, nie jesteś agile. Jeżeli skupiasz się na doskonałości technicznej, a nie angażujesz klienta, i nie wiesz, czy będzie zadowolony z efektów pracy, też nie jesteś agile. Jeżeli klientowi podoba się to, co mu regularnie dostarczasz, ale wiesz, że jest słabej jakości i nic z tym nie robisz, nie jesteś agile…

Dlatego zanim zaczniecie korzystać z agile’owych metod pracy, warto głęboko zastanowić się, z czego wypływa ich potrzeba.

To jak? Jesteście agile?

Na koniec, dla zainteresowanych różnicami w definiowaniu zwinnych metod, wymiana zdań pomiędzy Alistairem Cockburnem (sygnatariuszem Manifestu agile) i Jamesem Bachem, któremu, mimo zaproszenia, nie udało się dotrzeć do Utah: http://alistair.cockburn.us/Notes+on+the+writing+of+the+agile+manifesto

 

Komentarze do wpisu: “Czym jest agile?

  1. Hej Bardzo fajny i treściwy artykuł. Zastanawiałem się ostatnio czy Agile można powszechnie wdrożyć w projektach niezwiązanych z IT? Właściwie nic nie stoi na przeszkodzie. Przynajmniej tak mi się wydaje, ale widzę, że wciąż te metodologia pojawia się głównie w programowaniu. Próbowałem kiedyś opisać jak ja bym to widział http://businesslifemanual.pl/agile-o-co-chodzi/, ale nie wiem czy to jest dobry kierunek. Swoją drogą ciekawę czy ta metoda w tym szybko zmieniającym się świecie nie zostanie niedługo zastąpiona czymś jeszcz bardziej zwinnym…


Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

*

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Ta strona używa Cookies, korzystając z niej wyrażasz zgodę na używanie ciasteczek zgodnie z ustawieniami przeglądarki. Nasza Polityka Prywatności
Akceptuję, bo lubię Was czytać.
x