Full-Stack Developer

Z Wikipedii, wolnej encyklopedii
Przejdź do nawigacji Przejdź do wyszukiwania

Full-Stack Developer – to programista, który sprawnie porusza się po wszystkich warstwach stosu technologicznego (ang. stack). Taka osoba ma doświadczenie we wszystkich warstwach rozwoju witryn lub aplikacji webowych wraz z pełną obsługą. Oznacza to, że Full-Stack developer powinien posiadać zarówno umiejętności zarówno w językach front-endu, back-endu i ich frameworków. Dodatkowo programista Full-Stack potrafi administrować serwerem, bazami danych, a ponadto zna się na wdrażaniu i utrzymaniu aplikacji.

Programista wszystkich warstw stosu technologicznego[edytuj | edytuj kod]

Full-Stack Developer przekłada wymagania użytkowników na ogólną architekturę i wdraża nowe systemy. Od takiego programisty nie wymaga się, aby był ekspertem we wszystkich dziedzinach, ale powinien znać podstawy pozwalające na swobodne “poruszanie się” w nich. Często taka osoba współpracuje również z klientami na etapie planowania projektów. Większość programistów Full-Stack specjalizuje się w konkretnym języku programowania backendowego (przykładowo Ruby, PHP czy Python) choć większość z nich, zwłaszcza jeśli praktykują programowanie od dłuższego czasu, pracują z więcej niż jednym językiem. Często zamiennie używamy nazwy Full-Stack engineer, od którego wymaga się również umiejętności zarządzania projektem (i zespołem).

Teoretycznie Full-Stack developer powinien poradzić sobie z projektowaniem, kodowaniem, debugowaniem, wdrażaniem oraz utrzymaniem kompletnej witryny lub aplikacji webowej.

Full-Stack Development[edytuj | edytuj kod]

Rozwój wszystkich warstw stosu technologicznego obejmuje praktycznie każdy projekt, nad którym programista pracuje (lub go buduje) zarówno od strony wizualnej widocznej dla użytkownika (front-end) jak i “z tyłu” strony lub aplikacji (back-end) w tym samym czasie. Zasadniczo, jest to każdy projekt webowy, który normalnie wymagałby pracy zarówno programistów front-end i back-end  - ale zamiast tego, Full-Stack Developer wypełnia rolę obu.

Umiejętności Full-Stack Developera[edytuj | edytuj kod]

Oczywiście wszystko zależy od projektu do którego poszukiwany jest programista, jednak można zebrać podstawowe umiejętności, których rynek wymaga od Full-Stack Developera.

Różnorodność umiejętności Full-Stack Developera.
  1. Technologia front-end. Programista Full-Stack powinien posiadać wysokie umiejętności w podstawowych technologiach front-endowych, takich jak HTML5, CSS3, JavaScript. Pożądana jest też znajomość innych bibliotek, takich jak jQuery, LESS, Angular i React JS.
  2. Języki programowania. Full-Stack developer powinien znać przynajmniej jeden język programowania po stronie serwera (przykładowo Java, Python, Ruby, .Net itp).
  3. Baza danych i cache. Znajomość różnych technologii systemu zarządzania bazą danych (DBMS) jest kolejną ważną umiejętnością programisty. MySQL, MongoDB, Oracle, SQLServer są szeroko wykorzystywane do tego celu. Mile widziana jest znajomość mechanizmów buforowania pamięci podręcznej takich jak varnish, Memcached czy Redis.
  4. Umiejętność podstaw projektowania. Od doświadczonych Full-Stack developerów wymaga się wiedzy z zakresu projektowania graficznego, prototypy oraz działania zgodnie z dobrymi praktykami UI/UX.
  5. Serwer. Nastawienie na obsługę serwerów Apache lub nginx jest wymagana w tej profesji. Dobre zaplecze w Linuksie ogromnie pomaga w administrowaniu serwerami.
  6. System kontroli wersji (VCS). System kontroli wersji pozwala programistom Full-Stack śledzić wszystkie zmiany wprowadzane w bazie kodowej. Wiedza Gita pomaga deweloperom zrozumieć, jak uzyskać najnowszy kod, aktualizować jego części, wprowadzać zmiany w kodzie innych deweloperów zachowując jego przejrzystość.
  7. Praca z API (REST & SOAP). Znajomość usług sieciowych lub API jest również ważna dla programistów Full-Stack. Pożądana jest wiedza na temat tworzenia i korzystania z usług REST i SOAP.

Dodatkowo, coraz częściej od Full-Stack developerów wymaga się, aby:

  • potrafili pisać jakościowe testy jednostkowe (unit tests);
  • byli świadomi problemów związanych z bezpieczeństwem, ponieważ każdy stack ma swoje własne słabe punkty;
  • w pełni rozumieli zautomatyzowane procesy budowania testów, dokumentowania i wdrażania ich na dużą skalę;
  • dobrze znali algorytmy i struktury danych.

Software stack, czyli zestaw programów[edytuj | edytuj kod]

Software stack to zbiór programów, które są używane razem w celu uzyskania określonego wyniku (a właściwie są dostosowane do wymagań konkretnego projektu) . Obejmuje on system operacyjny i jego zastosowanie. Na przykład, pakiet oprogramowania dla smartfonów zawiera system operacyjny wraz z aplikacją telefoniczną, przeglądarkami internetowymi i aplikacjami domyślnymi.

Programista musi opanować stos oprogramowania w zależności od celów zawodowych, projektu i wymagań firmy. Poniżej znajduje się lista popularnych zestawów oprogramowania.

Przyglądając się tym stosom, można znaleźć wiele podobieństw w ich architekturze i wzorcach projektowych

LAMP stack

LAMP jest szeroko stosowanym modelem dla stosów serwisów internetowych. Jego nazwa "LAMP" jest akronimem czterech elementów oprogramowania open-source.

L = Linux: System operacyjny o otwartym kodzie źródłowym.

A = Apache: Szeroko stosowane oprogramowanie serwera WWW.

M = MySQL: Popularna baza danych open source.

P = PHP: Język skryptowy open source po stronie serwera.

Te omówione powyżej elementy, wzajemnie się wspierają. Wiele popularnych stron i aplikacji internetowych działa na stosie LAMP, Przykład: Facebook, Wikipedia.

MERN stack

MERN jest zbiorem technologii opartych na JavaScript:

M = MongoDB: Popularna baza danych NoSQL.

E = Express: Lekki i przenośny szkielet programu internetowego.

R = React: Biblioteka javascriptowa do budowania interfejsów użytkownika.

N = Node.js: wieloplatformowe środowisko uruchomieniowe o otwartym kodzie do tworzenia aplikacji typu server-side napisanych w języku JavaScript.

Ten stos obecnie cieszy się ogromnym popytem, ponieważ jest szeroko wykorzystywany do tworzenia aplikacji internetowych.

MEAN stack

MEAN jest wolnym i otwartym stosem oprogramowania JavaScript do budowy dynamicznych stron internetowych i aplikacji internetowych.

M = MongoDB: otwarty, nierelacyjny system zarządzania bazą danych napisany w języku C++.

E = Express: Łatwy w użyciu lekki i przenośny szkielet programu internetowego.

A = Angular.js: Solidny framework do tworzenia programów internetowych w formacie HTML5 i JavaScript.

N = Node.js: wieloplatformowe środowisko uruchomieniowe o otwartym kodzie do tworzenia aplikacji typu server-side napisanych w języku JavaScript.

Zadania[edytuj | edytuj kod]

Trudno zdefiniować konkretnie zadania Full-Stack developera. Przeglądając jednak oferty pracy firm z branży IT, można wyszczególnić kilka powtarzających się działań:

  • Przekładanie wymagań użytkowników na ogólną architekturę i wdrażanie nowych systemów;
  • Zarządzanie projektem i komunikacja z klientem;
  • Tworzenie kodu backendowego (przykładowo Ruby, Python, Java, PHP);
  • Pisanie zoptymalizowanego kodu końcowego HTML i JavaScript;
  • Rozumienie, tworzenie i usuwanie błędów w zapytaniach związanych z bazą danych;
  • Tworzenie kodu testowego do walidacji aplikacji pod kątem wymagań klienta;
  • Monitorowanie wydajności aplikacji internetowych i infrastruktury;
  • Szybkie i kompleksowe rozwiązywanie problemów z aplikacją internetową.

Zarobki[edytuj | edytuj kod]

Wg portalu indeed przeciętne zarobki w IT dla Full-Stack developera w Polsce wynoszą obecnie średnio 10 508 PLN brutto. Dla porównania w Wielkiej Brytanii zakres płac wynosi od 3 300 do 5 830 funtów miesięcznie.

Bibliografia[edytuj | edytuj kod]