Frontend czy Backend – co wybrać ?

  • Czym jest front-end a czym back-end ?
  • Co składa się na front-end a co na back-end ?
  • Kim jest front-end a kim back-end developer?
  • Czym zajmuje się front-end a czym back-end developer?
  • Co musi umieć front-end a co  back-end developer?
  • Jak zostać front-end a jak back-end developerem?

Przed przystąpieniem do tego artykułu przeanalizowaliśmy kilka ofert pracy a ten artykuł będzie odbiciem technologii jakie są obecnie wymagane.

Co to jest frontend?

Po tym jak uzupełnimy nasz adres URL w przeglądarce wciskając „ENTER” zobaczymy wizualną część strony, innym słowem front-end.  Mówiąc o działaniach na front-end bardzo często chodzi nam o elementy związane z tym, co może zobaczyć użytkownik, czyli np. design, kolor, przyciski, czcionka, formularze. To bardzo ważne elementy strony ponieważ nie zapominajmy, że zazwyczaj to co widzimy składa się na nasze pierwsze…oby pozytywne wrażenie.

Co składa się na frontend?

Programista Front-End bazuje na językach programowania interpretowanych nie przez serwer ale przez przeglądarkę. Musi znać trzy najważniejsze technologie jakimi są: HTML, CSS i JavaScript. Każda z nich pełni inne funkcje:

HTML – opisuje elementy strony i ich znaczenie przy pomocy tzw. znaczników (definiuje tytuły, opisy, tagi, hiperłącza, obrazki, buttony, tabele, akapity, nagłówki, nawigację i wiele więcej…)
CSS – określa wygląd strony html z poziomu pliku CSS, dzięki zastosowaniu znacznika w naszym elemencie strony html, a w nim zagnieżdżonej klasy, która następnie będzie miała odniesienie w pliku CSS po nazwie klasy html, jesteśmy w stanie sterować tym elementem html(definiować jego kształt, położenie, kolor itd.)
JavaScript – odpowiada za zachowanie wybranych elementów strony (nadaje im dynamiki i wiele więcej…)

Dodatkowo niezbędna jest znajomość RWD (Responsive Web Design) aby nasza aplikacja ładnie się skalowała bez względu na urządzenie na jakim jest otwierana oraz podstawowych frameworków czyli pewnych zasobów bibliotek i odpowiednich komponentów, odpowiadających za strukturę aplikacji oraz za to jak właściwie ona działa, a zaliczamy do nich:

  • Bootstrap – framework CSS, zestaw predefiniowanych gotowych klas z których możemy korzystać, odpowiada za tworzenie interfejsu graficznego strony/aplikacji.
  • Foundation – framework opierający się na regule mobile first, a co za tym idzie bardzo szybko i prosto możemy tworzyć mobilne wersje stron
  • Backbone – ma na celu wspomóc szablony tekstowe i automatycznie zapisywać wszystkie zmiany, które zachodzą w modelu
  • AngularJS – framework oparty na Javascript jego celem jest wspomaganie procesu tworzenia aplikacji internetowych
  • EmberJS – pozwala tworzyć aplikacje internetowe przy pomocy wzorca Model – View – Controller, automatyczna aktualizacja szablonu strony zdecydowanie ułatwia pisanie aplikacji
  • JQuery – jedna z najpopularniejszych bibliotek JavaScript – jQuery, która zdecydowanie ułatwia korzystanie z JS. jQuery daje możliwość wybierania dowolnego podzbioru węzłów modelu DOM, a także pozwala przygotować wyjątkowe animacje na stronie. Co ważne, przy korzystaniu z jQuery nie ma konieczności dostosowywania kodów do różnych przeglądarek, czyli wszystko działa poprawnie w każdej dosłownie przeglądarce.

Naszym zdaniem, programowanie w JavaScript, często z użyciem jakiegoś frameworka, to najbardziej pasujący opis do nazwy “frontend developer”.

Kim jest, czym się zajmuje, co musi umieć frontend developer ?

W wielu firmach, a co za tym idzie, ogłoszeniach o pracę, na stanowisko Frontend Developera szuka się osób ze znajomością: HTML, CSS oraz Photoshopa. Czasem nazwa stanowiska jest inna, na przykład “Web Developer”. Bardzo często zakres obowiązków takiego pracownika jest przesunięty w stronę bycia grafikiem, który dodatkowo ma uczestniczyć w końcowych etapach realizacji projektu w Photoshopie i exportu go aby następnie kodować  do HTML/CSS. Jest to trochę błędne użycie nazwy “Frontend Developer” Mamy tutaj bowiem do czynienia z grafikiem, którego obowiązki zostały poszerzone o kodowanie statycznych stron. Niemniej jednak, tego typu wymagania spotyka się w ogłoszeniach o pracę i warto zdawać sobie z tego sprawę. W firmach granice często są naginane / rozciągane.

Front-End Developer’ów możemy podzielić na 2 główne grupy:

1. Zajmuje się kodowaniem z projektów graficznych do layoutów WWW. Najczęściej wykorzystywane technologie to HTML i CSS.
2. Druga zajmuje się głównie programowaniem komunikacji pomiędzy interfejsem użytkownika a serwerem. Najczęsciej wykorzystywane technologie to Java Script (np. AngularJS) – najliczniejsza obecnie grupa

Postaramy się uogólniając w największym skrócie objaśnić drogę projektu, przy czym już na wstępnie zaznaczamy, że istnieje zatarta linia pomiędzy Front-end a Javascript:

1.Web Designer – tworzy projekt graficzny strony np. w Photoshopie, realizując m.in. prototypowanie.
2. Front-end Developer przekształca projekt graficzny na HTML i CSS. Może dodać jakieś pluginy i prostą obsługę zdarzeń.
3. Javascript Developer dodaje całą logikę do Front-endu, (której na ogół nie widać) np. autoryzację, komunikację z back-endem, złożone operacje (np. płatności) i inne bardziej skomplikowane rzeczy

Celowo uwzględniliśmy to w ten sposób ponieważ od kilku lat JavaScript sprytnie przedostaje się także na back-end ( po stronie serwera przy pomocy node.js) gdzie może odpowiadać i za frontend a także logikę aplikacji (back-end). Wtedy taki programista nazywany jest full-stack developer ale o tym w dalszej części…

Od osoby na stanowisku frontend developer wymaga się przede wszystkim bardzo dobrej znajomości języka JavaScript, dzięki któremu implementowane są wszelkie wymagane “ficzery” aplikacji (funkcjonalności). Praca nad frontendem aplikacji, polega m.in. na komunikacji z API (najczęściej REST) wystawianym przez backend w celu pobierania z niego danych. Następnie dane te są, w odpowiedni sposób, prezentowane przez część frontendową. Do tego mogą dochodzić różne operacje na tych danych, które odbywają się już po stronie przeglądarki internetowej. Frontend aplikacji służy też do odbierania informacji od użytkownika. Są one następnie odpowiednio przetwarzane i wysyłane do backendu, za pomocą tego samego API. W powyższych działaniach, bardzo przydatne są frameworki JavaScript, które dostarczają programiście narzędzi wspomagających wykonywanie opisanych powyżej zadań. Osoba, która świetnie porusza się w języku JavaScript, jest w stanie szybko przyswoić sobie zasady pracy z każdym frameworkiem JS, dostępnym na rynku. Dużo osób niestety zbyt szybko przeskakuje od nauki JavaScriptu do nauki jQuery lub wręcz stara się pominąć JavaScript. Uczenie się jQuery przed JavaScript może boleć. Więcej, jQuery swój szczyt popularności już miało. Coraz więcej osób stara się go unikać, wraca do czystego JavaScriptu aby kolejno przejść do wykorzystania jakiegoś frameworka np. Angular JS, React.js, Vue.js, Node.js.

Ponadto znajomość wielu różnego rodzaju narzędzi (SASS/LESS, webpack, babel, grunt/gulp, npm, git itd.) wspierających pracę, również jest ważna i przydatna.

Pojęcie frontend jest jednak na tyle szerokie, że bez wątpienia może się zdarzyć, że natkniesz się na jeszcze inny miks wymaganych kompetencji. Warto więc dobrze studiować ogłoszenia o pracę.

Co to jest backend?

Podczas gdy front-end to wszystko, z czym użytkownik styka się bezpośrednio, „Back End” zazwyczaj odnosi się do wnętrza aplikacji, które żyją na serwerze i często określa się go mianem „po stronie serwera”. Czyli całe jej zaplecze techniczne. Użytkownicy stron nie widzą panelu administracyjnego, zagnieżdżonych metod, klas, różnego rodzaju rozwiązań i całej struktury aplikacji stworzonej przez programistę. To właśnie to, co niewidoczne, ale niezbędne do funkcjonowania nazywamy backendem.

Co składa się na backend? kim jest, czym się zajmuje, co musi umieć backend developer ?

Back-endowiec powinien posługiwać się którymś z języków popularnie wykorzystywanych po stronie serwera. Służą w tym celu Java, Python, Ruby, Perl lub JavaScript (w środowisku Node.js). Osoby stojące na tylnej linii frontu budowy aplikacji muszą sprawnie korzystać z baz danych ponieważ po stronie backendu następuje obsługa danych przetwarzanych w systemie oraz ich zapis i odczyt w bazie danych. Inną, nabierającą na znaczeniu umiejętnością jest integracja rozwiązań opartych na chmurze, dzięki której miejsce na serwerze jest wynajmowane od specjalizujących się w tym przedsiębiorstw. Dodatkowo dzięki przynajmniej podstawowej wiedzy na temat technologii, w jakich wytwarzane są aplikacje frontendowe, będziesz bardziej świadomym i docenianym programistą backendu. Nie znaczy to, że powinieneś teraz zgłębiać tajniki CSS3 czy AngularJS, warto jednak zobaczyć, jak te technologie wyglądają i jaki będą miały wpływ na Twoją pracę.

Od tego nie uciekniesz. Język programowania jest jednym z głównych narzędzi pracy dla programisty i jego dobra znajomość to podstawa.

Java: to bardzo uniwersalny język programowania, oferujący współbieżność, który jest zorientowany na klasy i obiekty. Podstawowa wersja kodu bardzo mocno przypomina tę napisaną w C++, co zaowocowało łatwiejszą migracją starszych developerów do tego języka. Dzięki wykorzystaniu maszyny wirtualnej (ang. Java Virtual Machine) napisany kod jest niezależny od platformy. Motto, które przyświecało twórcom, to: „Compile once, run anywhere”. Java jest bardzo często wybierana do dużych korporacyjnych projektów, które będą rozwijane przez wiele lat.  Zacznij z nami naukę tego języka

Python: kod napisany przy pomocy Pythona może być wyjątkowo krótki, a zarazem stosunkowo prosty i czytelny. Dzięki temu bardzo często wykorzystywany jest do nauki programowania oraz projektów, które muszą być szybko wypuszczone na rynek (np. wszelkiego rodzaju start-upy). Python wykorzystywany jest w tak popularnych serwisach, jak Google i YouTube. Zacznij z nami naukę tego języka

Node.js i JavaScript: dzięki Node.js dokonał się swego rodzaju przełom. JavaScript, który do tej pory był uważany za język przeznaczony tylko do frontendu, przebojem wdarł się do aplikacji backendowych.

Większość projektów wykorzystuje relacyjne bazy danych i od ich poznania warto zacząć. W kolejnym kroku opłaca się zainteresować przynajmniej jedną bazą typu NoSQL – bazy tego typu coraz chętniej wykorzystywane są w większych projektach.

  • Oracle: to komercyjna baza danych obsługująca wiele różnych modeli (np. Object-relational i JSON), która rozwijana jest przez Oracle Corporation. Dość często można ją spotkać w dużych korporacyjnych projektach. Jednak mniejsze firmy częściej wybierają darmowe rozwiązania, głównie ze względu na dość drogie opłaty licencyjne.
  • MySQL: to darmowa, relacyjna baza, obecnie rozwijana również przez firmę Oracle. Jest centralnym punktem jednego z bardziej popularnych stosów technologicznych LAMP (LinuxApacheMySQLPHP).
  • PostgreSQL: PostgreSQL zalicza się do baz typu RDBMS (ang. Relational Database Management System) z rozszerzeniami obiektowymi.
  • MongoDB: jest to darmowa, rozwijana na licencji open source, dokumentowa baza typu NoSQLMongoDB przechowuje dane w formacie podobnym do JSON-a, dzięki czemu struktura przechowywanych dokumentów może być modyfikowana w czasie.

Nieunikniona jest również znajomość najbardziej pożądanych obecnie przez rynek pracy frameworków, bibliotek backendowych oraz posiadanie doświadczenia z systemem kontroli wersji Git. Niezbędne okaże się również doświadczenie w pracy z Linuksem jako systemem rozwoju i wdrażania. Back – end developer ma na celu zarządzanie technologią w taki sposób, aby to co stworzy front – end developer prawidłowo i dynamicznie funkcjonowała, bez jakichkolwiek zakłóceń.

Jeśli stoisz u progu kariery, to dobrze zastanów się nad którym obszarem chcesz się skupić. Z doświadczenia możemy powiedzieć, że można balansować pomiędzy nimi, ale w praktyce trudno w takiej sytuacji jest nadążyć za panującymi trendami – szczególnie jeśli rozpatrujemy frontend. Jednym słowem – jeśli chcesz być dobry, to lepiej skup się póki co nad jedną działką.

Full Stack developer ?

To połączenie umiejętności front – end developera oraz back – end developera coś na zasadzie wykwalifikowanego i zdolnego geniusza Javascript’u, który jest w stanie biegle posługiwać się wszystkimi umiejętnościami w celu zaspokojenia wszystkich potrzeb projektu.

Wyspecjalizowani Full Stack Developerzy są w stanie sprawnie działać w zakresie tworzenia ciekawych i zauważalnych przez użytkownika treści, ale jednocześnie są w stanie płynnie przejść w zakres obowiązków back – end developera i działać na elementach, które nie są bezpośrednio dostrzegane przez użytkownika.


Co wybrać ?

Trudno udzielić jednoznacznej odpowiedzi co wybrać. Wszystko zależy od Twoich osobistych preferencji. Backend bardzo często bywa złożony, ale w pewnym sensie jest bardziej uporządkowany. Istnieje tutaj wiele racjonalnych rozwiązań i wzorców projektowych, które można zastosować w tworzonym przez nas kodzie. Można czerpać z tego sporą satysfakcję.

Frontend z kolei bywa bardzo efektywny. Wystarczy trochę kodu i kilka bibliotek by stworzyć efektowną stronę, którą będzie mógł zobaczyć cały świat – sławę łatwiej zdobyć właśnie tutaj;-)

Na koniec warto jeszcze wspomnieć o zarobkach. Przez wiele lat dużo więcej można było zarobić po ciemnej stronie mocy, czyli na backendzie. Teraz różnica systematycznie maleje. Przyczyna tego stanu rzeczy jest prosta – szybki rozwój technologii w tym obszarze.

W pilnych sprawach zachęcamy do kontaktu telefonicznego