10.02.202210 min

Redakcja Bulldogjob

Backend Developer – jak zacząć karierę

Poznaj pożądane kompetencje Backend Developera i sprawdź, co powinieneś umieć, by zacząć karierę w tym kierunku.

Backend Developer – jak zacząć karierę

Według statystyk w III kwartale 2021 r.na świecie mieliśmy 26,8 mln aktywnych programistów (taki mały Szanghaj w Chinach w przybliżeniu), z czego 66% poniżej 35 roku życia. 

Jeśli stoisz przed wyborem, którą stronę barykady wybrać jako web developer — dobrze trafiłeś. Tym razem przyjrzymy się niezbędnym narzędziom i umiejętnościom dla backend developera. 

W tym artykule zebraliśmy informacje z naszego Badania społeczności IT 2021, ofert pracy, jakie publikujemy na naszym portalu oraz oczekiwań pracodawców, z którymi jesteśmy w stałym kontakcie. Przekonaj się, co powinieneś wiedzieć, by rozpocząć pracę jako Junior Python Developer.


Niech przemówią fakty — wszystko o Backendzie

W skrócie backendowiec to web developer, który pracuje na zapleczu stron internetowych. To specjalista od mrówczej pracy, który stale grzebie w bebechach strony, by wszystkie dane poprawnie się przetwarzały za pomocą API i komunikacji z bazami danych. Stale współpracuje z frontendowcami, dlatego powinien trochę orientować się, jak zarządzać infrastrukturą i środowiskami.

Z naszego badania społeczności IT z 2021 r.  wynikło, że 40% programistów, którzy wzięli udział w ankietach, pracuje na warstwie backendowej.

W dalszej części artykułu przejdziemy do zagadnień technicznych, natomiast teraz sprawdź, czy to ścieżka kariery dla Ciebie.


Czy Backend jest dla Ciebie?

To nie jest tak łatwy kawałek chleba, jakby się mogło wydawać, ponieważ wymaga znajomości trudniejszych technologii i frameworków. Do tego efekty Twojej wielogodzinnej pracy nie będą widoczne od razu, a może w ogóle jej nie zauważy użytkownik docelowy (typowy klikacz na stronie). Jeśli jesteś zadaniowcem, który lubi odhaczyć szybko dzienne questy i sprawdzić ich wykonanie, może to nie być dla Ciebie najlepszy kierunek.

Natomiast jeśli lubisz dbać o architekturę strony, jej bezpieczeństwo, optymalizację procesów i ogólne gaszenie pożarów w stylu zepsutych aplikacji to zdecydowanie specjalizacja dla Ciebie. 


Do Twoich codziennych zadań będzie należeć m.in.:

  • utrzymanie starszych aplikacji i zachowanie ich ciągłości,
  • współpraca z frontendowcami nad nowymi projektami,
  • przygotowanie baz danych,
  • określanie specyfikacji projektu, niezbędnej technologii, zabezpieczeń etc.,
  • naprawianie błędów na bieżąco,
  • wdrażanie aktualizacji do aplikacji,
  • piszanie kodów do nowych obiektów.


Mając na uwadze powyższe, nie będziesz piwniczakiem, którego praca jest nieistotna — będą od Ciebie wymagać rzetelnej wiedzy i solidnej pracy, by aplikacja śmigała, jak powinna. Będziesz współpracował z frontendowcami, specjalistami od user expierience, specami od jakości i być może architektem IT. 


Dlaczego warto zostać Backend Developerem?

Może dużej sławy Ci to z początku nie przyniesie, natomiast lepszą pensję niż frontendowiec na pewno. Najlepiej zarabiają freelancerzy — w naszym badaniu z 2021 r. średnio inkasowali miesięcznie ok. 16941 zł. 

W przypadku umowy o prace możesz się spodziewać kwoty netto ok. 7400 zł, a na B2B ok. 14600 zł.

Jeśli zastanawiasz się, który język programowania będzie najkorzystniejszy, to w 2021 r. na podium pojawiły się Scala, Ruby i TypieScript.

Więcej szczegółów zakresie zarobków backend developera znajdziesz w tym artykule. Jeśli zaś chodzi o perspektywy rozwoju to naturalnym wyborem jest dalej fullstack developer.


Zakres obowiązków Juniora

Backendowcy odgrywają kluczową rolę podczas tworzenia i rozwoju aplikacji. Bez ich pracy niemożliwe byłoby, aby wyświetlać na frontendzie informacje zaciągnięte z baz danych, co dziś – w dobie dynamicznych i wysoce spersonalizowanych witryn, które nic już nie mają wspólnego ze statycznymi aplikacjami popularnymi przed laty – ma status praktycznie krytyczny. Zapewne wielu przeciętnych użytkowników nawet nie zdaje sobie sprawy z procesów, które zachodzą „pod maską” aplikacji, jednak to właśnie one umożliwiają funkcjonowanie największych portali i usług. Można powiedzieć, że bez dzisiejszych zaawansowanych narzędzi i frameworków na backendzie, Internet wyglądałby mniej więcej tak, jak wyglądał pod koniec XX wieku.

W rezultacie nietrudno się domyślić, że praca na backendzie wiążę się z bardzo szerokim zakresem niekiedy bardzo złożonych obowiązków. Bardzo ważna jest umiejętność tworzenia i zarządzania API, które pozwala integrować poszczególne komponenty aplikacji, łącznie z integracją frontendem. Ponadto podstawą jest praca z bazami danych – ich tworzenie, utrzymania oraz, ponownie, przede wszystkim integracja z frontendem. Nie mniej ważna jest znajomość serwerów WWW oraz języków i oprogramowania serwerowego, oraz umiejętność wdrażania i zarządzania CMS-ami. Coraz częściej wymagana jest także umiejętność posługiwania się usługami chmurowymi i ich integracja z konkretną aplikacją.

Osobną kwestię stanowi zabezpieczenie aplikacji – to właśnie błędy backendowca mogą sprawić, że cyberbezpieczeństwo zostanie narażone na szwank, gdyż np. przez nieuwagę pozostawiona zostanie podatność klasy XSS. To także backendowcy w pierwszej kolejności zajmują się utwardzaniem mechanizmów logowania oraz zabezpieczaniem szczególnie wrażliwych danych uwierzytelniania przechowywanych w bazach. Pomyłka na tym polu skutkująca np. wyciekiem bazy danych może narazić organizację na wielomilionowe kary. W kwestii zabezpieczania ciągłości funkcjonowania aplikacji Backend Developer opracowuje również polityki backupu, a w niektórych przypadkach współtworzy nawet plany Disaster Recovery.


Technologie

Przejdźmy do bardziej szczegółowego omówienia i przyjrzyjmy się już konkretnym językom programowania i frameworkom oraz innym narzędziom developerskim, które są aktualnie wykorzystywane, a których znajomości wymaga się najczęściej od Backend Developerów.

Konkretnym językom programowania wykorzystywanym na backendzie odpowiadają rzecz jasna frameworki znacząco ułatwiające pracę i automatyzujące zadania. Rzecz jasna od początkującego Backend Developera nie będzie się wymagać znajomości wszystkich wymienionych niżej technologii. To sam programista musi wybrać te, w których czuje się najlepiej i dokonać wyboru samodzielnie, również na bazie zaplanowanej ścieżki kariery, a także bieżących trendów na rynku pracy.

  • Ruby – wieloparadygmatowy język programowania, w którym wszystko jest obiektem,  o wielu wykazujący bardzo przydatnych na backendzie cechach. Wśród nich należy wymienić rozpoznawanie typów, działający w zautomatyzowany sposób garbage collector oraz bardzo dobrą przenoszalność pomiędzy systemami operacyjnymi. Najpopularniejszym frameworkiem jest zdecydowanie opensource’owe i działające w modelu MVC Ruby on Rails.
  • Python – jeden z najpopularniejszych języków programowania na świecie, ceniony między innymi za czytelną składnię i względną łatwość w przyswojeniu. Po prostu z Pythonem relatywnie łatwo się pracuje oraz czyta kod. Zdobywa on coraz większą popularność na backendzie między innymi ze względu na dużą liczbę wartościowych frameworków. Wśród nich prym wiedzie Django, uniwersalny i rozbudowany framework automatycznie generujący funkcjonalny panel administracyjny, oraz Flask – prostszy, lecz lżejszy framework, którego funkcjonalność można jednak dostosować do konkretnych potrzeb za pomocą rozszerzeń. Stosunkowo nieskomplikowany i łatwy w nauce.
  • PHP – niegdyś zdecydowanie najpopularniejszy język serwerowy, który nadal świetnie sprawdzi się w wielu zastosowaniach. Interoperacyjny, zadziała w zasadzie wszędzie, niezależnie od platformy, wystarczy zainstalować go na serwerze. W zależności od umiejętności developera może być bardzo wydajny, należy również pamiętać, że jest wciąż aktywnie rozwijany i w ostatnich latach doczekał się między innymi obsługi JIT. Aktualnie najpopularniejszym frameworkiem PHP jest Laravel dysponujący między innymi modułem ułatwiającym wdrożenie mechanizmów logowania i uwierzytelniania czy menedżerem zależności.
  • C# – pierwszy wybór tych aspirujących backendowców, którzy chcą związać się z ekosystemem Microsoftu. W sytuacji, kiedy serwer sprawnie obsługuje framework ASP.NET mamy gwarancję, że C# będzie dobrym wyborem, jeśli chodzi o język programowania na backendzie. Ponadto C# na serwerze działa w postaci binarnej, co utrudnia potencjalnym atakującym uzyskanie dostępu do kodu źródłowego aplikacji. 
  • Java – w zasadzie od początku historii Javy główną zaletą tego języka programowania jest możliwość uruchamiania kodu w zasadzie na dowolnej platformie. Ponadto w przypadku serwerów webowych to możliwość obsługi wielowątkowości daje dużą przewagę. Podobnie jak w przypadku Ruby mamy tu do czynienia z automatycznym odśmiecaniem oraz licznymi opensource’owymi bibliotekami. Najczęściej podczas pracy z Javą na backendzie wykorzystywany jest framework Spring, który pozwala budować modularne aplikacje webowe, gdzie zależności są obsługiwane przez zewnętrzny kontroler (Dependency Injection).
  • JavaScript – choć JS uznaje się zazwyczaj jako język stricte frontendowy, to nic nie stoi na przeszkodzie, aby wykorzystywać go w całym stosie. Dzieje się tak przede wszystkim za sprawą frameworka Node.js, który sprawił, że z użyciem JS można dziś sprawnie przetwarzać dane po stronie serwera oraz integrować serwer z klientami, a także obsługiwać wiele żądań jednocześnie.


Umiejętność budowania i pracy z REST API

Osobną kategorię kompetencji, które prędzej czy później przyswoi Backend Developer są te związane z obsługą ruchu sieciowego oraz integracji poszczególnych komponentów aplikacji. Bardzo ważną rolę odgrywa zatem umiejętność budowania i pracy z REST API. To właśnie backendowiec odpowiada za to, aby żądania klienta były poprawnie i efektywnie obsługiwane przez aplikację. To właśnie API stanowi bowiem interfejs pośredniczący pomiędzy żądaniami klienta a bazami danych.

Skoro jesteśmy już przy bazach danych, to ich znajomość, umiejętności ich utrzymywania oraz zarządzania nimi to jedno z najważniejszych oczekiwań wysuwanych wobec Backend Developerów. Dotyczy to zarówno relacyjnych, jak i nierelacyjnych baz danych. Niemniej podobnie jak w przypadku języków programowania i backendowych frameworków, nie jest tu wymagana znajomość wszystkich, dlatego wymienimy tylko wielkie trio, a mianowicie: 

  • MySQL – system zarządzania relacyjnymi bazami danych, który będzie działał na wszystkich najpopularniejszych platformach – obsługiwany jest nie tylko Linux czy Windows i macOS, ale także Solaris czy systemu z rodziny *BSD oraz wiele innych. Dostępne są liczne mechanizmy bazodanowe, zarówno transakcyjne, jak i pozbawione obsługi transakcji. Częstą konfiguracją jest MySQL stawiany na Linuksie wraz z serwerem Apache i językami skryptowymi, np. PHP czy Python, co nazywane jest środowiskiem LAMP.
  • PostgreSQL – podobnie jak MySQL, jest to multiplatformowe RDBMS kompatybilne z licznymi, nawet niszowymi systemami operacyjnymi, oraz wieloma architekturami CPU. W PostgreSQL można pisać procedury składowane m.in. w takich językach, jak PHP, Python czy Perl. Jeśli zaś chodzi o obsługiwane rodzaje indeksów, to znajdziemy tu m.in. hashe, B-drzewo, GIST czy GIN. W system wbudowano mechanizm MVCC pozwalający na zarządzanie transakcjami.
  • SQLite – jak wskazuje sama nazwa, założeniem stojącym SQLite jest odchudzenie systemu. W rezultacie SQLite ma takie charakterystyczne cechy jak implementacja silnika SQL i możliwość pracy z bazą bez konieczności uruchamiania całego systemu zarządzania relacyjnymi bazami danych. Cała baza to jeden plik binarny o indeksie B-drzewa. Obsługiwane są transakcje czy możliwość przechowywania danych w RAM-ie.


Podczas zdobywania umiejętności w zakresie zarządzania bazami danych warto także rozważyć zapoznanie się z jedną z nierelacyjnych baz danych (NoSQL). Są to takie bazy, które w przeciwieństwie do SQL przechowują dane w innym modelu niż relacje tabelaryczne. W tym przypadku warto zapoznać się z wykorzystywanymi modelami, np. klucz-wartość (bazy Apache Ignite czy ArangoDB), dokument (MongoDB) czy rodzina kolumn (Cassandra).


Systemy buforowania pamięci, czyli cache’owanie

Znajomość technik buforowania w aplikacjach również należy do zakresu umiejętności, jakimi dysponować powinien Backend Developer. Mechanizmy te można określić, jako sposoby pozwalające na przechowywanie obiektów w pamięci podręcznej w taki sposób, aby żądanie po stronie klienta nie wymagało każdorazowo odpowiedzi serwera WWW, lecz mogło być dostarczane właśnie bezpośrednio z cache, odciążając tym samym serwer. Wśród najpopularniejszych systemów buforowania pamięci należy wymienić Redisa i  memcached.


Serwery WWW

W ten sposób przechodzimy do ostatniego ważnego tematu powiązanego z rozpoczynaniem kariery na ścieżce Backend Developera. Mowa o serwerach WWW oraz szeroko pojętej obsłudze ruchu sieciowego. Bodaj najpopularniejszym w tej chwili serwerem WWW jest linuksowy nginx – niewielki i nieskomplikowany w instalacji i zarządzaniu serwer (również serwer proxy dla HTTP i IMAP) z bogatą dokumentacją i liczbą społecznością gotową do pomocy w rozwiązywaniu. nginx obsługuje asynchroniczne operacje wejścia i wyjścia, automatyczne indeksowanie, statyczne pliki czy mechanizm odwróconego proxy. Rzecz jasna nginx to nie jedyny serwer WWW, można także rozważyć zapoznanie się z microsoftowym IIS lub Apache. 

Nieodzowna podczas pracy na backendzie będzie także umiejętność konfiguracji wspomnianego serwera HTTP, protokołów sieciowych, przede wszystkim HTTP, czy umiejętność konfiguracji DNS-ów. Jak już wcześniej wspomniano, to właśnie od backendowca będzie po części zależało bezpieczeństwo aplikacji. Warto więc zapoznać się z protokołami SSL, mechanizmami szyfrowania ruchu po HTTP czy HSTS.


Pierwsza praca w IT

Pierwsze rozmowy kwalifikacyjne w nowej branży mogą być stresujące, ponieważ nie wiesz do końca czego się spodziewać. Dlatego zapraszamy Cię do zostania z nami na dłużej poprzez  założenie profilu kandydata i korzystania z zasobów Bulldog.Guide.

Więcej wskazówek o samych w sobie rozmowach rekrutacyjnych i poszukiwaniu pracy znajdziesz tutaj:


Podsumowanie

Jak już zapewne wiesz, programowanie to długa wyboista droga pełna zakrętów, ślepych uliczek, jak i pięknych autostrad dobrze uporządkowanej wiedzy. Na pewno nie będziesz narzekał na brak wyzwań czy nudę. 

Miej świadomość, że nie zawsze będzie łatwo i przyjemnie, nieraz natrafisz na ścianę, z którą będziesz musiał dłużej walczyć, by rozwiązać jakiś problem. Ale co Cię nie zabije to Cię wzmocni. Wraz z rosnącym doświadczeniem i wiedzą na szczęście idzie adekwatne wynagrodzenie. 


Bonus

Każdy lubi dostawać coś ekstra — ja nie jestem wyjątkiem, dlatego wybrałam według mnie ciekawe artykuły, które mogą Ci pomóc szczególnie na początku kariery jako Backend Developer. Miłej lektury:

<p>Loading...</p>