IT to nie tylko programowanie, czyli kilka słów o stanowiskach i specjalizacjach
Programowanie to prawdopodobnie najbardziej znany i najbardziej modny kierunek w branży IT. Jednak jest to tylko jedna z wielu specjalizacji, co więcej samo „programowanie” to bardzo ogólne pojęcie, istnieje bowiem w jego obrębie wiele różnych technologii i ścieżek rozwoju. Poznaj kilka popularnych stanowisk w IT i przekonaj się, czy któreś z nich przemawia do Ciebie i pasuje do Twoich aspiracji i predyspozycji!
Programista / developer
Programiści mogą specjalizować się we frontendzie (warstwie stron i aplikacji internetowych widocznej dla użytkowników), w backendzie (warstwie, która odpowiada za logikę działania aplikacji) lub być wszechstronnymi specjalistami od obu, czyli tzw. fullstackami (co wymaga szerszego wachlarza umiejętności, zwykle specjaliści fullstack mają za sobą wcześniejsze doświadczenie w węższej specjalizacji). Ponadto każdy programista specjalizuje się w określonej technologii lub języku programowania, przykładowo programiści backendu mogą programować w Javie, C# (platforma .NET), Pythonie… Ciekawy kierunek to technologie low code i no code – czyli takie, w których buduje się aplikacje na bazie gotowych prefabrykatów, a zadaniem programisty jest odpowiednie ich połączenie, skonfigurowanie oraz dostosowanie kodu do potrzeb. Przykładowe platformy to Salesforce (system CRM, czyli służący do zarządzania relacji z klientami) albo WordPress (tworzenie stron internetowych).
Oprócz samego pisania kodu programiści są zaangażowani w wiele innych czynności, takich jak omawianie i precyzowanie wymagań i projektów oprogramowania z całym zespołem, analiza wymagań i odpowiednie projektowanie kodu albo tworzenie dokumentacji technicznej. W przypadku wykrycia w oprogramowaniu defektów programiści zajmują się tzw. debugowaniem, czyli poszukiwaniem przyczyn awarii i usuwaniem ich. Samo pisanie kodu to jedynie część ich pracy!
Jak widzisz, trudno jest jednoznacznie opisać stanowisko „programista”, ponieważ jest to nazwa określająca mnóstwo różnorodnych specjalizacji. Cecha wspólna? Odpowiedzialność za development, czyli tworzenie kodu oprogramowania.
Tester / QA
Testerzy to osoby odpowiadające za weryfikację tego, czy oprogramowanie działa zgodnie z wymaganiami i odpowiedzialne za wykrywanie defektów. Zapewnianie jakości, czyli QA (Quality Assurance) to szersze pojęcie – specjaliści QA odpowiadają nie tylko za prostą weryfikację, ale też między innymi za jakość procesów w zespole i za proponowanie ulepszeń. W praktyce, na przykład w ofertach pracy, pojęcia tester i QA są jednak często mylone i używane zamiennie.
Testerzy oraz inżynierowie zapewniania jakości korzystają w swojej pracy z podstaw testowania sklasyfikowanych i opisanych przez organizację ISTQB. A jak wygląda dzień testera, jakie obowiązki wykonuje się na tym stanowisku? Oprócz brania udziału w spotkaniach i w innych czynnościach wspólnych dla całego zespołu, testerzy zajmują się przykładowo projektowaniem i wykonywaniem przypadków testowych, zgłaszaniem wykrytych defektów, ponownym testowaniem (retestowaniem) naprawionych defektów, a w przypadku testerów automatyzujących również projektowaniem, pisaniem i utrzymywaniem kodu testów automatycznych. W testingu istnieje jednak wiele różnych specjalizacji, a w zależności od firmy i projektu praca testera lub specjalisty QA może wyglądać bardzo różnie. Niektórzy testerzy mogą być odpowiedzialni za bardziej niskopoziomowe testy (przykładowo integracji poszczególnych komponentów systemu) wymagające technicznej wiedzy, inni za testy akceptacyjne wymagające wiedzy biznesowej; niektórzy testerzy zajmują się wykonywaniem testów manualnych, inni pracują jako programiści testów automatycznych i większość ich pracy polega na pracy z kodem, jeszcze inni są wszechstronnymi specjalistami, zajmującymi się obiema rzeczami.
DevOps
DevOps to metodyka organizowania procesów w projektach IT (z ang. development and operations), z której wywodzi się osobna rola, obecna w niektórych projektach. Zadania DevOpsów wiążą się między innymi z przygotowywaniem infrastruktury systemów i monitorowaniem jej stanu, wszechobecną automatyzacją, częstymi wdrożeniami oprogramowania (CI/CD), czy też z wdrażaniem rozwiązań chmurowych lub związanych z konteneryzacją. Specjalista DevOps powinien mieć solidną wiedzę techniczną, umiejętność tworzenia skryptów i znajomość konkretnych narzędzi obecnych w danym projekcie, np. platformy chmurowej Azure.
Projektant / designer (UI/UX)
Projektowanie UI (User Interface) i UX (User Experience) to dwa odrębne obszary, którymi jednak często zajmuje się w danym projekcie jeden specjalista. Podczas gdy w UI designie chodzi o aspekty graficzne i estetyczne interfejsu użytkownika (czyli po prostu warstwy wizualnej systemu informatycznego), UX design skupia się na potrzebach użytkowników i poprawianiu efektywności w korzystaniu z tego interfejsu. Specjaliści UX przeprowadzają specjalne sesje, podczas których udostępniają przyszłym użytkownikom prototypy aplikacji, obserwują sposób korzystania z nich i opracowują najbardziej optymalne projekty interfejsu. Ich rolą jest zapewnienie sprawnej, płynnej interakcji użytkowników z oprogramowaniem. Dostarczają projekty (tzw. makiety) interfejsów, które są następnie podstawą do pracy dla programistów frontendu i dla testerów.
Analityk biznesowy
Analityk biznesowy posiada specjalistyczną wiedzę domenową dotyczącą branży, dla jakiej tworzone jest oprogramowanie. To stanowisko, na którym szczególnie dobrze mogą odnaleźć się osoby bez wcześniejszego doświadczenia w IT, ale za to z doświadczeniem lub wykształceniem związanym z daną branżą. Analitycy odpowiadają za formułowanie potrzeb biznesowych, na które powinno odpowiadać oprogramowanie, za przekładanie tych wymagań na precyzyjny i jasny język i za sporządzanie dokumentacji, która następnie jest podstawą pracy dla programistów i testerów. Biorą udział w wielu spotkaniach – zarówno z przedstawicielami biznesu, czyli użytkownikami końcowymi, jak i z innymi członkami zespołu deweloperskiego, czyli programistami, projektantami, testerami… Analitycy wykorzystują także umiejętności związane z projektowaniem procesów (zwłaszcza w projektach, w których brakuje projektantów UX).
Scrum Master
Stanowisko charakterystyczne dla zespołów scrumowych. Scrum Master jest pewnego rodzaju facylitatorem pracy zespołu. Czuwa nad tym, żeby zespół dobrze rozumiał zasady Scruma i mógł stosować je w praktyce. Ma także za zadanie pomagać zespołowi w usuwaniu przeszkód w pracy. Jest organizatorem spotkań, tak zwanych ceremonii scrumowych. Czasem Scrum Master to osobne stanowisko, czasem to rola przyjmowana dodatkowo przez jedną z osób w zespole.
Narzędzia potrzebne na różnych stanowiskach
Być może zastanawiasz się jakie narzędzia trzeba poznać, żeby pracować na określonym stanowisku? Część narzędzi jest wspólna dla wszystkich wymienionych stanowisk i dla prawie wszystkich specjalizacji istniejących w IT. Są to aplikacje takie jak Jira (aplikacja do tworzenia, przechowywania i zarządzania zgłoszeniami defektów, zadaniami i wymaganiami biznesowymi) albo Confluence (aplikacja typu wiki, służąca do przechowywania i pracy nad dokumentacją). Niektóre narzędzia lub grupy narzędzi są istotne dla kilku różnych stanowisk. Przykładowo umiejętność korzystania z zestawu narzędzi programistycznych takich jak wybrane IDE (edytor kodu, przykładowo Visual Studio, Eclipse lub Rider), Git (system kontroli wersji) oraz wybrane repozytorium kodu (miejsce do przechowywania kodu projektu, przykładowo Bitbucket lub GitHub) jest potrzebna programistom, ale też na przykład testerom automatyzującym. Narzędzia do konteneryzacji (Docker, Kubernetes) to specjalność DevOpsów, ale mogą być używane także przez programistów i testerów. Niektóre z narzędzi są natomiast zaprojektowane ściśle dla określonych specjalistów. Testerzy mogą zarządzać przypadkami testowymi dzięki dodatkom do Jiry (takim jak Zephyr lub TestFlo) albo dzięki osobnym aplikacjom (takim jak TestRail lub TestLink). Projektanci przygotowują makiety interfejsów w narzędziach takich jak Figma. Wreszcie istnieją tzw. kombajny – aplikacje, które konsolidują wiele funkcji naraz. Azure DevOps to narzędzie zawierające jednocześnie możliwość tworzenia wiki, zarządzania wymaganiami, przypadkami testowymi i defektami, repozytorium kodu, a także kilka innych funkcji.
Znajdź swoją drogę
Powyższa lista stanowisk i narzędzi nie jest wyczerpująca, a w obrębie jednego stanowiska może występować wiele specjalizacji. Obowiązki na danym stanowisku mogą się różnić w zależności od firmy i projektu. Jak łatwo zauważyć, w IT istnieje wiele ścieżek rozwoju, dostępnych zarówno dla osób zainteresowanych zagadnieniami technicznymi, jak i bardziej miękkimi. Zanim wybierze się swoją drogę przebranżowienia warto pogłębić wiedzę na temat różnych obszarów i zdecydować się na ten, który najbardziej pasuje do naszych zainteresowań, predyspozycji i wcześniejszego doświadczenia.