Frontend czy Backend – w czym tkwi różnica?

Wiele osób planujących rozpoczęcie kariery w zawodzie programisty, stoi przed nie lada wyzwaniem – decyzją jaką obrać drogę? Frontend czy Backend? Co jest lepsze, a co gorsze? Czego jest trudniej się nauczyć? Co daje większe pieniądze? Postaram się odpowiedzieć na te oraz parę innych pytań, które często słyszę od swoich kursantów

 

Frontend czy Backend – co jest lepsze?

Pytanie najprostsze w swojej konstrukcji, ale pozbawione jednoznacznej odpowiedzi. Powiedz, co jest lepsze? Rosół czy tiramisu? Przykład wydaje się wręcz idiotyczny, bo przecież jedno to danie obiadowe, lekkie, w formie płynu, a drugie to włoski deser z olbrzymią ilością tłuszczu (ale i smaku!).

Tak samo ma się Frontend do Backendu. Wielu z nas nie wyobraża sobie niedzielnego obiadu bez porządnej, tradycyjnej zupy. Nie brakuje jednak i takich, którzy bez deseru nie poczują, że cokolwiek jadły. To dwa różne światy, które mają pewne cechy wspólne, ale zarazem różnią się też znacznie. Aby odpowiedzieć sobie na pytanie Frontend czy Backend zobacz, czego spodziewać się po jednym i drugim, a następnie zdecyduj sam!

Czego trudniej się nauczyć?

Na to pytanie jest już łatwiej odpowiedzieć. To nadal nie będzie jednoznaczna odpowiedź, ale dzięki niej będziesz wiedzieć do czego jest Ci bliżej. Przede wszystkim trzeba zacząć od najważniejszego – tworząc backend, początkowo będzie trudno Ci zobaczyć jakieś efekty. One oczywiście będą, każda napisana aplikacja, biblioteka, moduł „będzie żyć”, przyjmować dane i na przykład zwracać je zmodyfikowane. Mogą wprowadzać zmiany w bazach danych, dokonywać ciekawych obliczeń, sterować monitoringiem, obsługiwać urządzenia medyczne, może nawet uratować życie. Jeżeli tego typu tematy wydają Ci się interesujące, lubisz tego typu “magię”, to zdecydowanie czeka Cię mnóstwo frajdy.

Swoje umiejętności będziesz pogłębiać, poznając coraz to nowsze algorytmy, analizując dane, pracując na zbiorach, optymalizując zadania tak, aby przy mniejszej ilości operacji, uzyskiwać ten sam lub lepszy efekt.

Frontend – dla kogo jest?

Co jednak jeżeli wynik zwrócony w czarno-białej konsoli nie jest czymś, po zobaczeniu czego krzyczałbyś “hurra”? Wtedy zastanów się czy frontend nie jest lepszą drogą dla Ciebie. Już pierwsze lekcje „programowania we froncie” skutkują pojawieniem się “czegoś z niczego”. To trochę jak wypowiadanie słów, które stają się obrazem. Twoją pracą możesz podzielić się od razu ze znajomymi, którzy docenią (lub nie), stworzony przez Ciebie twór, ale przynajmniej nie zasną w połowie Twojej opowieści o tym co robiłeś tego dnia w pracy. Coś co jest „widoczne gołym okiem”, łatwiej jest ocenić i zmierzyć. Łatwiej też zachować początkową motywację, kiedy natychmiast widzisz efekty swojej pracy.

Decyduj w oparciu o siebie

Gdzie więc odpowiedź na pytanie Frontend czy Backend? Sam zadaj sobie pytanie, która z opcji wydaje się być ciekawsza. Co da Ci większą frajdę? Wyobraź sobie, że będziesz wstawać codziennie do pracy, która będzie wyglądać mniej więcej jak jeden z powyższych scenariuszy. Który z nich bardziej Ci pasuje?

Cechy, które pomogą zostać Backendowcem

Obserwując Backendowców z którymi miałem okazję pracować, mogłem zaobserwować parę wspólnych cech. Najważniejsza z nich, która oczywiście tyczy się w pewnym stopniu każdego zawodu, w którym chcemy być dobrzy, to cierpliwość.

Jak już wspomniałem przy backendzie trzeba poczekać nieco dłużej na efekty swojej pracy. Często wymaga on od nas zgłębienia wielu zależności, zrozumienia sposobu działania systemu z którym pracujemy.

Backend w pewnym stopniu ma też wyższy “próg wejścia”. Poza znajomością samego języka programowania (np. Java, JavaScript, PHP, C# itp), niezbędna będzie wiedza z zakresu baz danych, działania sieci WWW, podstawowych protokołów. Co więcej, na naszych barkach spoczywa również w dużej mierze zapewnienie bezpieczeństwa tworzonej aplikacji. Najgroźniejsze ataki, to takie, które mogą wykraść dane z bazy, usunąć je, wygenerować fałszywe wiadomości do użytkowników, zablokować pracę serwerów.

Cechy, które pomogą zostać Frontendowcem

Zdecydowanym atutem każdego Frontendowca jest “wyczucie smaku”. Chociaż zazwyczaj design tworzą designerzy, to nie brakuje sytuacji, w których jesteśmy zmuszeni stworzyć jakiś element samodzielnie. Tworząc tak zwane “PoC” czyli wstępną koncepcję aplikacji, zdarza się, że to na naszych barkach spoczywa zaprojektowanie bazowego interfejsu użytkownika.

Jako cechę, która również się przyda się w tej profesji trzeba także wymienić dokładność, dbałość o detale. W sytuacji, kiedy będziemy sprawdzać zadanie wykonane przez koleżankę lub kolegę, musimy mieć sprawne oko i wyłapywać wszelkie niezgodności. Ba, musimy kontrolować przede wszystkim siebie kiedy sami odtwarzamy efekt z designu, pisząc CSS i HTML. Niektórzy klienci wymagają trzymania się zasady “pixel perfect”, czyli oczekują absolutnej dokładności w odwzorowywaniu.

Frontend czy Backend? A może jedno i drugie?

W dzisiejszych czasach, choć celuje się w specjalizacje, każdy jest pewnego rodzaju “fullstackiem”. Kto to taki? To właśnie osoba, która dzieli umiejętności Backendowca z tymi typowymi dla Frontendowca. Nie oznacza to jednak, że każdy może robić wszystko i ma wystarczające do tego umiejętności. Nierzadko jednak zdarza się, że Backendowiec tworzy widoki renderowane i serwowane z serwera. O co w tym chodzi? O to, że pewne narzędzie pozwalają tworzyć część wizualną przy wykorzystaniu technologii backendowych, nie są one jednak zwykle najlepszym rozwiązaniem, mając na sobie pewne wady.

A co Frontendowiec wiedzieć musi?

Co natomiast front wie o backendzie? Jeżeli programujemy już jakiś czas w JavaScripcie, to możemy skorzystać z Node, który jest serwerowym odpowiednikiem przeglądarki. To dokładnie ten sam język (z małymi różnicami w kwestii wspierania pewnych rozwiązań), ale pozwalający nam na pisanie aplikacji serwerowych. Musisz nadrobić tylko braki z dziedzin “dookoła”, o których pisałem wyżej.

Ważne jest to, aby oba zespoły mniej więcej wiedziały, czym zajmuje się drugi. Ułatwia to komunikację, ustalanie warunków współpracy (tzw. kontraktów), pozwala unikać błędów spowodowanych brakiem zrozumienia podstaw działania “drugiej strony”.

Frontend czy Backend. Co jest lepiej płatne?

Gdyby porównywać osoby ze stażem do 3 lat, to stawki są stosunkowo zbliżone i zależne to od języka w którym się pisze. Starsze i mniej rozwijane, zazwyczaj nie oferują aż tak atrakcyjnych warunków zatrudnienia jak nowe i na topie. To też jednak nie jest regułą, ponieważ niektóre aplikacje napisane lata temu, dalej muszą być rozwijane, a przez niedobór programistów, którzy znają mało popularne technologie, ich stawki mogą być bardzo wysokie. Takie zjawisko często tyczy się systemów bankowych, które powstawały dawno temu i ze względu na kwestie bezpieczeństwa oraz koszty stworzenia ich od nowa, są nadal utrzymywane.

Jeżeli przyjrzymy się jednak programistom z bardzo dużym stażem, to wtedy Backendowcy stopniowo wychodzą na prowadzenie. Chodzi o to, że umiejętności Frontendowe mają pewne ograniczenie. Najbardziej złożone i skomplikowane algorytmy działają na serwerach, a nie na komputerze użytkownika końcowego. Wyzwaniem dla Frontendowców mogą być zaawansowane animacje, ale i one mogą nie wystarczyć w konkurowaniu o zarobki z ekspertami technologii backendowych, którzy mają znacznie większe pole do popisu.

Pamiętajmy jednak, że niejednokrotnie można trafić na oferty pracy za 20, a nawet więcej tysięcy dla osób pracujących w JavaScript, więc nie są to zdecydowanie małe pieniądze. Co więcej, przewagą „frontów” jest właśnie wspomniany język, który służy do tworzenia aplikacji na prawie każdą popularną platformę i nie ogranicza nas już do przeglądarki.

Autor tekstu: 

Radosław Madecki

Radosław Madecki Lead Mentor kursu Frontend Developer w Fututre Collars. Senior Frontend Developer w Clearcode. Działa także w Node, uczy się Pythona. Współpracował z KDSolutions, tworząc aplikację social media oraz system zarządzania danymi w firmie projektowej.  Zainteresowanie informatyką towarzyszy mu od dzieciństwa. Ciekawi go to, co sprawia, że aplikacja lub strona są przyjemne w użytkowaniu.