Przewiń do treści

Co oznaczają poszczególne stanowiska w branży IT? Co należy do obowiązków poszczególnych specjalistów? Czego oczekują od nich pracodawcy? Część 3

2023-10-30

Część 3: Metodyka Scrum, Product Owner, Produkt Menager, Programista a Software Deweloper, Project Menager, Security Software Developer, Scrum Master, Software Engineer.

W tej części artykułów poświęconych poszczególnym stanowiskom w branży IT omówimy między innymi 2 ściśle związane z metodyką Scrum – Produkt Owner i Scrum Master. Dlatego najpierw musimy wyjaśnić czym jest ta popularna metoda zarządzania projektami IT.

Metodyka Scrum

Metodyka Scrum to metoda zarządzania projektami, która opiera się na trzech filarach: przejrzystości (ang. transparency), adaptacji (ang. adaptation) i inspekcji (ang. inspection), wywodzi się zaś z empiryzmu, a więc założenia, ze wiedza pochodzi z doświadczenia, a decyzje należy podejmować biorąc pod uwagę to, co jest już znane. Pierwszy filar – przejrzystość zakłada, że wszystkie istotne aspekty procesu powinny być dokładnie objaśnione, a osoby odpowiedzialne za realizacje procesu muszą je doskonale rozumieć. Dodatkowo należy ustandaryzować różne części procesu tak, aby można było poddać go kontroli i ocenie. Drugi filar, a więc adaptacja, powstał z założenia, że w przypadku wykrycia nieprawidłowości lub wystąpienia nieprzewidzianego wydarzenia musi istnieć możliwość przeprowadzenia nagłej zmiany podejścia w celu wyeliminowania czynnika zaburzającego proces. Ostatni filar – inspekcja to częste kontrolowanie procesu przez wykwalifikowanego inspektora, tak aby błędy można było zdefiniować na wczesnym etapie lub w celu udoskonalenia procesu. Oczywiście takie kontrole nie mogą jednak zaburzać pracy zespołu Scrum.

W metodyce Scrum zespół projektowy działa w dokładnie określonym cyklu, który przebiega następująco:

Etap Planowania Sprintu (opcjonalne) podzielony najczęściej na określenie rejestru produktowego oraz określenie rejestru zadaniowego. W ramach pierwszego etapu tworzy się obraz efektu końcowego, a gdy ten już powstanie w ramach drugiego ustalany jest priorytet prac. Planowanie Sprintu ma na celu zaprojektowanie funkcjonalnych i niefunkcjonalnych cech produktu, który ma zostać stworzony, tak aby jak najlepiej odpowiadał on wizji klienta, dodatkowo służy on też oczywiście zorganizowaniu pracy całego zespołu.

Sprint to etap kiedy następuje realizacja zadań, a jego ramy czasowe powinny zostać dokładnie zaplanowane w ramach planowania Sprintu (obecnie najczęściej jest to 30 dni). Praca zespołu ma opierać się na współpracy – doradzaniu sobie i wzajemnej pomocy, bo efekt końcowy będzie wspólnym sukcesem lub porażką.

Codzienny Scrum (ang. Daily Scrum) - krótkie spotkanie, odbywające się każdego dnia Sprintu. Ma ono ściśle określoną agendę – Mistrz Scrum zadaje zespołowi kilka konkretnych pytań, a ten udziela na nie odpowiedzi.

Przegląd Sprintu (ang. Sprint Review) to zebranie, które ma miejsce po każdym Sprincie. Jego celem jest omówienie funkcjonalności oraz cech produktu i przebiegu prac.

Retrospektywa Sprintu (ang. Sprint Retrospective) - etap refleksji, gdy wszyscy członkowie zespołu spotykają się aby omówić produkt i organizację pracy i wspólnie dochodzą do pewnych wniosków decydując jakie aspekty projektu można ulepszyć i w jaki sposób.

W skład zespołu Scrum wchodzą: odpowiadający za maksymalizację wartości produktu – Produkt Owner (którego rolę omówimy poniżej), Zespół Deweloperski (ang. Development Team), a więc pracownicy wyspecjalizowani w konkretnych dziedzinach, oraz Mistrz Scrum (ang. Scrum Master), którego zadaniem jest przedstawienie zespołowi założeń metodyki Scrum i przełożenie ich na konkretny projekt i produkt, nad którym zespół ma pracować. Dokładniej stanowisko Scrum Master omówione zostanie w dalszej części tego artykułu.

Product Owner

Product Owner to kluczowa rola w metodyce Scrum – osoba zajmująca to stanowisko nie tylko nadzoruje pracę Zespołu Deweloperskiego i odpowiada za proces tworzenia produktu, ale jest też łącznikiem między zespołem a klientem. W dużym uproszczeniu jego zadaniem jest zmaksymalizowanie wartości produktu, jaki powstanie w efekcie pracy zespołu i zarazem urzeczywistnienie wizji klienta, który zlecił dany projekt. Produkt Owner musi więc świetnie rozumieć jakiego produktu oczekuje klient oraz wiedzieć jakie mają być jego cechy zarówno funkcjonalne jak też niefunkcjonalne, a następnie przekazuje te założenia Zespołowi Deweloperskiemu.

To jednak nie wszystko - pracownik zajmujący to stanowisko powinien brać też pod uwagę cele biznesowe, misję i szerszy kontekst funkcjonowania swojego pracodawcy, musi więc znać najnowsze trendy rynkowe i stale analizować działania konkurencji.

Product Owner nie tylko tworzy, ale też udoskonala wizję produktu, na wszystkich etapach jego powstawania, nadzoruje pracę Zespołu Deweloperskiego, zarządza budżetem i uczestniczy w ceremoniach Scrum. Musi więc posiadać szeroki zakres umiejętności nie tylko technicznych, ale również miękkich. Do najważniejszych cech jakie powinien mieć specjalista pełniący te funkcję należą: zrozumienie biznesu i konkretnego rynku, przynajmniej podstawowa znajomość technologii tworzenia oprogramowania oraz zdolność do analitycznego myślenia. Niezbędne będą też umiejętności komunikatywne, negocjacyjne oraz interpersonalne (aby skutecznie współpracować z różnymi interesariuszami projektu).

Produkt Menager

Stanowisko Product Manager ma w sobie wiele z omówionego przed chwilą Produkt Ownera, ale występuję również poza metodyką Scrum. Menager Produktu to osoba odpowiedzialna za cały cykl życia produktu – od koncepcji aż do wdrożenia i dalszego doskonalenia. Głównym zadaniem Produkt Menagera jest stworzenie projektu spełniającego oczekiwania klientów i przynoszącego jak największe korzyści biznesowe. Specjalista pełniący tę funkcję musi łączyć w sobie wiedzę z zakresu biznesu, technologii oraz doskonałego rozumienia potrzeb klientów.

Umiejętności i kwalifikacje na tym stanowisku są analogiczne jak w przypadku Produkt Ownera, ale Menager Produktu nie musi posiadać rozległej wiedzy o metodyce Scrum.

Programista a Software Deweloper

Stanowisko Programisty i Software Dewelopera w branży IT często są utożsamiane. Rzeczywiście różnice są subtelne i w zależności od wymagań na konkretnym stanowisku mogą być nieznaczące lub zasadnicze. Możemy jednak przyjąć, że programista to osoba tworząca kod niezbędny do funkcjonowania danego oprogramowania, praca Software Dewelopera wykracza natomiast poza samo pisanie kodu – obejmuje też rozwijanie danego programu, nadawanie mu nowych funkcjonalności, nadzorowanie go itp.

Programista

Zasadniczo zadaniem programisty jest tworzenie kodu aby stworzyć, zmienić lub nadać nowe funkcjonalności programom lub aplikacjom w oparciu o dany język programowania (m.in.: Python, Java, JavaScript, C, C++, C#, Visual Basic, PHP, SQL, istnieją ich jednak tysiące). Jest to jednak duże uproszczenie ponieważ oprócz pisania samego kodu programista musi też go optymalizować (usuwać niepotrzebne elementy, upraszczać komendy itp.), a także testować wszelkie wprowadzone rozwiązania i naprawiać ewentualne błędy. W branży IT wyróżnia się wiele specjalizacji związanych z programowaniem jak choćby: programista aplikacji mobilnych, programista gier, programista web czy programista systemowy.

Różnych typów programistów jest więc tyle ile języków programowania i dziedzin, których programowanie dotyczy. Z tego powodu wymagania dotyczące kwalifikacji i umiejętności na tym stanowisku mogą być bardzo różne. Niezbędna jest jednak z pewnością świetna znajomość danego języka programowania (a najlepiej kilku) i doświadczenie w pracy z nim, umiejętności analityczne oraz zdolność logicznego myślenia. Programista musi też być doskonale zorientowany w zakresie tworzenia algorytmów oraz struktur danych. W przypadku większych firm pożądana będzie też umiejętność pracy w zespole.

Software Developer

Software Developer to osoba, która projektuje, koduje i wdraża projekty przy zastosowaniu danego języka programowania. Debuguje (z ang. Debugging) też projekty, a więc eliminuje pojawiąjące się w nich błędy, aby zapewnić ich poprawne funkcjonowanie. Specjalista na tym stanowisku często musi współpracować z innymi zespołami i udzielać im wsparcia oraz dostarczać niezbędnych informacji. Ponad to powinien znać misje i cele biznesowych firmy, w której pracuje oraz umieć je przełożyć na wymagania konkretnego projektu.

Często można spotkać się z podziałem tego stanowiska na Junior Software Developera, Software Developera oraz Senior Software Developera. Wynika to z prostej ścieżki kariery: Junior Software Developer przeważnie posiada podstawową wiedzę techniczną, ale dopiero zdobywa doświadczenie w pracy nad tworzeniem oprogramowania przez co wykonuje mniej skomplikowane zadania, a jego działania nadzorowane są przez bardziej doświadczonego specjalistę, Software Developer (Regular Software Developer) posiada wystarczające umiejętności aby pracować samodzielnie nad bardziej złożonymi zadaniami a Senior Software Developer, jako doświadczony specjalista, nie tylko pracuje całkowicie samodzielnie, ale często pełni też rolę mentora dla Juniorów i pomaga im rozwijać umiejętności poprzez odpowiednie przekazywanie wiedzy.

Oprócz kwalifikacji niezbędnych dla stanowiska Programisty osoba ubiegająca się o posadę Software Developera powinna rozumieć zarówno dany rynek i konkretny biznes, jak też technologię, z którą pracuje. Dodatkowo niezbędne mogą być dobrze rozwinięte umiejętności interpersonalne, aby skutecznie współpracować z różnymi interesariuszami projektu. Znajomość języka angielskiego, oraz posiadanie certyfikatów potwierdzających znajomość danych języków programowania lub innych narzędzi z pewnością będzie dodatkowym atutem dla kandydata na to stanowisko.

Project Menager

Project Menager odpowiada za planowanie, realizację i zamykanie projektów tak, aby jego odbyło się to w ramach budżetu i określonych ram czasowych, a efekt końcowy spełniał wymagania interesariuszy. Osoby zajmujące to stanowisko definiują założenia projektu, kierują zespołami, które go wdrażają i pełnią funkcję łącznika między interesariuszami a zespołem.

Rola Project Menagera wymaga zróżnicowanego zestawu cech i umiejętności, najważniejsze z nich to: zdolności przywódcze, umiejętność świetnej organizacji pracy zarówno swojej jak też całego zespołu, zdolność szybkiego i skutecznego rozwiązywania problemów i minimalizowania strat, a także zapewnienie zespołowi i wszystkim interesariuszom odpowiedniej motywacji i utrzymanie jej przez cały czas trwania projektu.

Security Software Developer

Jedną ze szczególnych specjalizacji wśród Developerów jest Security Software Developer. Jest to specjalista, który tworzy, wdraża i stale doskonali programy zorientowane na bezpieczeństwo. Funkcja ta wymaga połączenia wiedzy technicznej z umiejętnym przeprowadzeniem analizy zagrożeń. Jest to branża niezwykle dynamiczna, Security Software Developer musi więc stale monitorować zarówno jakie są najnowsze trendy w zakresie zapewnienia bezpieczeństwa danego projektu, jak też znać aktualną listę niebezpieczeństw, jakie mogą mu zagrozić.

Security Software Developer oprócz zestawu kwalifikacji niezbędnych na stanowisku Developera, musi też mieć doświadczenie w pracy nad bezpieczeństwem oprogramowania i doskonałe posługiwać się językiem angielskim.

Scrum Master

Scrum Master to kolejne stanowisko w branży IT, ściśle związane z metodyką Scrum, którą omówiliśmy na wstępie. Jego rola polega na przełożeniu założeń Scrum na konkretny projekt, a następnie przekazanie tej wiedzy Zespołowi Deweloperskiemu i pomaganie mu w realizowaniu założeń metodyki Scrum. Specjalista na tym stanowisku jest odpowiedzialny za koordynacje projektu oraz zarządzanie całym zespołem projektowym, tak aby był on odpowiednio zmotywowany, zaangażowany i skoncentrowany. Scrum Master moderuje spotkania zespołu Scrum, wspiera Product Ownera oraz Zespół Deweloperski na wszystkich etapach tworzenia produktu lub realizacji projektu, pomaga usuwać napotkane przeszkody oraz rozwijać produkt. Miarą jego efektywności jest końcowy rezultat pracy zespołu.

Wymagania stawiane przez pracodawców Scrum Masterom mogą być różne w zależności od branży, wielkości firmy oraz założeń konkretnego projektu, ale osoba ubiegająca się o to stanowisko musi świetnie orientować się w metodyce Scrum, posiadać doświadczenie w pracy na podobnym stanowisku, znać język angielski w zakresie umożliwiającym swobodną komunikację, a także posiadać umiejętności przywódcze, organizacyjne i interpersonalne. Dodatkowo niezbędne może okazać się posiadanie pewnych certyfikatów (głównie z zakresu znajomości metodyki Scrum) oraz umiejętności technicznych (pracodawcy mogą oczekiwać od Scrum Mastera znajomości narzędzi i technologii wykorzystywanych w danym projekcie ).

Software Engineer

Software Engineer to inżynier który stosuje zasady inżynierii do projektowania, tworzenia, testowania i utrzymywania oprogramowania. Co odróżnia go od Software Dewelopera? Choć zakres zadań i kompetencji na tych stanowiskach może być bardzo podobny istnieją pewna zasadnicze różnice. Software Developer przeważnie jest wyspecjalizowany w pewnym obszarze – na przykład w tworzeniu aplikacji mobilnych, gier, czy programów do obróbki graficznej. Software Engineer natomiast pracuje na większą skalę – to biegły programista, który jest w stanie zarządzać złożonym systemem. Jest on w pewnym stopniu software deweloperami, bo potrafi wykonywać pracę wchodzącą w zakres tego stanowiska przynajmniej w ogólnym zarysie, ale jego celem jest tworzenie i nadzorowanie systemu jako całości. Najprościej rzecz ujmując Software Developer tworzy kod w oparciu o istniejące narzędzia, podczas gdy Software Engineer często musi takie narzędzia tworzyć samodzielnie. Inna różnica polega na tym, że Software developer często pracuje samodzielnie lub jest częścią zespołu, a software engineer często pełni w takim zespole rolę lidera lub konsultanta.

Również w tym przypadku ścieżka kariery przebiega przeważnie od Junior Software Engineera do Senior Software Engineera w zależności od posiadanego doświadczenia w pracy na tym stanowisku.