Zarządzanie zespołem programistów

Sprawne zarządzanie zespołem programistów ma kluczowe znaczenie dla realizacji projektu i pozwala skutecznie rozwiązywać większość problemów, jakie pojawiają się w procesie tworzenia oprogramowania.

Dobry zespół programistów, którzy posiada wysokie umiejętności i kompetencje, jest mocno zmotywowany, zgrany i do tego wydajny to ideał, o jakim marzy niejeden pracodawca. W wielu przypadkach same umiejętności i doświadczenie programistów nie wystarczą, żeby sprawnie realizować projekt i eliminować pojawiające się przeciwności. Potrzebne jest wypracowanie odpowiedniej metody zarządzania zespołem, do czego niejednokrotnie niezbędna jest osoba, która będzie trzymała rękę na pulsie i będzie spinała wszystkie elementy projektu. Tutaj pojawia się pole do działania dla Project Managera.

Project Manager a zarządzanie zespołem

O Project Managerze pisaliśmy już w artykułach „Jesteś Project Managerem w IT, ale czy jesteś Agentem zmian?” i „Project Manager - ale jak nim zostać?”. Jego rola jest kluczowa w zarządzaniu zespołem programistów.

Wszytko zależy od modelu zarządzania firmy i od tego jaką odpowiedzialność przypisuje się Project Manager' owi. Bywa, że Project Manager powinien być wsparciem zespołu w aspektach technicznych, z drugiej – musi działać także w sferze psychologicznej, a nawet społecznej (zespół to przecież relacje międzyludzkie). Aktywność Kierownika Projektu jest zauważalna na wszystkich polach realizowania projektu. Przede wszystkim jego rola nieoceniona jest na polu organizacyjnym. Kierownik dba o właściwy przepływ informacji, a także eliminuje przeszkody, z którymi nie poradzą sobie samodzielnie programiści. Zdaża się, że zarządzanie koncentruje się także na wsparciu zespołu i na udziale w tworzeniu architektury projektu oraz na pilnowaniu jej spójności. Project Manager powinien wspierać członów zespołu w ich rozwoju i służyć im radą w różnych aspektach realizowanego projektu, także w zakresie implementacji różnych rozwiązań. O skutecznym zarządzaniu nie może być mowy bez rozdzielania zadań w zespole. Kierownik Projektu musi przy tym brać pod uwagę kompetencje poszczególnych programistów. Do niego również należy ostateczna decyzja dotycząca kwestii impelemntacyjnych.

Kluczowym zadaniem Project Managera jest pilnowanie realizacji poszczególnych zadań zgodnie z przyjętym wcześniej harmonogramem. Jeśli nastąpią opóźnienia, kierownik musi nie tylko poinformować o nich swoich przełożonych, ale także powinien posiadać umiejętność renegocjowania z nimi harmonogramu. Niekiedy Project Manager ma również możliwość tworzenia zespołu programistycznego od podstaw, kształtowania jego ducha i postaw. Przy budowaniu zespołu często zachodzi potrzeba przekazywania informacji na temat celu projektu, a nie sposobu jego realizacji. Ważne jest także sprawne organizowanie miejsca pracy. Project Manager jest dobrym duchem, który spaja wszystkie elementy projektu, poszczególne działania programistów i monitoruje podejmowane decyzje. Jego zadaniem jest nie tyle ocenianie samych pracowników, ale ich pracy.

Potencjał ukryty w Scrum

Zarządzanie projektami metodami Agile to coraz popularniejsze rozwiązanie wśród firm z branży IT. Na świecie już ponad 80% przedsiębiorstw z tej branży deklaruje korzystanie z Agile, a najpopularniejszą metodą jest Scrum. Tutaj obowiązki Project Managera rozdzielane są pomiędzy dwie osoby: Product Ownera i Scrum Mastera. Ten pierwszy jest odpowiedzialny za kwestie biznesowe, za formułowanie wizji produktu i trzyma pieczę nad budowaniem projektu w odpowiedniej kolejności, współpracując przy tym z programistami i ze Scrum Masterem. Ten ostatni z kolei dba o to, żeby zespół stosował zasady Scrum. Można go nazwać coachem, który wspiera zespół i Produkt Ownera oraz usuwa przeszkody, jakie pojawiają się w procesie realizacji projektu.

W Scrum zespół developerski tak naprawdę sam organizuje swoją pracę w tzw. sprintach, zwanych też przebiegami (każdy od 1 do 4 tygodni). Na koniec każdego z nich organizowany jest godzinny sprint review, w czasie którego prezentowane są efekty pracy. Z założenia każdy kolejny przebieg powinien być lepszy, powinien być progresem i musi korzystać z doświadczenia zdobytego w czasie poprzednich sprintów. Podczas planowania przebiegu ustalane są zadania o najwyższym priorytecie Często zespół uczy się na błędach i musi na bieżąco poprawiać jakość swojej pracy. Okazuje się jednak, że może to być bardzo efektywne rozwiązanie, które zwiększa zaangażowanie pracowników. Codziennie również organizowane jest 15-minutowe spotkanie (Daily Scrum), w czasie których omawia się zadania z poprzedniego dnia, problemy, a także planuje się zadania następne. Metodę Scrum wdraża u siebie coraz więcej firm, np. Gemius.

Zdalny zespół programistów – jak nim zarządzać?

Warto jeszcze pochylić się nad problemem, który obecny jest w coraz większej liczbie firm z branży IT. Chodzi o pracowników pracujących zdalnie i o efektywny sposób zarządzania takim zespołem rozproszonym. Z jednej strony wykonywanie pracy z dowolnego miejsca na świecie to możliwość znalezienia najlepszych programistów i korzystanie z ich wiedzy, ale z drugiej – to także problem sprawnego zarządzania nimi. Pozostawiamy już fakt, że nie każdy pracownik nadaje się do pracy zdalnej i skupimy się tutaj na problemie zarządzania osobami wykonującymi swoje obowiązki poza siedzibą firmy.

Mogłoby się wydawać, że kierowanie rozproszonym zespołem jest trudniejsze niż pracownikami, którzy pozostają stale pod czujnym okiem przełożonego. Wszystko zależy jednak od organizacji pracy, stopnia zaufania i wykorzystywanych narzędzi wspomagających. Siłą rzeczy tutaj kontakt musi przebiegać na nieco innym poziomie. Nie można podejść do pracownika i zamienić z nim kilku słów, poklepując po ramieniu. Nie oznacza to, że stały kontakt nie może być utrzymywany. Dobrze, gdy uda się ustalić określone godziny pracy dla całego zespołu (problemem może być pracownik z innej strefy czasowej), a wtedy komunikacja przebiega o wiele sprawniej. Należy wprowadzić jasne reguły współpracy, jak np. potwierdzanie odebrania e-mailii lub zgłaszanie nieobecności. Warto także wyrobić u pracowników nawyk komentowania wszelkich istotnych dla projektu decyzji tak, żeby można było odnieść się do nich merytorycznie. Najlepiej również organizować codziennie rano krótkie telekonferencje, na wzór spotkań w Scrum, w czasie których będą omawiane bieżące plany i zadania na dany dzień. Firma zatrudniająca wielu zdalnych programistów powinna także korzystać z systemów do zarządzania projektami (np. JIRA Atlassian), które skutecznie wspierają organizowanie pracy. Konieczne jest także dokładne zarządzanie czasem i opracowywanie procesów pracy. Oczywiście trudno mówić o zarządzaniu zespołem programistów bez kontroli jakości pracy i jakości kodu. O tym nie można zapominać. Taki sposób pracy wymaga czasami jeszcze większego doświadczenia Project Managera w zarządzaniu projektami niż w przypadku stacjonarnego zespołu. Przykładem firmy, która zarządza zdalnie pracującymi programistami jest GOGOmedia Software House.

A jaki sposób zarządzania jest wykorzystywany w Waszej firmie? Czekamy na Wasze komentarze.