.

Nie tylko programiści. Poznaj role w zespole deweloperskim

Jeśli chodzi o pracowników agencji zajmujących się rozwojem oprogramowania, w pierwszej kolejności przychodzą nam do głowy programiści. Oczywiście nie jest to błąd, jednak należy pamiętać o kilku innych bardzo istotnych rolach, bez których nawet najlepiej technologicznie przygotowany produkt może okazać się fiaskiem. W tym artykule przedstawimy Wam, kto wchodzi w skład zespołu deweloperskiego.

Role w zespole deweloperskim

Zespół deweloperski to grupa specjalistów, którzy wspólnie pracują nad tworzeniem oprogramowania. Efektem tej pracy może być zbudowanie strony internetowej, aplikacji mobilnej lub przygotowanie i uruchomienie konkretnej usługi, np. automatyzacji marketingu. W zależności więc od projektu nacisk na poszczególne role w zespole może się nieco różnić. Jeśli projekt wymaga np. migracji danych czy integracji z zewnętrznymi systemami, bez wątpienia muszą się znaleźć w zespole programiści o twardych kompetencjach technicznych. Gdy celem jest zmiana szaty graficznej, kluczową rolę odegra designer. Kiedy natomiast potrzebą jest przygotowanie witryny na wzrosty ruchu, nie obejdzie się bez inżyniera DevOps.

Zespół deweloperski składa się z różnych specjalistów

W tym artykule skupimy się na rolach innych niż te stricte programistyczne, a które są niezbędne, aby projekt został ukończony w sposób efektywny i zgodny z założeniami. Opiszemy zatem role takie jak analityk biznesowy, menedżer projektu, inżynier DevOps i designer, a także kompetencje członków zespołu testerskiego.

Analityk biznesowy (BA)

Osoba na tym stanowisku jest często pierwszą, do której trafia klient ze swoim pomysłem. Można powiedzieć, że analityk biznesowy to ktoś, kto przed rozpoczęciem prac projektowych “przetłumaczy” tę koncepcję na język danych i określi główne ścieżki dotarcia do celu wyznaczonego przez klienta. Rola analityka jest nieoceniona szczególnie wówczas, gdy zleceniodawca nie dysponuje wystarczającą ilością czasu lub odpowiednią wiedzą merytoryczną, żeby przełożyć własną wizję na konkretne wymagania.

Ten specjalista wspiera proces definiowania celów biznesowych i proponuje metody ulepszania produktu. Współpracuje z klientem, aby zrozumieć jego problemy i potrzeby, analizuje oraz dokumentuje zebrane informacje, żeby znaleźć najlepsze rozwiązanie. Pomaga więc w ustaleniu zarówno podstawowych wskaźników KPI (ang. Key Performance Indicators - kluczowe wskaźniki efektywności), jak i odpowiednich sposobów wdrożenia, które będą najwygodniejsze dla klienta i zespołu.

Oprócz tego, że BA musi charakteryzować się umiejętnością myślenia analitycznego, powinien także być elastyczny i mieć dużą wyobraźnię. Dzięki takim zdolnościom będzie w stanie połączyć oczekiwania klienta ze specyfiką pracy projektowej, przy maksymalnym wykorzystaniu kompetencji zespołu.

Menedżer projektu (PM)

Dobry Project Manager to klucz do osiągnięcia sukcesu w każdym software’owym projekcie. Bez kompetentnej osoby na tym stanowisku zarządzanie pracą zespołu oraz zapewnienie efektywnej komunikacji (również z klientem) jest w praktyce niemożliwe. PM powinien wiedzieć wszystko o projekcie, jest to niezbędne do przewidywania ewentualnych zagrożeń, a tym samym do podejmowania działań z wyprzedzeniem, aby projekt miał szansę zmieścić się w zaplanowanym czasie i budżecie.

Jakimi zatem kompetencjami powinien się charakteryzować dobry menedżer projektu?

Cechy przywódcze

Umiejętne zarządzanie projektem wymaga posiadania cech przywódczych, w oparciu o które PM zdefiniuje zespołowi kierunek, w jakim ma podążać. Zadaniem menedżera projektu jest więc nie tylko określenie celów na początku prac, ale także ich redefiniowanie już w trakcie działań.

Do kluczowych cech przywódczych należą:

  • motywowanie - inspirowanie zespołu do możliwie największej efektywności oraz szukania niestandardowych rozwiązań,
  • budowanie więzi w zespole - zachęcanie do wzajemnego wspierania się wiedzą, co w bezpośredni sposób wpływa na terminową realizację sprintów,
  • umiejętność podejmowania decyzji - w oparciu o zdiagnozowanie konkretnej sytuacji, określenie tego, co chce się osiągnąć, a także poszukiwanie alternatywnych rozwiązań.

Znajomość metodologii zarządzania projektami

Agile, Scrum, Kanban, Scrumban, Lean, Waterfall czy PRINCE2… są najbardziej powszechnymi i znanymi metodologiami. Oczywiście trudno, żeby menedżer projektu miał dogłębne doświadczenie w każdej z nich, ale powinien posiadać wiedzę praktycznego wykorzystania minimum jednej metody. Jeśli na przykład będzie specjalistą w Scrumie, użycie tej metodologii przyczyni się do utrzymywania jakości w całym projekcie, m.in. dzięki temu, że:

  • konkretne zadania są ustawione pod względem kolejności priorytetów,
  • cykliczne spotkania projektowe (sprint planning, daily, review, retrospective) wpływają pozytywnie na przepływ informacji,
  • testy przeprowadzane są już od samego początku trwania projektu.

Aby wykorzystać wszystkie możliwości tej metodologii, PM powinien posługiwać się odpowiednimi narzędziami. Jednym z nich jest Jira, która pomaga skutecznie zapanować nad tym, co dzieje się w projekcie. Wszystkie informacje o realizacji zadań zapisywane są w tym programie, do którego dostęp ma również klient. Menedżer projektu widzi zadania ustawione pod względem ważności, ile czasu zaplanowane jest na konkretne działanie oraz ile godzin zostało już wykorzystanych. Cykliczne spotkania stają się wówczas bardziej efektywne, ponieważ można określić czas potrzebny na dokończenie tych zadań, a tym samym raportować postępy prac klientowi.

Umiejętność zarządzania zmianą

W tym miejscu należy wspomnieć o zarządzaniu zmianą. Jeśli projekt realizowany jest w metodologii Agile, trzeba być przygotowanym na iteracje, a więc powtarzanie tej samej operacji w pętli z góry określoną liczbę razy do spełnienia określonego warunku. Może bowiem niekiedy zajść potrzeba dokonania istotnych zmian np. dotyczących użycia funkcjonalności dla tworzonego serwisu internetowego. Menedżer projektu musi wtedy zmodyfikować założenia, przekazać wytyczne zespołowi, a nie będzie to możliwe bez tej kompetencji przywódczej.

Umiejętność zarządzania ryzykiem

Dobry menedżer projektu musi być gotowy nie tylko na iteracje. Powinien być także przygotowany na ewentualne zagrożenia. Na początku projektu niezwykle istotne jest więc zidentyfikowanie zagrożeń, a tym samym opracowanie działań awaryjnych. W takim planie powinny się znaleźć kategorie i/lub obszary tych zagrożeń, co pozwoli na bardziej dokładne zabezpieczenie projektu na przyszłość.

Umiejętności komunikacyjne

Jest to jeden z kluczowych elementów dobrego zarządzania. Bez efektywnego przepływu informacji nawet najprostszy projekt może rodzić problemy, niepotrzebnie pochłaniać czas czy marnować budżet. Menedżer powinien zatem cechować się niezbędnymi umiejętnościami komunikacyjnymi, takimi jak:

  • słuchanie - aby żadna z uwag lub trudność w realizacji poszczególnego zadania zgłaszana przez zespół nie umknęła, co w konsekwencji mogłoby prowadzić np. do opóźnień w pracach nad projektem,
  • zadawanie (dodatkowych) pytań - aby upewnić się co do potrzeb i\lub problemów, a tym samym zrozumieć komunikat drugiej strony,
  • przejrzystość wypowiedzi - aby oczekiwania wobec członków zespołu były dla nich czytelne (warto w tym celu je spisać i ubrać w najprostszą formę),
  • posługiwanie się informacją zwrotną - aby druga strona miała świadomość zarówno swoich mocnych, ale także słabych stron w kontekście realizacji zadań (PM musi być także gotowy na otrzymywanie opinii na swój temat od zespołu),
  • wykorzystywanie narzędzi - aby pozostawać na bieżąco w kontakcie, należy wspierać się narzędziami usprawniającymi komunikację. Przykładem może być Slack. Istnieje kilka kluczowych powodów, dla których warto po niego sięgnąć, m.in skrócenie czasu reakcji na wiadomości, które wymagają szybkiej odpowiedzi, możliwość dzielenia się fragmentami kodu w czytelnej formie dzięki snippetom czy opcje integracji z innymi aplikacjami, np. Github, Bitbucket, Jira.

Poznaj usługi naszego dedykowanego zespołu programistów 

Inżynier DevOps

Mówi się, że agencje zajmujące się rozwojem oprogramowania, które nie mają tego specjalisty na pokładzie, już zostały wyprzedzone przez konkurencję. Dlaczego? Inżynier DevOps upewnia się, że produkt software’owy działa 24/7, jest ekonomiczny w utrzymaniu, łatwo się go aktualizuje, pozostaje szybki i radzi sobie z nagłymi skokami aktywności użytkowników.

Rola tego specjalisty oznacza połączenie kompetencji technicznych i nietechnicznych. Sam DevOps to Development oraz Operations, czyli zestaw praktyk skupiających w jednym procesie elementy takie jak rozwój, wdrażanie, utrzymanie i obsługa produktu z zapewnieniem wysokiej jakości.

Obecność DevOpsa w zespole istotnie przyczynia się do:

  • szybszego znajdowania i naprawiania błędów, poprawy jakości oprogramowania oraz skrócenia czasu potrzebnego na sprawdzanie i wydawanie nowych aktualizacji oprogramowania, odbywa się to w ramach praktyki ciągła integracja (Continuous Integration),
  • automatycznego wdrażania wszystkich zmian kodu w środowisku testowym i/lub produkcyjnym odbywa się to w ramach praktyki ciągłe dostarczanie (Continuous Delivery),
  • współtworzenia pojedynczej aplikacji jako zestawu małych usług, zbudowanych wokół konkretnych możliwości biznesowych, odbywa się to w ramach praktyki architektura mikrousług (Microservices),
  • zarządzania serwerami przy użyciu techniki tworzenia kodu, w myśl której infrastrukturę traktuje się w podobny sposób do tego jak kod aplikacji,
  • proaktywnego monitorowania usług poprzez tworzenie alertów w czasie rzeczywistym, czego celem jest zebranie danych i zweryfikowanie, jak wydajność infrastruktury wpływa na wrażenia użytkownika końcowego produktu, odbywa się to w ramach praktyki monitorowanie i rejestrowanie (Monitoring and Logging),
  • ściślejszego dostosowywania się do celów projektów przez innych członków zespołu (marketing, sprzedaż), odbywa się to w ramach praktyki komunikacja i współpraca (Communication and Collaboration).
Przedstawienie przepływu procesu DevOps pomaga lepiej zrozumieć rolę inżyniera DevOps w zespole deweloperskim

Przepływ procesu DevOps. Źródło: Lucidchart

Osoba na tym stanowisku powinna ponadto odznaczać się znajomością:

  • Linux i\lub Windows,
  • tworzenia skryptów,
  • przynajmniej jednego z języków programowania, np. PHP,
  • narzędzi do automatyzacji, np. Jenkins,
  • pracy w chmurze obliczeniowej, np. Amazon Web Services.

DevOps i Agile

Do powyższych praktyk należy dodać również Agile, ponieważ wszelkie działania programistyczne powinny być stale rozwijane i optymalizowane zgodnie ze zmieniającymi się potrzebami. Można powiedzieć, że DevOps rozwija Agile. Największą efektywność osiąga się wtedy, gdy czas i energia nie są marnowane na ręczne etapy pracy, a sprinty techniczne poświęca się na opracowywanie usprawnień.

Jak widać rola DevOpsa wpływa na różne obszary i zespoły w ramach organizacji. Suma jego kompetencji pozwala przyspieszyć tworzenie oprogramowania, skrócić czas wprowadzania go na rynek, obniżyć koszty procesu i ograniczyć występowanie błędów.

Testowanie oprogramowania

Testowanie oprogramowania to techniki służące sprawdzeniu, czy produkt cyfrowy spełnia wymagania techniczne. Proces testowania jest złożony i wielopoziomowy - nie wykonuje go jedna osoba, ale zespół profesjonalistów, w którego skład wchodzi kilka ważnych ról.

Quality Assurance Lead

Do zadań osoby na tym stanowisku należy kontrolowanie wszystkich operacji testowania oprogramowania. Odpowiada ona za: strategię, planowanie zasobów, komunikację wewnętrzną zespołu, szacowanie procesu testowania i nadzorowanie jakości pracy wykonywanej przez zespół. QA Lead prowadzi także komunikację zewnętrzną z klientem lub właścicielem produktu (Product Ownerem) w celu zebrania wymagań testowych dla przyszłego produktu, przekazania ich zespołowi i upewnienia się, że wszyscy je rozumieją.

Test Architect

Analizuje wymagania projektu i opracowywuje strukturę testową. Test Architect powinien mieć doświadczenie zarówno w automatyzacji jak i testowaniu ręcznym, a także szerokie zrozumienie architektury oprogramowania i projektowania systemu. Musi stanowić wsparcie techniczne dla członków zespołu na wszystkich etapach, od tworzenia skryptów po poprawki błędów. Bez wątpienia jego głos powinien być również wyraźny przy ulepszaniu usług.

Quality Assurance Analyst

W tej roli łączy się doświadczenie w testowaniu oprogramowania z doświadczeniem branżowym. Jednak bardziej niż na technicznych szczegółach testowania, osoba na tym stanowisku skupia się na logice biznesowej i zgodności z potrzebami grupy docelowej. QA Analyst blisko współpracuje z Product Ownerem, inżynierami oprogramowania i kierownikami zespołów.

Quality Assurance Engineer

Specjalista QA wykrywa błędy, zanim zrobią to użytkownicy. Podczas testowania aplikacji, inżynier musi przyjrzeć się wydajności, bezpieczeństwu, użyteczności i wyglądowi programu z perspektywy użytkownika końcowego.

Quality Assurance Engineer nie tylko testuje aplikacje w zespole deweloperskim, ale także pracuje nad najlepszymi praktykami programistycznymi

Źródło: The Balance Careers

Specjaliści QA to jednak nie tylko testerzy, których zadaniem jest ocenić, czy zaimplementowane funkcje spełniają wymagania. Te osoby także piszą dokumentację, tworzą przypadki testowe i aktywnie przyczyniają się do ustanawiania najlepszych praktyk programistycznych w projekcie. Ich rola ma kluczowe znaczenie w dostarczaniu wysokiej jakości produktu i spełnianiu wymagań projektu.

Quality Assurance Automation Engineer

QAA pisze testy automatyczne, czyli małe i działające w tle programy, które weryfikują aplikację w taki sposób, aby od razu było wiadomo, co działa niepoprawnie. Testy “end-to-end” symulują zachowanie prawdziwego użytkownika - można powiedzieć, że aplikacja w ten sposób testuje się samodzielnie. Jednak należy pamiętać, że tworzenie testów automatycznych nie jest łatwe, a ponadto wymaga uprzedniej analizy celem oceny korzyści i zagrożeń, wynikających z takiego rozwiązania.

Wykwalifikowany QAA upewni się, że zleceniodawca zaoszczędzi jak najwięcej czasu i pieniędzy na testowaniu/naprawianiu błędów.

Reasumując, zespół kontroli jakości przeanalizuje aplikację i zarekomenduje, które funkcje należy poddać testom automatycznym, a które nie, pamiętając o budżecie i najlepszym zwrocie z inwestycji (ROI - return on investment).

Product Designer

Aby przekształcić wizję produktu w projekty przyjazne dla odbiorców i tworzyć ścieżki zoptymalizowane pod kątem najlepszych doświadczeń użytkownika i najwyższych współczynników konwersji, potrzebny jest Product Designer.

Projektant dba o to, żeby wygląd aplikacji oraz ogólny interfejs były przyjemne dla oka, ale nie jest to jego jedyne zadanie. Product Designer jest obecny przez cały proces rozwoju produkt, od zdefiniowania celów biznesowych i przełożenia ich na funkcjonalne doświadczenia użytkowników, przez analizę, ocenę, aż po ulepszanie tych doświadczeń w czasie.

Dowiedz się więcej o naszych usługach User Experience Design

Product Designer powinien zauważyć każdą zmianę współczynników konwersji i zaproponować takie rozwiązania, aby zbliżyć się do osiągnięcia celów biznesowych. Powinien być również gotowy do poprowadzenia warsztatów projektowych z klientem, których efektem jest stworzenie wizji projektu opartej o punkty widzenia różnych osób.

Zespół deweloperski - podsumowanie

Doświadczony zespół deweloperów jest niezbędny, aby produkt cyfrowy powstał, ale bez wsparcia ze strony osób z innych departamentów, to oprogramowanie nie ma szans zaistnieć w pełni tak, aby wykorzystać jego wszystkie możliwości i zaspokoić potrzeby klienta. Dlatego podejmując współpracę z agencją deweloperską, warto sprawdzić, kto oprócz programistów znajduje się jeszcze w zespole.

W ramach wsparcia dla Drupala utrzymujemy istniejące strony internetowe i rozbudowujemy je o nowe funkcjonalności