Chcesz zostać Full Stack Developerem? Sprawdź, czego się nauczyć.

Full Stack Developer. Wiele potrafi i nieobca mu 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 jak dobry plan na przyszłość, ale czego trzeba się nauczyć, aby zostać Full Stack Developerem?


Wygląda na to, że to coraz częściej wybierana ścieżka rozwoju programisty. Ostatnie badanie portalu Stack Overflow wskazuje, że prawie 64% jego użytkowników to osoby określające siebie jako Full Stack Developerzy. Najwięcej jest wśród nich Amerykanów, którzy rocznie zarabiają na tym stanowisku od 44,7 do 116,5 tys. dolarów. Ale czym tak naprawdę zajmuje się Full Stack Developer?


Człowiek-orkiestra


Full Stack 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, konfiguracją serwera. Dla wielu software house’ów posiadanie w swoim zespole Full Stacka 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ć Full Stack Developer? Przygotowaliśmy dla Was krótką listę.


Plan lekcji


Nie będzie zaskoczeniem dla nikogo, że Full Stack 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. Full Stack Dev 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. Bardzo często jest też wykorzystywany Twitter Bootstrap. 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 Full Stack 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 przy zaawansowanych aplikacjach można korzystać z Reacta lub nawet AngularJS/Ember.js/Vue.js. Wtedy potrzebne 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.


  • Back-end


Przechodzimy teraz do tego, co dzieje się „na zapleczu” witryn i aplikacji webowych. Z punktu widzenia Full Stack Developera większość technologii używanych na backendzie 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ą development i ułatwiają długofalowe utrzymanie aplikacji - o ile rozwija się ją zgodnie ze sztuką. I to jest właśnie coś, co oddziela słabych Full Stacków od tych dobrych: umiejętność wykonania aplikacji zgodnie ze sztuką.


  • Baza danych


Jeśli chodzi o aplikacje webowe i nowoczesne strony internetowe, pojawia się temat przechowywania danych. To oznacza, że Full Stack musi dobrze zapoznać się z bazami danych. Warto skupić się na możliwościach i zaletach danych relacyjnych (SQL), poznać bazy danych NoSQL. Trzeba również nauczyć się łączyć bazę danych z określonym językiem używanym w back-endzie, przyjrzeć się metodom przechowywania danych w pamięci (tutaj np. Redis).

Najważniejsza wydaje się tu dobra znajomość SQL, bo wadliwa baza jest jedną z najczęstszych przyczyn problemów wydajnościowych aplikacji webowych.


  • Architektura aplikacji webowej


I wreszcie trzeba się nauczyć, jak poskładać poszczególne technologie w jedną, złożoną aplikację webową. Chodzi o właściwą organizację kodu i oddzielanie plików, przechowywanie danych i plików multimedialnych. Warto nauczyć się optymalizowania wydajności aplikacji, poznać MVC (często stosowany wzorzec projektowy) i system kontroli wersji Git. Nie można także zapomnieć o znajomości protokołu HTTP i zasad projektowania REST API.


Full stack devloper 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ź.


  • Minimum wiedzy o administracji


Wiedzę o administracji aplikacją faktycznie można ograniczyć do minimum gdy robi się deployment na Heroku (chociaż nasz CTO uważa, że to jedno z najgorszych miejsc do hostowania aplikacji we wszechświecie). Naszym zdaniem warto jednak zadać sobie więcej trudu i używać innego rozwiązania. Warto zwrócić uwagę na Dockera, bo może on bardzo uprościć administrację serwerem gdy użyje się go umiejętnie, lub użyć właściwych narzędzi do automatyzacji, które będą nieco zależne od technologii.


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ęść developeró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 Full Stack 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.