Temat: Bądź zwinny, nie naiwny
- W jaki praktyczny sposób określany jest budżet projektu, skoro przy tak krótkim harmonogramowniau na dobrą sprawę nie wiedomo, jaki jest zakres, czas wykonania a w konsekwencji koszt projektu?
Przepraszam, w "takim krótkim" to znaczy w jak krótkim? Przecież projekt może zostać rozpisany np na rok, tylko będzie miał np 12 miesięcznych iteracji. A może też być krótszy, z krótszymi iteracjami. Z klientem przygotowujesz listę funkcjonalności których klient potrzebuje, rozbijasz to na kroki
- iteracje, na podstawie tego widzisz, że pi razy oko wychodzi Ci x czasu. No i możesz też trafić na projekt o ustalonej cenie,
wtedy już za wielkiego pola manewru nie masz :) No i zakres jest
wiadomy.
OK, to rozumiem. Jednak w Agile planujesz tylko na koleją iterację - iteracje są któtkie, więc planowania długofalowego nie ma. Z mojego punktu widzenia zakres nie jest określony - lista funkcjonalności to zdecydowanie nie jest zakres projektu.
Z reguły wykonujemy projekty, których realizacja jest rozstrzygana na drodze przetargu - zanim przystapimy do przetargu, musimy przygotować ofertę. Jedynym kryterium przy ocenie ofert jest cena, w związku z tym musimy bardzo dokładnie oszacować zakres i koszt projektu, żeby być konkurencyjnym a jednocześnie żeby do interesu nie dopłacać. W tym wypadku nie mogę sobie pozwolić na ocenę "na oko". Nadal uważam, że w Agile to niemożliwe, ze względu na brak dokładnej specyfikacji przed przystapieniem do realizacji projektu. W chwili obecnej, mając dobrze zrobioną specyfikację, jestem w stanie z około 10% precyzją oszacować czas i koszt projektu. Do tego dodaję rezerwę na ryzyko i zakładany zysk i mam cenę (to tak w dużym uproszceniu).
W tej chwili jakieś 40% czasu (więc w naszym przypadku kosztów projektu, bo zasobów materiałowych zużywamy w projektach niewiele) zabiera analiza funkcjonalna, efektem której jest Brief (na tym poziomie zazwyczaj powstaje oferta) a potem DIP (po wygranym przetargu). W tej fazie faktycznie bardzo mocno angażujemy klienta. Później wymagamy od niego aktywności na zakończenie każdej fazy zarządczej, w naszym przypadku najczęściej związanej z wdrożeniem kolejnych elementów systemu. Oczywiście klient ma prawo wprowadzać zmiany, zgodnie z procedurą zarządzania zmianami. O tym co, w jakim czasie i zakresie może w trakcie projektu zmieniać jest informowany przed przystąpieniem do realizacji, z tym większą uwagą podchodzi do wstępnego określenia wymagań. Zmiany w kluczowych elementach systemu wprowadzane na końcu projektu pociągają za sobą często konieczność renegocjacji kontraktu (np. w postaci dodatkowego zamówienia na wykonanie usługi), jednak klient jest tego świadomy.
Z nakłanianiem do współpracy raczej problemów nie ma, wystarczy.. zrobić prezentację zalet na początku (którą skrytykowałem wyżej) a później sami cenią sobie ten sposób współpracy, gdyż widzą co się dzieje z ich aplikacją na bieżąco.
I tu w mojej branży pojawia się problem. Projekty robimy głównie dla klientów zewnętrznych, dla których wdrożenie systemu nie jest celem strategicznym a kultura projaktowa jest bardzo niska. Radzimy sobie w różny sposób, ale moim zdaniem na tym polu moglibyśmy wiele jeszcze poprawić. Oczywiście robimy prezentacje, spiralny model implementacji, zarządzanie zmianą, rola właścieila uzasadnienia biznesowego itp, natomiast nie wyobrażam sobie, żeby dyrektor instytucji, z którą pracujemy oddelegował swoich kluczowych w tym wypadku pracowników do projektu na prawie 100% na dłuższy okres czasu.
Natomiast znajduję zastosowanie pewnych elementów XP w samym procesie produkcyjnym projektu (proces zarządczy pozostawiłbym jednak zgodnie z PRINCE-m. Podoba mi sie pomysł programowania w parach, warto też moim zdaniem, w stosunku do tego, co robimy teraz, skrócić (w ramach zdrowego rozsądku) iteracje. Znalazłem nawet ostatnio założenia metodyki XPRINCE, w której stara się połączyć XP z PRINCEM - mam do niej kilka zastrzeżeń, ale pomysł jest ciekawy.
Na potrzeby dokumentacji wewnętrznej do pewnego stopnia stanowi ją kod, natomiast nie rezygnowałbym z systemu kontroli błędów, spisywania know-how nawet w postaci prostych FAQ.
Reasumując - nie znajduję obszarów bezkrytycznego zastosowania Agile we wsystkich typach projektów IT - na pewno stanowi ciekawą propozycję dla projektów innowacyjnych, gdzie odkrywamy jakiś nowy obszar i nie wiadomo dokładnie dokąd zmierzamy. Nie umniejszając wszystkich zalet Agile, w pozostałych przypadkach zastosowanie XP jak dla mnie przynajmniej wiąże się ze zbyt dużym ryzykiem niedoszacowania projektu.