Rodzaje pracy programisty

stanowisko pracy programisty

Stojąc u progu świata IT trzeba podjąć kilka ważnych decyzji. Każda z nich może bezpośrednio rzutować na Twoją karierę zawodową w przyszłości. Jeden z takich wyborów, dotyczy ścieżki rozwoju, którą będziesz podążał. Poniżej przedstawiłem swoje przemyślenia na temat realiów pracy różnych profesji programisty. Zaczynamy!

Front-end developer

Najprościej mówiąc jest to koder zajmujący się rozwojem stron internetowych. Do jego zadań może należeć modyfikacja struktury plików HTML, tworzenie i edycja plików ze stylami witryny (pliki css) oraz rozwijanie skryptów obsługujących stronę (javaScript). Innymi słowy Front-end pracuje nad wizualną częścią Internetu. Jego umiejętności powinny obejmować także podstawowe informacje o działaniu Internetu takie jak np. komunikacja pomiędzy klientem a serwerem, czy sposób działania żądań http. W dzisiejszych czasach każda firmy, niezależnie czy jest to jednoosobowa działalność, czy wielka korporacja potrzebuje co najmniej jednej strony internetowej, a co za tym idzie – programistów zajmujących się jej utworzeniem.

javascript

Minusem takiej pracy jest bardzo szybka dezaktualizacja wiedzy. Myślę tutaj głównie
o javaScripcie, do którego frameworki (najprościej mówiąc: cudzy kod wykorzystywany przez programistę i wykonujący za niego część pracy) bardzo szybko stają się przestarzałe albo niemodne. Tak, na takie też jest zapotrzebowanie, niemniej jednak znajomość najpopularniejszych gwarantuje Ci możliwość przebierania w większej ilości ofert zatrudnienia. Jeśli więc będziesz chciał być na bieżąco, przygotuj się na częste zaczynanie nauki od nowa.

 

Back-end developer

Główny zadaniem back-end-developera jest tworzenie kodu rozwijającego aplikację zgodnie z wymaganiami logiki biznesowej klienta. Przykładem może być aplikacja, odpowiedzialna za obsługę systemu wypożyczania samochodów. Każdy biznes rządzi się swoimi zasadami, które koder musi przetłumaczyć na język programowania. A to zniżka przy 27 wypożyczeniu, a to rabat przed świętami, etc., logowanie za pomocą portalów social media,  zwracanie historii zamówień i tak dalej, i tak dalej. Obecnie praca backendowca sprowadza się do rozwijania tzw. API (ang. Application Programming Interface), czyli aplikacji, których przeznaczeniem jest zwracanie surowych danych w odpowiednim formacie, używanych przez inne aplikacje (np. frontendowe) do graficznego przedstawienia informacji.

programowanie

Zaletą tej pracy jest duża różnorodność. Wymaga ona jednak szerokiego spectrum wiedzy, często sięgającego poza zakres jednej aplikacji. Mam na myśli łączenie się z innymi aplikacjami, np. do wysyłania maili, obsługi płatności etc., czy optymalizacja działania aplikacji, aby ograniczyć czas przetwarzania danych.

Podobnie jak w przypadku frontendowca, tak i ofert pracy na tym stanowisku jest wiele. API wykorzystywane są przez większość współczesnych aplikacji, więc zależnie od specyfiki firmy lub projektu możesz pracować przy rozwoju strony internetowej, gry, aplikacji na telefon lub mikrokontroler, albo… nad wszystkimi jednocześnie!

Początkowym utrudnieniem może być stosunkowo wysoki próg wejścia w ten rodzaj programowania. Innym minusem są często dość karkołomne integracje z zewnętrznymi aplikacjami, a ich dokumentacje nie opisują akurat naszego problemu.

 

Mobile app developer

Jak sama nazwa wskazuje zajmuje się rozwijaniem aplikacji mobilnych. W przypadku wyboru tej ścieżki możesz rozwijać się w różnych kierunkach programowania aplikacji na: Androida lub iOSa, (pozostałe platformy aktualnie są dosyć niszowe, a ja chciałbym się skupić na najważniejszych kwestiach). Na rynku istnieją też tzw. technologie cross-platformowe, przetwarzające kod napisany przez programistę w zrozumiały dla urządzenia, na którym jest uruchamiany. Przykładem może być Xamarin, zamieniający aplikacje napisane w języku C# na używany przez urządzenia z Jabłkiem C++ lub Javę dla Androidów.

aplikacja mobilna

Niezależnie od wyboru będziesz musiał poznać sposób działania systemu operacyjnego i obyć się
z urządzeniami, aby w pełni wykorzystać ich możliwości. Wielu programistów uważa, że jest to jeden z łatwiejszych rodzajów pracy.  Według mnie jednak, praca programisty aplikacji mobilnych jest porównywalna do pracy frontend developera. Zmienia się jedynie medium dla aplikacji (przeglądarka < -> telefon/tablet), co niesie za sobą potrzebę poznania innych języków oraz infrastruktury używanej podczas pracy.

 

Game developer

Przez wielu uważana za pracę marzeń, przez innych za najtrudniejszą w branży IT. Dlaczego?
A dlatego, że wymaga sporej i interdyscyplinarnej wiedzy. Przede wszystkim z obszaru programowania, w tym przypadku najbardziej przyda się wiedza o C# lub C++. Oczywiście znajomość języka jest dopiero czubkiem góry lodowej. Żeby móc zajmować się tworzeniem gier wypadałoby także umieć korzystać z silników gier, przykładem może być Unity (dla programistów C#). Obecnie gry powstają na wiele platform w różnorodnych formach, co oznacza to dla Ciebie? Konieczność wyboru specjalizacji takich jak gry na urządzenia mobilne, pecety czy konsole. Drugi podział to gry trójwymiarowe lub 2D, a może chciałbyś działać w kierunku VR lub AR?

kontroler xbox one

Każda decyzja może zaprowadzić Cię w zupełnie inne miejsce w IT. Niezależnie jednak od wyboru, zajmowanie się rozwijaniem gier będzie wymagało dużej wiedzy z zakresu… fizyki, a już w szczególności kinematyki oraz dynamiki. Jeśli na hasło przyspieszenie ziemskie albo siła Coriolisa dostajesz gęsiej skórki dobrze przemyśl wybór tej specjalizacji. Dlaczego? Już tłumaczę. Potrzebujesz jej do opisywania ruchu obiektów w grze i zachowania na różne zdarzenia w niej występujące, tak aby wszystko wyglądało naturalnie.

fizyka

Myślę, że warto wspomnieć także o rzeczy bardzo oczywistej, ale mogącej zdziwić co poniektórych. Tworzenie gier to nie to samo co granie! Nie na stawiaj się na pykanie w Wiedźmina przez 8 godzin. Developerzy zwykle dniami pracują nad jednym ekranem gry lub animacją, wyświetlaną na ekranie przez kilkanaście sekund.

Aktualnie gry coraz bardziej zużywają zasoby komputera. Wystarczy spojrzeć na rosnące z każdą nową pozycją wymagania sprzętowe na pudełku. Logicznym jest więc, że zadaniem programistów jest także codzienna praca nad wydajnością aplikacji, co wymaga doświadczenia i niekonwencjonalnego podejścia do problemu. Jako przykład zamieszczam materiał wideo opracowany przez ekipę portalu Arhn.eu, przedstawiający wszystkie operacje obliczeniowe, potrzebne do wyrenderowania jednej klatki na ekranie

Database developer

Rolą tego typu programisty jest rozwój aplikacji mocno opartych o przetwarzanie danych umieszczonych w bazach. Łatwo się więc domyślić, że podstawowymi umiejętnościami powinny być wszelkie technologie związane z bazami danych. To jego zadaniem będzie zaprojektowanie tabel oraz napisanie skomplikowanych kwerend SQL. Odgrywa on ważną rolę w procesie optymalizacji aplikacji pod względem szybkości działania. W dobie popularności machine learning, sztucznej inteligencji, czy IoT powstaje wiele oprogramowania opartego o te rozwiązania. Ich cechą charakterystyczną jest przetwarzanie ogromnych ilości danych zwykle w czasie rzeczywistym. Oczywiście mają one działać jak najwydajniej. Wyraźnie więc widać tutaj miejsce dla pracy database developera.

bazy danych

Podsumowanie

Okej, omówiliśmy poszczególne obszary specjalizacji programisty. W tym poście chciałbym napisać trochę o możliwościach jakie stoją przed Tobą po wybraniu jednej z powyższych dróg.

Niezależnie od Twojej decyzji, czym chcesz się zajmować, zaczniesz jako junior developer, a po naszemu młodszy programista. Jest to etap, w którym nauczysz się najwięcej, potrzebna Ci będzie także spora ilość pomocy od bardziej doświadczonych kolegów. Jest to całkiem naturalne,
na początku kariery masz prawo nie wiedzieć o wielu kwestiach.

W miarę Twojego rozwoju technicznego będziesz mógł awansować na programistę, charakteryzującego się samodzielnością i większym doświadczeniem.

Kolejnym krokiem będzie stanowisko senior developera(starszego programistę) – osobę z solidnie ugruntowaną wiedzą, na tyle dużą aby dzielić się nią z innymi i podejmować samodzielne decyzje.

Starszy programista, w zależności od swoich predyspozycji, może w dalszym ciągu rozwijać się technicznie i zostać architektem oprogramowania. W największym skrócie odpowiada on za kierunek rozwoju aplikacji lub całego projektu. To na jego barkach spoczywają decyzje dotyczące zastosowanych rozwiązań, a także dopilnowanie, aby te były zaimplementowane poprawnie.

Drugą możliwością dla seniora jest awans na stanowisko menadżerskie i prowadzenie młodszych stażem podopiecznych i pomoc im w stawianiu kolejnych kroków w swojej karierze.

Powyżej starałem się przedstawić najpopularniejsze obszary, którymi zajmują się programiści. Każdy
z nich ma zarówno swoje wady jak i zalety i tylko od indywidualnych preferencji zależy, który wybierzesz. Oczywiście nie traktuj tego jak oświadczyny, tej decyzji nie podejmujesz raz w życiu. Zmiana specjalności jest możliwa- wymaga jedynie większej ilości zaangażowania. Doświadczenie wyniesione z jednej, pozwoli Ci szybko wskoczyć w specyfikę drugiej.

Mam nadzieję, że ten wpis pomógł Ci wybrać w jakim kierunku chciałbyś się rozwijać. Chętnie przeczytam o Twojej decyzji w komentarzu poniżej.

Please follow and like us:

Dodaj komentarz

This site uses Akismet to reduce spam. Learn how your comment data is processed.