Skip to content

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ęść 2

2023-09-30

Część 2 - Database Developer, Data Scientist, Desktop support professional/IT Support Specialist , DevOps Engeenier, Front-end Developer/Frontend Developer, Inżynier przetwarzania języka naturalnego, Inżynier uczenia maszynowego, Java Developer, Mobile Application Developer, Network Engineer

Database Developer

Database developer, nazywany też programistą baz danych jest odpowiedzialny za tworzenie baz danych, oprogramowania niezbędnego do ich obsługi, a także kodów umożliwiających innym aplikacjom działanie na zawartych w nich danych. Oczywiście jego rola nie kończy się na projektowaniu baz danych i rozwiązań niezbędnych do ich obsługi - do jego obowiązków należy też zarządzanie nimi i ich doskonalenie.

Database developer powinien posiadać umiejętności techniczne umożliwiające pracę z różnymi systemami baz danych (jak SQL i NoSQL) oraz usługami chmurowymi. Osoba na takim stanowisku powinna mieć doskonałą znajomość języka SQL, znać języki programowania wymagane w danej pracy (najczęściej Java, C++, C# czy Python) i rozumieć systemy operacyjne jak Windows czy Linux. Z pewnością dodatkowym atutem będzie umiejętność rozwiązywania problemów, organizacji i zarządzania czasem, świetne zdolności komunikacyjne oraz bardzo rozwinięta kreatywność.

Data Scientist

Data Scientist to specjalizacja łącząca w sobie zakres obowiązków Inżyniera ds. Danych i Analityka Danych. Osoba na tym stanowisku zajmuje się zbieraniem, przetwarzaniem i analizowaniem danych, a często także przedstawianiem ich w odpowiedniej formie graficznej. Wykorzystuje przy tym techniki uczenia maszynowego i algorytmy samouczące.

Data Science to przeważnie osoba niezwykle wszechstronna, posiadająca kompetencje z wielu różnych dziedzin. Powinna znać co najmniej podstawy programowania (znajomość języków programowania jak SQL, Python, R czy SAS, może być niezbędna podczas analizy i zarządzania dużymi ilościami danych), świetnie orientować się w technologii Big Data, posiadać doświadczenie w zakresie analizowania danych, umiejętności komunikacyjne oraz rozumieć biznesowy punkt widzenia. Przydatna będzie też znajomość zagadnień związanych ze statystyką oraz przynajmniej podstawowe umiejętności graficzne.

Desktop support professional/IT Support Specialist

Desktop Support Specialist lub też IT Support Specialist to specjalista IT, którego zadaniem jest utrzymanie w dobrej kondycji sprzętu komputerowego i oprogramowania. Osoba zajmująca to stanowisko przede wszystkim udziela wsparcia technicznego zarówno klientom, jak też współpracownikom, odpowiada za instalowanie nowych aplikacji i programów i zarządza wszelakimi aktualizacjami. Do jego zadań może też należeć ocenianie potrzeb użytkownika i rekomendowanie konkretnych rozwiązań technicznych oraz dokumentowanie procedur wsparcia technicznego (a więc na przykład tworzenie instrukcji postępowania).

Desktop Support Specjalist musi posiadać dużą wiedzę i doświadczenie, aby sprawnie diagnozować i rozwiązywać problemy techniczne związane z systemami sprzętowymi i oprogramowaniem. Niezbędne będą również doskonałe umiejętności komunikacyjne, aby sprawnie wytłumaczyć klientom i współpracownikom co należy zrobić (często na odległość z wykorzystaniem telefonu lub chatu). Wymagane może być też odbycie dodatkowych szkoleń i uzyskanie certyfikatów.

DevOps Engineer

DevOps Engineer odpowiada najczęściej za integracje pracy developerów, programujących pewne aplikacje lub inne rozwiązania, oraz administratorów, którzy muszą utrzymać środowisko, w jakim te aplikacje czy rozwiązania mają funkcjonować. Jego działania mają zaowocować szybkim i efektywnym wprowadzaniem zmian w oprogramowaniu, a do jego najważniejszych zadać należy monitorowanie i analizowanie danych ze wszystkich środowisk w organizacji i ich optymalizowanie. DevOps Engineer tworzy więc infrastruktury, przygotowuje pracę dla programistów i testerów i zasadniczo pomaga stworzyć konkretny projekt przy uwzględnieniu celów całej organizacji.

Ktoś, kto chce pracować jako DevOps Engineer powinien posiadać rozległą wiedzę o programowaniu, działaniu systemów operacyjnych, testowaniu oprogramowania i administrowaniu serwerami. Ponad to osoba na tym stanowisku musi znać wszelkie najnowsze trendy z zakresu rozwoju technologii, mieć świetną organizację pracy, doskonale zarządzać czasem i potrafić pracować w zespole.

Front-end developer

Front-end developer nazywany też programistą skomplikowanych interfejsów użytkownika to w dużym skrócie osoba tworząca część strony internetowej lub aplikacji, która jest widoczna dla użytkownika. Najczęściej pracuje w oparciu o wytyczne uzyskane od webdesignera, który projektuje wygląd stron i aplikacji. Zadaniem Front-end developera jest wcielenie takich projektów w życie przy równoczesnym uwzględnieniu potrzeb i oczekiwań użytkownika. Tworzone przez niego interfejsy muszą być więc zarówno atrakcyjne wizualnie jak też funkcjonalne, intuicyjne i proste w obsłudze. Do zadań Front-end developera należy również testowanie i rozwiązywanie problemów związanych z interfejsem użytkownika. Praca wykonywana przez specjalistę o takim tytule powinna prowadzić do optymalizacji wydajności strony internetowej lub aplikacji mobilnej.

Front-end developerzy najczęściej pracują na językach takich jak HTML, CSS czy JavaScript, osoba na takim stanowisku musi więc doskonale się w nich orientować. Potencjalni pracodawcy od Front-end developera oczekują przede wszystkim doświadczenia w tworzeniu stron internetowych i/lub aplikacji mobilnych, zrozumienia zasad projektowania responsywnego (Responsive Design), znajomości Frameworków JavaScript takich jak React, Angular lub Vue.js, a także umiejętności posługiwania się narzędziami developerskimi dostępnymi w przeglądarkach internetowych (jak np. Google Chrome DevTools).

Inżynier przetwarzania języka naturalnego

NLP Engineer, a więc inżynier przetwarzania języka naturalnego, to specjalista, który tworzy i rozwija modele przetwarzania i analizy mowy oraz tekstu pisanego. Jego zadaniem jest więc sprawić aby dany program (jak na przykład wyszukiwarka internetowa, asystent głosowy, Chatbot itp.) rozumiał ludzki język, a tym samym wpisywane lub wypowiadane przez użytkowników polecenia i pytania. Wbrew pozorom jego działania nie muszą skupiać się wyłącznie na rozpoznawaniu mowy, najczęściej jest to tylko pierwszy krok do stworzenia bardziej skomplikowanych algorytmów. Tego typu profesjonaliści oprócz systemów interpretujących mowę ludzką, projektują też takie przeprowadzające analizę sentymentu, tłumaczące duże ilości danych na inne języki lub modele generatywne.

Przetwarzanie języka naturalnego (NLP) łączy w sobie elementy informatyki, sztucznej inteligencji i lingwistyki więc inżynierzy ds. przetwarzania języka muszą posiadać bardzo wszechstronne kompetencje. Przede wszystkim jednak muszą rozumieć różne koncepcje związane z przetwarzaniem języka naturalnego oraz posiadać bardzo rozbudowane umiejętności programowania (przynajmniej z zakresu takich języków jak Python, C++ czy Java). Niezbędne na tym stanowisku będzie analityczne myślenie i zrozumienie statystyki i analizy danych (ponieważ NLP engineer często musi pracować na ogromnych zbiorach danych), a dodatkowym atutem z pewnością będzie znajomość narzędzi i bibliotek NPL (jak NLTK, spaCy, HuggingFace, PyTorch Lightning czy Gensim), algorytmów uczenia maszynowego i frameworków deep learning (jak TensorFlow, Keras czy PyTorch).

Inżynier uczenia maszynowego/ Machine learning engineer

Inżynier uczenia maszynowego, a więc Machine learning engineer to specjalista którego praca polega na projektowaniu, wdrażaniu i optymalizacji modeli uczenia maszynowego. Jego główne zadanie to wykrywanie wzorców i przewidywanie wyników działań wykonywanych na pewnych określonych bazach danych, a następnie stworzenie algorytmu który będzie w stanie zrobić to samo. Wykorzystuje przy tym techniki takie jak nadzorowana nauka, uczenie się bez nadzoru czy głęboka nauka. Oczywiście to duże uogólnienie ponieważ w praktyce inżynier uczenia maszynowego najpierw musi wykonać szereg innych czynności aby surowe dane można było przekształcić w odpowiedni format i wyodrębnić z nich istotne informacje. Po stworzeniu algorytmu czy programu Machine learning engineer monitoruje też jego działanie i ocenia wydajność, a następnie optymalizuje dostrajając hiperparametry i stosując techniki takie jak weryfikacja krzyżowa i przeszukiwanie siatki. Dodatkowo Inżynierowie uczenia maszynowego muszą zadbać o to, aby ich modele mogły obsługiwać dane na dużą skalę i aby można je było łatwo zintegrować ze środowiskami produkcyjnymi.

Wszystko to sprawia, że Machine learning engineer musi mieć bardzo rozbudowany wachlarz umiejętności od programowania w przynajmniej jednym języku (najczęściej Python, Java lub C++), znajomości narzędzi i bibliotek NLP (jak NLTK, spaCy,HuggingFace, PyTorch Lightning czy Gensim) oraz algorytmów uczenia maszynowego, przez rozumienie statystyki i posiadanie wiedzy z zakresu analizy danych, komunikatywność i umiejętność pracy w zespole. Przydatne może być też doświadczenie w pracy z platformami chmurowymi, technologią konteneryzacji i interfejsami API do wdrażania modeli i zarządzania nimi, a w przypadku inżynierów tworzących bardziej skomplikowane modele także znajomość frameworków deep learning (jak TensorFlow, Keras czy PyTorch).

Java Developer

Java Developer to programista, który tworzy, wdraża, nadzoruje, rozwija i zarządza aplikacjami i oprogramowaniem opartym na języku Java, a więc jednym z najpopularniejszych języków programowania. Najczęściej Java Developerzy zajmują się projektowaniem oprogramowania, technologią gier czy też tworzeniem aplikacji internetowych i mobilnych (w tym często aplikacji wieloplatformowych). Język Java jest często wykorzystywany w projektach dotyczących Androida, chmury, środowiska uczenia maszynowego czy Internetu Rzeczy, więc programiści którzy się w nim specjalizują z pewnością nie narzekają na brak opcji zatrudnienia.

Od Java Developera pracodawcy oczekiwać będą doskonałej znajomości języka Java i doświadczenia w programowaniu w nim oraz umiejętności wykorzystania go w różnorodnych projektach. Dobry specjalista zajmujący to stanowisko powinien stale uaktualniać swoją wiedzę dzięki kursom, certyfikatom, uczestniczeniu w konferencjach, zapoznawaniu się z odpowiednim contentem branżowym itp.

Mobile Application Developer

Mobile Application Developer, a więc twórca aplikacji mobilnych to specjalista, który zajmuje się programowaniem oraz zarządzaniem aplikacjami mobilnymi na platformy takie jak Android (Google), iOS (Apple) czy Windows Phone (Microsoft). Najczęściej jego zadaniem jest stworzenie programu na podstawie projektu przygotowanego przez inne działy firmy.

Specjalista od tworzenia aplikacji mobilnych powinien umieć programować w języku Java, Kotlin, Swift lub Objective-C, a także posiadać umiejętności projektowania prostych w obsłudze i intuicyjnych interfejsów użytkownika. Istotny jest też sam aspekt wizualny - aplikacje powinny posiadać atrakcyjny wygląd, dostosowany do wytycznych danego projektu, stąd niezbędne będą też choć podstawowe umiejętności graficzne. Dodatkowo ponieważ rynek Mobile jest niezwykle dynamiczny osoba na tym stanowisku musi stale śledzić co dzieje się na rynku i dokształcać w zakresie nowych rozwiązań.

Network Engineer

Inżynier sieci, a więc Network Engineer to osoba odpowiedzialna za tworzenie i zarządzanie infrastrukturą sieciową w danej firmie. Do jego głównych obowiązków należy projektowanie, budowanie, monitorowanie i doskonalenie infrastruktury sieciowej, sprawdzanie czy sieć komputerowa działa prawidłowo, zapewnienie połączenia internetowego wszystkim urządzeniom oraz ochrona danych przechowywanych w sieci przed nieautoryzowanym dostępem. Dodatkowo to właśnie na jego barkach będzie rozwiązywanie wszelkich problemów związanych z połączeniami sieciowymi oraz wprowadzanie nowych rozwiązań i technologii. Network Engineer musi również potrafić dostosować dany system sieciowy do wymagań konkretnego klienta.

Często wymaga się aby Network Engineerem, posiadał wykształcenie w dziedzinie informatyki lub kierunkach technicznych, musi ponad to mieć rozległą znajomość sieci komputerowych i ich działania w różnych środowiskach, narzędzi do wirtualizacji sieci takich ( jak VMWare i Hyper-V) a także doświadczenie w konfiguracji sprzętów sieciowych (jak routery switche i firewalle) oraz orientować się w tematyce protokołów sieciowych (jak TCP/IP, OSPF, BGP czy MPLS). Oczywiście do rozwiązywania problemów niezbędne będą zdolności analityczne i znajomość metod analizy sieci. Z pewnością mile widziana będzie też dobra komunikatywność ponieważ Network Engineer współpracuje zarówno z finalnym klientem jak też wszystkimi pracownikami i partnerami danej organizacji.