Proces tworzenia rozbudowanej aplikacji biznesowej można zrealizować w jasno określonych i występujących po sobie krokach – poczynając od planowania systemu, analizie wymagań biznesowych, projektowania konkretnych rozwiązań, właściwej pracy z kodem, testowaniu powstałej aplikacji, kończąc na produkcyjnym wdrożeniu.
Model ten, nazywany kaskadowym, jest logicznym podejściem, a jego zastosowanie na pierwszy rzut oka wydaje się właściwym krokiem. Co, jeśli klient, otrzymując gotowy produkt, ma sporo zastrzeżeń do różnych obszarów działania oprogramowania? Praca zaczyna się na nowo… W takich wypadkach najlepiej zmienić podejście do zarządzania procesem tworzenia oprogramowania i postawić na Agile – tzw. Metodyki zwinne. Podejście to szczególnie pożądane w świecie dynamicznie zmieniających się rozwiązań technologicznych.
Agile – najpopularniejsze słowo ostatnich lat
Można odnieść wrażenie, że Agile jest najcenniejszym atrybutem nowoczesnego zarządzania projektem – w tej chwili już nie tylko spotykanym w firmach zajmujących się tworzeniem oprogramowania, ale również w wielu innych sektorach. Chcąc odpowiedzieć na pytanie, czym są metodyki zwinne, należy cofnąć się do roku 2001, kiedy to grupa programistów podczas rekreacyjnego spotkania w jednym z amerykańskich ośrodków narciarskich ustanowiła tzw. Manifest Agile. U podstaw spisania owego dokumentu legła chęć efektywniejszej pracy nad tworzonym oprogramowaniem. Główne założenia manifestu eksponują następujące wartości:
- Ludzie i interakcje ponad procesy i narzędzia;
- Działające oprogramowanie ponad obszerną dokumentację;
- Współpraca z klientem ponad formalne ustalenia;
- Reagowanie na zmiany ponad podążanie za planem;
Czyż powyższe założenia nie dają perspektywy bardziej elastycznego i kreatywnego działania niż ma to miejsce w przypadku klasycznego modelu kaskadowego? Z Pewnością.
Co więcej, Manifest Agile obejmuje również 12 konkretnych zasad, które powinny przyświecać zespołom tworzącym oprogramowanie:
- Zadowolenie klienta jest wartością nadrzędną.
- Gotowość do wprowadzania zmian i ulepszeń nawet w końcowej fazie tworzenia oprogramowania. Zasada ta poniekąd wynika z pierwszej – satysfakcja klienta na pierwszym miejscu;
- Dostarczanie działającego fragmentu aplikacji tak, aby możliwe było ulepszenie pojedynczej funkcjonalności;
- Bliska i stała współpraca programistów z managerami;
- Tworzenie najdogodniejszego środowiska pracy zespołom rozwijającym oprogramowanie;
- Nacisk na komunikację twarzą w twarz;
- Działająca funkcjonalność jako wyznacznik postępu w rozwoju oprogramowania;
- Dbałość o zrównoważone tempo prac we wszystkich podzespołach zaangażowanych w rozwój aplikacji;
- Stała koncentracja na doskonałości zarówno technicznej, jak i projektowej;
- Przemyślana organizacja pracy minimalizująca zbędne działania;
- Największą efektywność pracy daje model, w którym występują samoorganizujące się zespoły;
- Zespoły stale wyciągają wnioski z obserwacji pracy, a następnie w oparciu o nie wdrażają usprawnienia;
Wdrożenie powyższych zasad, jak pokazuje wszechobecne zadowolenie firm stosujących metodyki zwinne, jest kluczem do sukcesu.
Stosowanie metodyk zwinnych w software house
Warto zwrócić uwagę na fakt, że metody zwinne nie zawsze są właściwym wyborem. Sprawdzają się one przede wszystkim w następujących sytuacjach:
- Gdy zleceniobiorca w całości jest odpowiedzialny za rozwój oprogramowania;
- Gdy oczekiwania i wymagania zleceniodawcy nie są jasno określone;
- Gdy projekt jest obszerny i złożony;
- Gdy klient jest zaangażowany w proces powstawania produktu;
Jak zatem można zaobserwować, przywołane przypadki doskonale charakteryzują zlecenia realizowane przez firmy typu software house.
Scrum dla usprawnienia pracy w Software House
Scrum jest podejściem wchodzącym w skład metodyk zwinnych. Zakłada zdolność dostosowywania produktu do oczekiwań klienta oraz organizacji złożonych obszarów projektu. Jednostką organizacyjną w tym podejściu jest tzw. Scrum team, na którego czele stoi właściciel produktu odpowiadający za maksymalnie możliwy rozwój tegoż produktu. Stanowi on ogniwo łączące zespół Scrum z klientem. Główną siłą napędową zespołu Scrum jest zespół deweloperski odpowiedzialny za rozwój danego produktu. Ostatnim ogniwem składającym się na zespół Scrum jest tzw. Scrum Master. Jest on osobą dbającą o dogodne warunki dla rozwoju produktu. Podstawową jednostką czasu organizującą pracę zespołu są tzw. Sprinty – okresy, w których zespoły tworzą daną funkcjonalność. Praca w modelu Scrum może zostać skutecznie wykorzystana w przypadku tworzenia dowolnych produktów webowych, w tym również biznesowych rozwiązań opartych o WordPress, który jest najczęściej spotykanym systemem CMS w biznesie.
Kanban jako narzędzie do wizualizacji postępu projektu
Powszechnie stosowanym narzędziem z grupy metodyk Agile jest Kanban. Jest to sposób, za pomocą którego są wprowadzane zmiany na drodze stopniowego ulepszania. Kanban można wdrożyć do modelu Scrum. Pomaga to obrazować status, jaki konkretne zadanie posiada. Statusy są uporządkowane w kolumnach od strony lewej do prawej. Najczęściej statusy z angielskiego brzmi: to do, in progress, in review, done. Zatem w skrócie rzecz ujmując są one zbliżone do popularnej aplikacji “To Do List”.
Metoda ta doskonale sprawdzi się w pracy firmy typu software house w procesie tworzenia m.in. Sklepów internetowych czy stron opartych o system CMS WordPress.
Powyżej przedstawione koncepcje wchodzące w skład Agile są idealnym rozwiązaniem w przypadku działalności software house lub agencji interaktywnych tworzących komercyjne oprogramowania. Pozwalają one idealnie dostosować pracę firmy do specyfiki komercyjnych projektów, zarówno tych złożonych, jak i tych na mniejszą skalę.