Kiedy piszę ten wpis, jest początek marca 2020 roku. Jadę pociągiem do Warszawy. W pewnym momencie biorę smartfon do ręki i odpalam Instagrama. Po raz kolejny widzę reklamy wakacyjnych staży, oferowanych przez firmy z sektora IT. Jest tego mnóstwo… Nie tylko na Instagramie, ale także w innych mediach społecznościowych.
Codziennie widząc podobne spoty reklamowe, wiele osób zastanawia się nad startem swojej kariery w IT i zadaje sobie pytanie:
„Chcę zostać programistą, ale co tak naprawdę muszę zrobić? jak się za to zabrać? czego się nauczyć? z jakich źródeł czerpać wiedzę?” i tak dalej. Często też otrzymuję wiadomości z takim pytaniem.
W odpowiedzi zwykle proponuję, żeby na samym początku taka osoba, zrobiła dogłębny research i poznała główne programistyczne ścieżki, jakimi może podążyć. Czyli w głównej mierze poznała, czym zajmują się programiści backendowi, frontendowi, a czym programiści mobilni.
Dzięki tym informacjom, taka osoba będzie już miała zarys co ją interesuje, a ponadto, da to jej mocny punkt zaczepienia przy wyborze późniejszych technologii czy języków.
Jeżeli Ty także chcesz rozpocząć swoją karierę w branży IT i również zadajesz sobie wspomniane wcześniej pytania, pozwól, że przybliżę Ci pokrótce czym jest programowanie frontendowe, backendowe, mobilne i czym zajmują się ich programiści.
Front-end… co to?
W dużym uproszczeniu warstwa front-endowa sprowadza się do tego co widzi użytkownik, kiedy uruchomi stronę internetową w przeglądarce. Front-end obejmuje także logikę tej strony. Czyli na przykład… logikę odpowiadającą za zebranie danych wprowadzonych przez użytkownika i przekazanie ich do back-endu, w celu dalszego przetworzenia.
By lepiej to zobrazować, posłużę się przykładem logowania do strony banku.
- Programista front-endowy stworzył stronę logowania do banku (oczywiście z odpowiednimi polami na hasło i login).
- Użytkownik przechodzi to tej strony i wpisuje swój login, hasło po czym zatwierdza wprowadzone dane klikając przycisk „Zaloguj”
- Po tej akcji następuje wysłanie zebranych danych do back-endu. Tam z kolei następuje ich walidacja. Jako rezultat, back-end zwraca front-endowi odpowiedź np. pozytywną (logowanie się powiodło) wraz zestawem informacji (np. saldo konta).
- Warstwa front-endowa odbiera informację zwrotną z back-endu, po czym przekierowuje nas na dedykowaną stronę, na której wyświetla saldo konta.
Tak więc reasumując, programista front-endowy, w dużym uproszczeniu, jest odpowiedzialny za całą prezentację i logikę(podstawową) strony, którą widzi użytkownik.
Back-end… co to?
Na warstwę back-endową, składa się wszystko to co dzieje się z dala od oczu użytkownika. Można powiedzieć, że back-end stanowi techniczną stronę serwisu, działającą w tle i stanowiącą fundament umożliwiający sprawne działanie całości. Mimo, iż nie widzimy jej, to jest ona niezbędna do prawidłowego działania aplikacji.
Gdzieś usłyszałem ciekawe podsumowanie warstwy back-endowej. Brzmiało ono mniej więcej tak: „Back-end – to świat serwerów, aplikacji na nich działających i baz danych”. To całkiem trafne stwierdzenie. Oczywiście pamiętajmy, że bardzo uproszczone.
Reasumując, przykładowe działanie warstwy back-endowej wygląda następująco:
- Back-end otrzymuje dane z warstwy front-endowej
- Następuje proces obsłużenia tych danych (na przykład walidacja)
- W zależności od wyniku walidacji, następuje przygotowanie pakietu danych do wyświetlenia przez front-end.
W przypadku pomyślnego wyniku walidacji, wyciągane są informacje z bazy danych (na przykład saldo konta bankowego) i zapisywane w paczce dla front-endu.
W przypadku negatywnego wyniku walidacji, do paczki dla front-endu wędruje informacja o błędnym logowaniu. - Przygotowany zestaw danych jest przesyłany do front-endu, gdzie następuje jego prezentacja użytkownikowi.
Mobile… co to?
Rozpocznę od zdefiniowania czym jest programowanie mobilne gdyż nie jest to takie oczywiste. Nie jest to bowiem tylko programowanie aplikacji na smartfony, mimo iż jest to istotna jego część.
PS. Pamiętajmy, że warstwa mobilna, również jest swoistym front-endem.
Programowanie mobilne to programowanie na różnego rodzaju urządzenia mobilne. Mam tu na myśli tworzenie aplikacji na smartfony, tablety, urządzenia „wearable” a także różnego rodzaju czytniki kart które działają na mobilnym systemie operacyjnym. Mimo wszystko, będąc programistą mobilnym w głównej mierze będziesz pracował z takimi platformami mobilnymi jak Android czy iOS.
Dalszym etapem, może być poznanie narzędzi pozwalających na tworzenie aplikacji wieloplatformowych (zarówno dla iOS jak i Androida).
Programista mobilny tworzy aplikacje, które z reguły łączą się z backendem (ale oczywiście nie muszą) wszystko zależy od specyfikacji aplikacji. Dla przykładu, możemy mieć prosty notatnik, który zapisuje notatki w pamięci telefonu lub możemy pracować z aplikacją bankową, w której mamy proces logowania do serwisu (czyli łączenie z warstwą back-endową).
Zakończenie
Na zakończenie podzielę się z Tobą moją subiektywną opinią dotyczącą tego co wybrać. Na początek mocno rekomenduję ścieżkę front-endową. Z prostej przyczyny. Próg wejścia jest znacznie niższy. Mam tutaj na myśli to, że pisząc np. aplikację na smartfona, efekt widzimy już w zasadzie od razu. Inaczej wygląda to w przypadku back-endu, gdzie na widoczny efekt naszej pracy musimy poczekać nieco dłużej.