Jeśli trafiłeś na ten artykuł, to prawdopodobnie pierwsze doświadczenie z branżą IT masz już za sobą. Wiesz, w jakich technologiach czujesz się najlepiej, znasz stan swojej wiedzy i jesteś już prawie stuprocentowo zdecydowany, w jakim kierunku chciałbyś się rozwijać. Na portalach z ogłoszeniami oraz stronach pracodawców znajdziesz oferty, które mogą wprowadzić trochę zamieszania w umysł młodego programisty. Co kryje się pod poszczególnymi pojęciami? Oczywiście definicje mogą nieznacznie różnić się w poszczególnych firmach, jednak po przeczytaniu poniższego „poradnika” nie powinieneś już mieć problemu z odróżnieniem obowiązków Full Stack Developera od kompetencji Front-Endowca. Od razu zachęcamy do zapozniania się z artykułem "Dobre praktyki dot. zgłaszania błędów w projektach webowych (i nie tylko)".
Web Developer
Web Developer odpowiedzialny jest za stworzenie kodu serwisu w danym języku programowania – po stronie serwera. Przeczytaj jakiej są najpopularniejsze języki programowania. Chodzi tu głównie o poprawną wymianę danych pomiędzy serwisem a odwiedzającymi. WebDev może być również odpowiedzialny za modyfikacje i rozwój już istniejących rozwiązań opartych na Frameworkach, CMF-ach i CMS-ach. Na tym stanowisku najczęściej dochodzić będzie do współpracy z Web Designerami, Specialistami UX oraz Architektem Serwisu.
Osobom chcącym zostać WebDevem przydadzą się nie tylko kompetencje techniczne, ale również interesujące portfolio.
DevOps Engineer
To stanowisko to właściwie połączenie dwóch funkcji: „development” oraz „operations”, czyli rozwoju i operacji. W praktyce chodzi oczywiście o stanowisko łączące rozwój oprogramowania i utrzymywania środowisk, w których działają. DevOpsi współpracują zarówno z programistami jak i testerami. Ich obowiązkiem jest również administracja systemu operacyjnego, konfigurowanie i utrzymywanie środowisk developerskich, bieżące utrzymanie systemu, automatyzacja powtarzanych czynności, kontrola wersji oprogramowania… Tak po krótce :)
Front-end Developer
Praca Front-end’owca opiera się w przeważającej mierze na znajomości JavaScript, CSS, HTML oraz dedykowanych JS frameworków. Taki programista troszczy się przede wszystkim o to, jak produkt prezentuje się użytkownikowi od strony interfejsu oraz jak użytkownik widzi zaprojektowane funkcjonalności. Służy do tego między innymi komunikacja z API, które wystawiane jest przez programistów back-endu w celu pobrania z niego danych.
Back-end Developer
Programista na takim stanowisku powinien być zaznajomiony z którąś z technologii jak: Java, .Net, C++, Ruby, czy PHP itd. Jego (lub jej J) obowiązkami będzie zakodowanie serwisu, aplikacji, systemu – od strony serwera, stworzenie API, organizacja komunikacji z bazami danych. Czasem oczywiście może zdarzyć się, że kompetencje front-endowca i back-endowca będą się przenikać. Jeśli ktoś świetnie odnajduje się po „obu stronach mocy”, może się okazać, że pracuje już właściwie jako Full Stack :)
Full Stack Developer
Full Stack Developer stanowi połączenie front- i back-end developera, powinien potrafić zakodować system / aplikację po stronie serwera w danej technologii jak również zadbać o odpowiednią wizualizację interfejsu, a także funkcjonalności po stronie użytkownika. Określanie się mianem Full Stacka nie oznacza zawsze równej biegłości w zagadnieniach front i back-endowych, ale z całą pewnością taki developer powinien potrafić poradzić sobie samodzielnie z oboma aspektami budowy produktu.
Architekt oprogramowania
Często wydaje się, że architekt oprogramowania to ostatni szczebel na drabinie zawodowej programisty. Architekt jest osobą, która akceptuje finalnie wszelkie kluczowe techniczne decyzje związane z produktem, jest to więc funkcja bardzo odpowiedzialna. Wybór technologii, zaprojektowanie rozwiązanie, czuwanie nad jakością kodu i całego projektu oraz dzielenie się wiedzą z programistami to główne zadania architekta. Często podlega mu zespół lub kilka zespołów programistycznych. Architekt najczęściej nie zajmuje się już programowaniem.
Software Engineer
Zadania inżyniera oprogramowania to m.in. analiza wymagań zleconych zmian w kodzie, lecz także projektowanie, implementacja i wdrożenie zamówionych funkcjonalności oraz tworzenie dokumentacji. Kluczowa w tym stanowisku jest możliwość projektowania rozwiązań i tu znajduje się różnica w obowiązkach osoby zajmujących to stanowisko od pracy "zwykłego" programisty.
Analityk
Jest osobą ściśle współpracującą z klientem – bardziej pod względem biznesowym niż technicznym. Stara się zebrać wszystkie potrzeby i niezbędne funkcjonalności dla strony zamawiającej, a następnie przełożyć je na język techniczny i przekazać programistom. O pracy analityka biznesowego możecie przeczytać w jednym z naszych poprzednich artykułów.
Inżynier systemowy
Rolą inżyniera systemowego jest opracowywanie systemów i sieci informatycznych, a następnie ich wdrażanie oraz administracja wraz z instalowaniem i modyfikowaniem baz danych. Podczas pracy na tym stanowisku należy być również przygotowanym na tworzenie dokumentacji technicznej, testowej oraz powykonawczej projektów.
Inżynier kontroli jakości oprogramowania / Tester
Zawód testera oprogramowania komputerowego polega na weryfikacji prawidłowego działania systemów, oprogramowania i przeprowadzaniu testów funkcjonalności sprzętu IT (najczęściej w konkretnej firmie). Testowanie oprogramowania jest ściśle powiązane z procesami jego wytwarzania. Jednak testowanie oprogramowania komputerowego polega nie tylko na weryfikacji prawidłowego działania systemów, ale także, a właściwie przede wszystkim, na odkrywaniu błędów i usterek oraz powodów ich wystąpienia. Efektem takich tekstów jest tworzenie nowego oprogramowania oraz ulepszanie już istniejącego.
Mam nadzieję, że po przeczytaniu tego krótkiego wyjaśnienia nagłówki ogłoszeń o pracę nie będą już stanowiły dla Ciebie żadnej zagadki. Oczywiście, tak jak wspomniałam początkowo – w poszczególnych firmach zakres obowiązków na danym stanowisku może się nieznacznie różnić.
Jakie jeszcze nazwy stanowisk w branży IT brzmią dla Ciebie niejasno? A może masz inne zdanie na temat wyżej przytoczonych wyjaśnień? Zapraszam do komentowania :)