Frontem i tyłem

12 marca 2020
Jakub Rojek Jakub Rojek
Kategorie: Dla klientów, Programowanie

Oprogramowanie komputerowe staje się coraz bardziej złożone i wieloczęściowe - o tym wiemy wszyscy i nie musimy tego rozwijać. Stało się tak nie w ostatnim czasie, ale w ostatnich kilku(nastu) latach, a małe programiki składające się z paru plików z kodem źródłowym są obecne praktycznie tylko w tutorialach języków czy algorytmów. Odczuwają to także klienci, którzy czasem podczas rozmów są zasypywani terminami technologicznymi, które częściowo stają się coraz bardziej jasne, a częściowo nadal są czarną magią. Czasem zleceniodawcy oprogramowania chcą też poznać zespół tworzący dla nich system i zrozumieć ich role. A trudno to zrobić, nie kojarząc pojęć "frontend" i "backend". Nimi właśnie dzisiaj się zajmiemy i wyjaśnimy, co właściwie oznaczają.

Jak już wiemy, aplikacje są coraz bardziej złożone i podzielone na warstwy. Daje to wiele korzyści, gdyż poszczególne fragmenty mogą być tworzone przez różnych programistów (a nawet różne zespoły), co nie tylko przyspiesza proces powstawania, ale także pozwala specjalistom z różnych dziedzin zająć się tym, w czym czują się najlepiej. Co prawda, nie jest to jeszcze poziom lekarzy, którzy rzeczywiście oddają się jednej konkretnej dziedzinie medycyny, ale i tak trudno znaleźć programistę, który z równą wprawą i pasją zajmie się strukturą wykonywania zapytań do bazy danych oraz wyśrodkowaniem tytułu podsekcji na jednej z podstron. Oczywiście, wszechstronni programiści istnieją i są w cenie, ale nie da się ukryć, że każdy ma jakieś preferencje, które w wielkim skrócie można opisać jako "lubujący się we frontendzie" lub "lubujący się w backendzie".

Frontend (w skrócie "front") jest tą częścią oprogramowania, którą widać - tak można najkrócej to ująć. Składa się na niego interfejs użytkownika (potocznie mówiąc "widoki"), layout aplikacji (czyli szablon graficzny), widoczna reakcja na poczynania użytkownika i wszystko to, co dzieje się po stronie przeglądarki (na przykładzie aplikacji webowych). Jeśli podziwiacie piękną "grafikę" strony, jej przejrzystość itd., to najczęściej składacie ukłony pracy grafików czy UX designerów. Natomiast, jeśli strona działa bez "zaciachów", poprawnie reaguje na kliknięcia, a wszystko w końcu sie doładowuje, to oznacza, że frontendowcy dobrze wykonali swoją pracę. To królestwo stosowania HTML-a, CSS-a (a właściwie różnych preprocesorów CSS-a) oraz przede wszystkich JavaScriptu oraz TypeScriptu. Oczywiście, że bardzo upraszczam, ale taki jest charakter tego tekstu, który ma nietechnicznym osobom dać pojęcie o tym, "z czym to się je".

Z kolei backend (w skrócie "zaplecze", choć jest to rzadko używane) to ta część "logiczna", która sama nie posiada interfejsu graficznego, natomiast odpowiada za dostarczanie danych do widoków i obsługiwanie tzw. logiki biznesowej, a więc wszystkich operacji mających wpływ na dane i przetwarzanie systemu. To tutaj znajdują się złożone algorytmy (jeśli są potrzebne) podpowiadające użytkownikom rozwiązania (choćby polecane strony do zaobserwowania). Także w tym miejscu znajduje się API, które jest udostępniane nie tylko frontendowi, ale często innym chętnym osobom, które chcą zintegrować z danym systemem (o ile projekt systemu zakłada taką możliwość). Można powiedzieć, że to ta niewdzięczna część (niczym sędzia piłkarski), która - jeśli działa prawidłowo - jest niezauważalna, ale jeśli coś jest z nią nie tak, to od razu zgłaszane są uwagi przez użytkowników. Dodatkowo, backendowcy rzadko mogą pochwalić się swoją pracą, gdyż o ile frontendowcy moga pokazać ładnie działającą (w ruchu) stronę, o tyle ci od "zaplecza" raczej nie rzucą na kolana towarzystwa pokazem modułu do autoryzacji. Po tej stronie paleta języków i technologii jest już znacznie szersza i wymieniając jedynie PHP, C#, Javę, Node.js czy Pythona z pewnością zwróciłbym przeciwko sobie zwolenników innych języków. Aha, w sumie już wymieniłem.

Warto również wspomnieć o tym, że te terminy są dość elastyczne - frontendów może być wiele w oprogramowaniu (np. aplikacji klienckich dla różnych grup użytkowników), podobnie jak i backendów (np. różnych API czy podserwerów aplikacyjnych). Co więcej, niektórzy "frontem" nazywają aplikację kliencką, a "backendem" - panel administracyjny. Tym niemniej, rozumienie tych części jako dużych części oprogramowania jest dużo częściej spotykane i "kanoniczne".

Oczywiście, obie funkcje są potrzebne i najczęściej są współdzielone przez wiele osób. System musi zarówno działać dobrze, jak i nieźle wyglądać oraz zachowywać się poprawnie. Istnieją również magicy, którzy lubią wędrować pomiędzy tymi stronami barykady - nazywamy ich Full Stack Developerami, choć jest to pojęcie trochę szersze, obejmujące też czasem zdolności umiejętnego wdrożenia aplikacji na serwer. Ale tym z kolei często zajmują się DevOpsi... Jak widać, trochę tych pojęć jest. To prowadzi nas do oczywistego wniosku, że tworzenie oprogramowania to praca zespołowa i poza frontendowcami czy backendowcami, należy również myśleć o grafikach, designerach, testerach, administratorach, kierownikach projektu i innych, naprawdę różnych osobach (nie wspominając już o zleceniodawcach, którzy dają wszystkiemu iskrę), którzy pomagają w osiągnięciu ostatecznego celu, jakim jest dobra i przede wszystkim spełniająca oczekiwania klienta aplikacja.

Mam nadzieję, że teraz, jeśli usłyszycie terminy "frontend" i "backend", poczujecie się jak w domu i z łatwością zidentyfikujecie, o której części aplikacji jest mowa. A jeśli nawet nie, to nie wahajcie się pytać - specjaliści od IT najczęściej tylko czekają na to, aby móc opowiedzieć o technikach swojej pracy. Tylko ostrzegam - czasem jest to trochę nudne.

Pozdrawiam - Jakub Rojek

Potrafimy całkiem sporo i co więcej, nasze umiejętności i zasoby są do Twojej dyspozycji. Zerknij na to, co możemy Ci zaoferować.

O autorze

Jakub Rojek

Główny programista i współwłaściciel Wilda Software, z wieloletnim doświadczeniem w tworzeniu i rozwoju oprogramowania, ale także w pisaniu tekstów na różnorakich blogach. Zaprawiony w boju analityk i architekt systemów IT. Jednocześnie absolwent Politechniki Poznańskiej i okazjonalny prowadzący zajęcia na tej uczelni. W wolnych chwilach oddaje się graniu w gry wideo (głównie w karcianki), czytaniu książek, oglądaniu futbolu amerykańskiego i e-sportu, odkrywaniu cięższej muzyki oraz wytykaniu innym błędów językowych.

Jakub Rojek