Przygotowania

Pracę nad każdym projektem rozpoczynamy od przydzielenia kierownika, który poprowadzi projekt z naszej strony. Kierownicy ImpiCode są nie tylko jednymi z najlepszych programistów w firmie, lecz również osobami o szerokim zakresie kompetencji, obejmującym zarządzanie projektami, consulting IT oraz doradztwo biznesowe.

Rolą kierownika jest nie tylko dobór i nadzorowanie zespołu w projekcie oraz osobiste pisanie najbardziej wymagających części kodu. Jego zadaniem jest przede wszystkim zrozumienie potrzeb biznesowych i organizacyjnych klienta. Celem kierownika jest osiągnięcie stanu, w którym będzie on nie tylko głównym programistą, lecz także partnerem i doradca klienta. Dążymy do sytuacji, w której nasz zespół nie będzie postrzegany jak dostawca, którym trzeba zarządzać, ale jak własny dział programistyczny, zmierzający do tych samych celów.

Rozpoznanie potrzeb

Zadaniem kierownika jako pierwszej osoby w projekcie jest rozpoznanie potrzeb klienta. Zależnie od sytuacji może to polegać na analizie funkcjonalnej, inspekcji już istniejącej bazy kodu, sprawdzenie kompletności (technicznej i prawnej) dostarczonego systemu czy też uruchomienie środowiska testowego. Etap rozpoznania służy nie tylko uszczegółowieniu celów projektu, lecz również rzeczowej ocenie aktualnego stanu oraz identyfikacji największych problemów i potencjalnych trudności.

Budowanie zespołu

Po uzyskaniu pełnego obrazu sytuacji w projekcie kierownik (w porozumieniu z klientem) przydziela członków zespołu do poszczególnych zadań. Dobór konkretnych ludzi podyktowany jest jak najlepszym dopasowaniem umiejętności i doświadczeń programistów do bieżących potrzeb projektu, aby w ten sposób zapewnić możliwie wysoką efektywność prac.

Rola kierownika nie kończy się na przypisaniu zadań – wraz z przydziałem prac przekazuje on członkom zespołu zdobytą na etapie rozpoznania wiedzę o projekcie, a w późniejszych etapach nadzoruje prace i dba o ich właściwą realizację, zgodnie z oczekiwaniami klienta.

Adaptacja do zmian

W trakcie projektu często zmieniają się bieżące potrzeby. Nie chodzi tylko o zmiany w dalekosiężnych celach projektu, choć i te nie są rzadkie. Chodzi głównie o zmiany wynikające z naturalnego biegu projektu. Przykładowo w trakcie dojrzewania systemu stopniowo zmniejsza się rola projektantów i analityków, natomiast wzrasta zapotrzebowanie na testerów. Natomiast udział specjalistów od integracji na ogół wymagany jest „punktowo”, w ściśle określonych momentach w projekcie.

Jedną z funkcji kierownika jest monitorowanie bieżących potrzeb i odpowiadanie na nie poprzez zmianę składu osobowego. Kierownik pozostaje przy tym stałym elementem projektu, zapewniając spójną wizję i wymianę wiedzy w zespole. Dzięki temu podejściu zespół jako całość zachowuje bardzo wysoką elastyczność i skuteczność działań.

Komunikacja

Kierownik jest również kluczową osobą w komunikacji z klientem – raportuje stan projektu oraz postępy prac, uzgadnia z klientem najbliższe cele oraz działania, a także informuje o możliwych problemach i proponuje możliwe rozwiązania.

Projekty realizujemy zwykle w oparciu o metody zwinne (agile), najczęściej w postaci luźnych iteracji scrum. Oznacza to, iż pracujemy w cyklach – na początku każdego z nich omawiamy z klientem aktualny stan projektu i wspólnie wyznaczamy cele na kolejny sprint. Określamy zakres planowanych prac, szacując ich czasochłonność i spodziewany efekt.

Szacowanie czasochłonności

W stosowanym w ImpiCode modelu rozliczeń godzinowych (time & materials) kluczowym czynnikiem jest nie tylko dobra komunikacja, lecz jest bliska współpraca między klientem a wykonawcą oraz transparentność działań.

W każdym cyklu produkcyjnym kierownik wstępnie szacuje czasochłonność realizacji poszczególnych zadań i przedstawia ją klientowi. Jest to kluczowe nie tylko dlatego, że klient w oparciu o oszacowania może podejmować decyzje o kolejności realizacji poszczególnych zadań. Równie istotne jest to, że szacowanie jest podstawowym narzędziem kontroli, przez co służy budowaniu zaufania, co jest niezwykle ważne w modelu rozliczeń godzinowych.

Oczywiście szacowania nie zawsze są trafne. Niektóre projekty (np. wymagające pracy z cudzym kodem) potrafią wiążą się z różnego rodzaju „niespodziankami”, przez co siłą rzeczy szacowania dla nich muszą być bardzo luźne. Niemniej jednak zestawienie wstępnych prognoz z rzeczywistymi czasami realizacji pozwala określać długofalową skuteczność. Istotne jest, by jeśli już zdarzy się większe niedoszacowanie lub przeszacowanie, nigdy nie zostało ono bez komentarza. To kolejne zadanie kierownika, który zobowiązany jest przedstawić klientowi powody błędnych szacunków. I nie chodzi tylko o „tłumaczenie się”, lecz przede wszystkim o pogłębienie u klienta świadomość stanu projektu.

Dzięki takiemu transparentnemu podejściu oraz stałej ścisłej współpracy obu stron nieprzewidziane trudności są raportowane natychmiast po wykryciu, dzięki klient zachowuje maksymalną kontrolę nad projektem.

Rozliczanie prac

Zwykle podpisujemy z umowę ramowę, która pozwala klientowi na składanie zamówień na prace programistyczne w określonym wymiarze godzinowym na jeden lub więcej kolejnych miesięcy. Przykładowo możliwe jest zamówienie 0,5 osobmiesiąca (80 godzin) na 3 kolejne miesiące kalendarzowe.

Na koniec każdego miesiąca objętego zamówieniem przedstawiamy klientowi szczegółowy raport (worklog) zrealizowanych prac. Podczas gdy stała operacyjna komunikacja służy planowaniu i nadzorowaniu bieżących prac, raport godzinowy daje klientowi perspektywę strategiczną. Każdy wpis w worklogu zawiera nazwisko programisty, godziny rozpoczęcia i zakończenia pracy nad konkretnym zadaniem oraz sporządzony przez programistę krótki opis podjętych działań.

Worklog stanowi nie tylko podstawę rozliczenia między klientem a ImpiCode, lecz również między ImpiCode a programistą. Jest to fundamentalny element naszej organizacji i z najwyższą starannością dbamy o jego rzetelne wypełnianie, korzystając z autorskiego systemu rejestracji godzin pracy.

Zamówienia w ramach umowy ramowej pozwalają na planowanie intensywności prac. W praktyce zdarza się jednak, że z różnych powodów projekt wymaga zwiększenia bądź zmniejszenia zaangażowania naszego zespołu w określonym czasie. W takich sytuacjach zawsze staramy się wyjść na przeciw potrzebom klienta. Jeśli wymagane jest krótkotrwałe zwiększenie intensywności prac, a dysponujemy odpowiednimi zasobami, przydzielamy do projektu dodatkowe osoby. Analogicznie, jeśli chwilowo prace muszą być wstrzymane, przekładamy ich realizację na kolejny miesiąc. Dzięki temu prace przebiegają płynnie, a klienci nie są obciążeni koniecznością szczegółowego planowania.

Dowiedz się więcej

Jeśli chcesz dowiedzieć się więcej o naszej pracy, skontaktuj się z nami. Nasz konsultant chętnie wyjaśni wszystkie szczegóły.