Backend, frontend a może fullstack?

W ofertach pracy często pojawiają się hasła frontend, backend i fullstack. Co one oznaczają i którą ścieżką powinieneś pójść?

W dzisiejszym wpisie opiszę czym różnią się pozycje programisty backendowego, frontendowego i pracującego jako tzw. fullstack developer. Chociaż dla większości ludzi informatyk i programista to to samo, spektrum możliwości pracy jako programista jest tak wiele, że jedna praca drugiej nierówna. Dziś skupię się na najczęstszych pozycjach jakie można zajmować tworząc aplikacje internetowe (tzw. aplikacje webowe).

Backend

Zacznijmy od fundamentów. Przez backend rozumie się warstwę oprogramowania, na której wszystko się opiera, a która nie jest widoczna dla użytkownika. Coś jak konstrukcja budynku, infrastruktura. Są to wszystkie mechanizmy i konstrukcje, które sprawiają, że nasz system udostępnia pewnie funkcje: jak wysyłka maili, realizacja przelewów, składanie zamówień.
Jako backend developer będziesz miał dużo styczności z integracją systemów, modelowaniem danych, obsługą bezpieczeństwa, itd. Języki w jakich możesz programować to między innymi Java, Ruby, C# czy C++.

Frontend

Programista frontendowy to natomiast osoba odpowiedzialna za zaimplementowanie warstwy wizualnej. To on sprawia, że wygodnie korzysta Ci się z Twoich ulubionych serwisów społecznościowych, że strona na żywo reaguje na Twoje interakcje, że z aplikacji internetowej korzysta się przyjemnie i wygląda ona mile dla oka.
Jeśli chodzi o języki programowania w jakich tworzy frontendowiec to są to przede wszystkim: JavaScript, HTML i CSS. Oraz wszystkie związane z nimi frameworki i języki pochodne (jak np. TypeScript, CoffeeScript czy LESS i SASS).
Za pomocą tych technologii programiści tworzą wygodne, responsywne i reaktwyne aplikacje. Porównując to do domu, budynku, frontendowcy to osoby z tzw. “wykończeniówki”. One odpowiadają za to jakie odczucia estetyczne i użytkowe będzie miał na końcu klient danej inwestycji.

Jakie są różnice?

Programista backendowy ma na swojej głowie bardziej zadania inżynierskie. Dotyczące sensownego przechowywania, przetwarzania i skalowania danych. Dotyczące integracji z systemami zewnętrznymi. Nie musi martwić się o to na jakim systemie użytkownik będzie korzystał z serwisu, z jakiej przeglądarki, na jakim urządzeniu. Niestety nie widzi też aż tak namacalnie efektów swojej pracy.
Programista frontendowy natomiast bardziej związany jest z warstwą wizualną przedsięwzięcia. On decyduje o tym jaki User Experience ostatecznie będzie miał klient. On też namacalnie widzi efekty swojej pracy — współtworzy wygląd strony i to jak będzie ona reagować na interakcje użytkownika. Minusem natomiast jest to, że musi on już zwracać uwagę na to kto jest odbiorcą aplikacji. Z jakiego systemu, przeglądarki, urządzenia korzysta. Przetestować i przygotować aplikację tak by na wszystkich możliwych konfiguracjach działała przyjaźnie, czytelnie i mile dla oka.

A fullstack?

Fullstack developer to mówiąc najkrócej “pan złota rączka”. Osoba, która zaprogramuje zarówno backend jak i frontend. Jest to osoba uniwersalna, która jest w stanie stworzyć system całościowo i przygotuje zarówno warstwe wizualną jak i jej fundamenty, szkielet.
Jak łatwo się domyślić jako fullstack developer musisz zgłębić zarówno języki/technologie backendowe jak i frontendowe. Do tworzenia prostych aplikacji nie powinno być to problemem, ale przy budowie bardziej skomplikowanych systemów specjalizacja w którymś konkretnym kierunku może dać lepsze efekty.

Kim w takim razie zostać?

To zależy… ;) Jako backend developera będą czekać Cię (czasami trudne) inżynierskie wyzwania. Plusem jest to, że możesz rozwijać się w swojej technologii (np. Javie) nie martwiąc się, że za pół roku będzie ona *passe*. Systemy backendowe mają długi czas życia i nie wymienia się ich tak szybko. Stając się ekspertem w swojej backendowej dziedzinie możesz być bardzo pożądanym programistą na rynku pracy.
Idź w stronę frontendu jeśli zdecydowanie bardziej interesuje Cię to jak użytkownik wchodzi w interakcję z Twoją aplikacją. I jeśli ogromną satysfakcję daje Ci możliwość pochwalenia się przed znajomymi, że spod Twoich rąk wyszedł konkretny element wyglądu/działania strony. W przyszłości możesz zostać specjalistą od User Experience, tworząc super wygodne aplikacje, z których ludzie będą chcieli korzystać.
Co z fullstack developerem? Jest to rozwiązanie pośrednie. Jeśli kręcą Cię obie warstwy aplikacji, jest to najlepsza droga, którą możesz podążyć. Rozwijając się w obu kierunkach zawsze będziesz w stanie zbudować wygodną aplikację internetową od zera bez pomocy z zewnątrz. Minus jest taki, że albo będzie wymagać to od Ciebie podwójnego rozwoju w obu kierunkach, albo koniec końców Twoje rzemiosło będzie na nieco niższym poziomie niż kolegów specjalizujących się stricte w backendzie lub frontendzie.

Więc od czego zacząć?

Jeśli do końca nie wiesz, która strona aplikacji jest dla Ciebie najlepsza uważam, że fullstack jest świetnym rozwiązaniem. Po pierwsze dlatego, że pozwala Ci być leniwym i podjąć decyzję w późniejszym czasie. A po drugie dlatego, że dużo łatwiej znaleźć pracę jako fullstack developer. Wiele firm pracujących na zlecenie potrzebuje osób, które będą w stanie zakodować całościowo jakiś nieskomplikowany system albo kawałek systemu.

Pamiętaj tylko o tym, że dzięki specjalizacji możesz otrzymywać co raz lepsze finansowo oferty. Jak popsuje Ci się coś w domu może i wezwiesz złotą rączkę. Jeśli jednak ona nie da rady to i tak zadzwonisz po hydraulika, elektryka, itp., których praca może kosztować już większe pieniądze.

Show your support

Clapping shows how much you appreciated Dariusz Mydlarz’s story.