Sytuacja kobiet w IT w 2024 roku
26.06.20216 min
Bulldogjob

Bulldogjob

Chcesz zostać Fullstack Developerem? Sprawdź, czego się nauczyć

Sprawdź, jakie technologie powinieneś znać, jeśli chcesz zostać Full Stack Developerem.

Chcesz zostać Fullstack Developerem? Sprawdź, czego się nauczyć

Wiele potrafi i nieobca mu jest wiedza z różnych dziedzin. To programista, który świetnie zna nie tylko front-end, ale równie dobrze wie, co piszczy w back-endzie. Brzmi to jak dobry plan na przyszłość, ale czego tak naprawdę trzeba się nauczyć, aby zostać Fullstack Developerem?

Wygląda na to, że to coraz częściej wybierana ścieżka rozwoju programisty. Raport programisty z naszego Badania społeczności IT 2021 wskazuje, że 32% developerów określa siebie jako Fullstack Developera. Ale czym tak naprawdę zajmuje się taki specjalista?

Człowiek-orkiestra

Fullstack Developer to tak naprawdę specjalista, który potrafi zrobić aplikację webową od podstaw - od pierwszego commita do uruchomienia usługi. To znaczy, że zajmuje się nie tylko stroną wizualną webowej aplikacji, ale również jej logiką, interakcją z bazą danych, uwierzytelnianiem użytkowników czy uruchomieniem całości. Dla wielu software house’ów posiadanie w swoim zespole Fullstacka to sytuacja idealna. Można dzięki niemu skutecznie zoptymalizować koszty z prostego powodu: nie trzeba zatrudniać dodatkowych specjalistów od różnych technologii. Jakie technologie powinien opanować Fullstack Developer? Przygotowaliśmy krótką listę.

Dla nikogo nie będzie zaskoczeniem, że Fullstack powinien znać większość technologii wykorzystywanych do tworzenia aplikacji webowych. Trudno jednak wymagać od niego szczegółowej wiedzy na temat każdej z nich. Najważniejsze, żeby umiał pracować na front-endzie i back-endzie i był świadomy zachodzących tam procesów. Jest kilka rzeczy, na których warto się skupić.

Front-end

Na początek trzeba poznać to, od czego zaczyna każdy web developer: HTML i CSS. Fullstack Developer musi dobrze zrozumieć semantykę HTML, model pudełkowy CSS. Nie obędzie się też bez poznania któregoś z preprocesorów CSS - np. SASS czy LESS. Na początku kariery tworzenie responsywnych aplikacji może stwarzać problemy, ale po kilku miesiącach ćwiczeń staje się to drugą naturą.

Do trudniejszych zadań, które można spotkać w tym obszarze, należy optymalizacja krytycznej ścieżki renderowania czy uwzględnienie kwestii wydajności w swoim projekcie.

Nie możemy oczywiście zapomnieć o nauce JavaScriptu. Trudno dziś znaleźć stronę www czy aplikację webową, która w jakimś stopniu nie byłaby oparta o ten język. Jeszcze do niedawna do kompleksowej obsługi nawet dość zaawansowanych interakcji, wystarczyła znajomość jQuery. Ta biblioteka znacznie ułatwiała interakcje z DOM, obsługę zdarzeń czy wysyłanie żądań AJAX i to w zupełności wystarczało. Dzisiaj świat front-endu poszedł bardzo mocno do przodu i na głowie Fullstack Developera jest jeszcze kilka technologii.

Sam JavaScript pisze się zwykle w formie jednej z nowszych wersji ECMAScript (i przyda się Babel do kompilowania go do starszej, szeroko wspieranej wersji) albo TypeScript, który ma swój własny kompilator.

Dodatkowo tworzenie współczesnych aplikacji webowych często oznacza użycie Reacta lub Angulara czy Vue.js. React jest najbardziej popularny i 25% ofert pracy dla Fullstack developerów zawiera w wymaganiach tę technologię. Oznacza to w zasazie tworzenie sporych aplikacji, przez co wymagane są już narzędzia do zarządzania zależnościami. Tu można skorzystać ze stworzonego przez Facebooka rozwiązania - Yarn. W założeniu ma to być szybki, bezpieczny i wygodny menadżer zależności. Inną opcją jest NPM, który słynie między innymi ze ściągania gigantycznej ilości danych, o czym powstało kilka niezłych memów.

To jeszcze nie koniec, bo do sensownego podzielenia kodu może się przydać Webpack, który może też posłużyć do zbudowania tego, co finalnie trafi na serwer. Alternatywami są np. Grunt czy Gulp. A także dziesiątki innych narzędzi do budowania.

Radzimy, by w tym obszarze skupić się mocno na podstawach - czyli przede wszystkim biegłość w HTML i CSS oraz ostrożne stosowanie JavaScriptu.

Backend

Przechodzimy teraz do tego, co dzieje się „na zapleczu” witryn i aplikacji webowych. Z punktu widzenia Fullstack Developera, większość technologii używanych na back-endzie jest bardzo podobna. Wszystkie najbardziej popularne są dobrze rozwinięte i realizują dokładnie te same zadania, więc wybór jest tutaj kwestią upodobań. Na początek potrzebna będzie para: język programowania i framework do tworzenia aplikacji webowych. Tu lista najpopularniejszy wyborów wygląda tak:

  • PHP - Symfony (inspirowane Springiem) lub Laravel
  • Python - Django
  • JavaScript (Node.js) - Express, Meteor
  • Java - Spring
  • Ruby - Ruby on Rails


To oczywiście nie jest wyczerpująca lista. Można też próbować sobie radzić bez frameworków, jednak nie polecamy tego rozwiązania. Znacznie przyspieszają one development i ułatwiają długofalowe utrzymanie aplikacji - o ile rozwija się ją zgodnie ze sztuką.

Baza danych

Jeśli chodzi o aplikacje webowe i nowoczesne strony internetowe, pojawia się temat przechowywania danych. To oznacza, że Fullstack musi dobrze zapoznać się z bazami danych. Warto skupić się na możliwościach i zaletach danych relacyjnych (SQL), a póxniej poznać bazy danych NoSQL. Trzeba również nauczyć się łączyć bazę danych z określonym językiem, używanym w back-endzie - każdy język dysponuje frameworkami do obsługi warstwy danych, najczęściej w formie ORM (Object-Relational Mapping). Na późniejszmy etapie przyjrzeć się metodom przechowywania danych w pamięci (tutaj np. Redis).

Najważniejsza wydaje się tu dobra znajomość podstaw SQL i działania wybranego ORM. Wadliwe zbudowanie bazy danych i nieumiejętne korzystanie z ORM są głównymi przyczynami słabej wydajności.

Architektura aplikacji webowej

I wreszcie trzeba się nauczyć, jak poskładać poszczególne technologie w jedną, złożoną aplikację webową.

Fullstack developer musi sobie zdawać sprawę ze wszystkich warstw jakie przechodzi żądanie, które przychodzi z aplikacji do serwera. To łączy się niejako z nazwą stanowiska, bo stos technologiczny przekłada się w dużej mierze na cykl życia żądanie-odpowiedź.

W każdym z elementów stworzonych przez programistę Fullstack, ważne jest zadbanie o właściwą architekturę. Częste przeskakiwanie między poszczególnymi warstwami sprawia, że łatwa do zrozumienia architektura, w której wszystko ma swoje jasne miejsce, procentuje.

Taka architektura jest trudna do stworzenia bez zrozumienia i świadomego używania wzorców projektowych i architektonicznych. Absolutną podstawą jest MVC i architektura komponentowa. Dodatkowo zarówno frameworki na back-endzie i na front-endzie, używają określonych podejść i wzorców do rozwiązywania dobrze znanych problemów.

Warto dowiedzieć się więcej o komunikacji między back-endem i front-endem, a więc o HTTP i dobrych praktykach projektowania API (REST, GraphQL)

Minimum wiedzy o administracji

Wiedzę o administracji aplikacją faktycznie można ograniczyć do minimum, gdy robi się deployment na Heroku, czyli platformie, która maksymalnie upraszcza wdrażanie aplikacji. Naszym zdaniem warto jednak zadać sobie więcej trudu i poznać inne rozwiązania. Dziś standardem jest Docker, który pozwala na dostarczanie aplikacji w kontenerach. W kontenerze można "załadować" aplikację wraz ze wszystkimi jej zależnościami, co ogranicza konieczność administracji serwerami czy skomplikowanymi wdrożeniami.

Należy też zadbać o to, by aplikacja logowała przydatne do analizy wiadomości, dawała nam informacje, gdy nastąpi w niej błąd, a także była łatwa do monitorowania. Część deweloperów o tym zapomina, a to bardzo ważne z punktu widzenia niezawodności systemu.

Zdobycie poszczególnych umiejętności nie jest wcale łatwe i wymaga dużo pracy. Oprócz nauki różnych technologii, dobry Fullstack musi przede wszystkim zrozumieć procesy zachodzące zarówno na front-endzie, jak i back-endzie. Wtedy łatwiej będzie szukać odpowiednich rozwiązań i poszerzać swoją wiedzę zależnie od potrzeb.

Kluczowe jest w przypadku programisty Fullstack łączenie ze sobą wszystkich warstw systemu w całość. Zwykle na takim stanowisku nie jest wymagana bardzo dogłębna znajomość wszystkich meandrów używanych technologii, a raczej szybkie dostarczanie działających funkcji, które dodatkowo będzie łatwo utrzymać jako część systemu. Dlatego też bycie dobrym Fullstack developerem nie jest tak łatwe, jak wielu osobom może się wydawać.

<p>Loading...</p>