Full-stack developer, czyli człowiek orkiestra

1. Kim jest Full-Stack Developer i czy rzeczywiście jest człowiekiem od zadań specjalnych?

Jeśli jest się specjalistą “od wszystkiego”, to czy tak naprawdę jest się “do niczego”? Na te pytania warto samemu sobie odpowiedzieć po przeczytaniu poniższego artykułu. Zapewniamy jednak, że branża IT cały czas pędzi do przodu, więc i wymagania względem Full-Stack developera zwiększają się praktycznie z każdym dniem.

 

Najprościej ujmując, Full-Stack Developer to człowiek orkiestra. Właściwie jednak, to programista, który sprawnie porusza się po wszystkich warstwach stosu technologicznego (tak zwany stack). Szablonowo programista ten ma ma doświadczenie we wszystkich warstwach rozwoju witryn lub aplikacji internetowych.

 

W ogromnym skrócie Full-Stack developer to programista front- i back-end (wraz z ich frameworkami), tester aplikacji, administrator serwera oraz baz danych. Często też zarządza projektem i współpracuje z klientem na etapie planowania projektów.

 

Uspokajamy jednak, że od takiego programisty nie wymaga się, aby był ekspertem we wszystkich dziedzinach. Nie wyobrażamy sobie, aby znał wszystkie języki back-endowe, potrafił postawić chmurę na miarę Googla i samodzielnie stworzyć portal na miarę Facebooka. Powinien jednak znać podstawy pozwalające na swobodne “poruszanie się” w nich. To od Full-Stack developera najczęściej wymaga się “wyłapania” potencjalnych problemów na każdym z etapów produkcji projektu. Większość programistów Full-Stack specjalizuje się w jednym, konkretnym języku programowania backendowego (najczęściej Java, PHP, Python lub Ruby). Doświadczenie jednak pokazuje, że większość z nich praktykuje programowanie od wielu lat i ma za sobą wiele projektów komercyjnych, więc, pracują z więcej niż jednym językiem.

 

2. Kto najczęściej współpracuje z Full-Stack Developerem?

Odpowiedź jest prosta: małe i średnie firmy, których nie stać na zbudowanie pełnego zespołu, a projekty przez nie prowadzone są na tyle proste, że jedna osoba może wykonać jest kompleksowo, od A do Z. Do zadań Full-Stack’a najczęściej należy zbudowanie makiety z klientem, stworzenie wyglądu aplikacji lub witryny oraz zaprogramowanie wszystkich jej funkcjonalności. W dużym uproszczeniu wiąże się to z tym, że jedna osoba odgrywa różne role i oszczędza to personel, infrastrukturę i koszty operacyjne firm.

3. Co z gigantami w branży IT?

Obecnie od wszystkich członków zespołu wymaga się posiadania podstawowych informacji zarówno na froncie, jak i od zaplecza. To pozwala na swobodną komunikację w zespole. Nie oznacza to jednak, że w Full-Stack nie ma czego szukać w-większych firmach. Najczęściej zatrudniani są na stanowisku Full-Stack Engineer i wymaga się od nich umiejętności zarządzania projektem i zespołem. Jakie płyną z tego korzyści? Pomaga to utrzymać płynne działanie każdej części systemu, a programista może pomóc każdemu w zespole i znacznie zredukować czas i koszty techniczne komunikacji zespołowej.

4. Jak zostać Full-Stack developerem?

Pytanie ogólnikowe. Nie ma uniwersalnej odpowiedzi. Wszystko zależy od tego, jakich języków backendowych zamierzamy się nauczyć oraz z jakich frameworków będziemy korzystać. Przeglądając jednak ogłoszenia rekrutacyjne software housów, można określić znajomości jakich technologii wymusza na nas rynek na tym stanowisku:

 

  • ● Bezdyskusyjny must-have to budowania frontu z użyciem HTML oraz znajomość dobrej praktyki CSS z ukierunkowaniem na takie zagadnienia jak Layouty, Typografia czy użycie Preprocesorów (np. SaSS);
  • ● Praktycznie nie obejdzie się już bez umiejętności pracy z co najmniej jednym popularnym frameworkiem UI (przykładowo Bootstrap);
  • ● Swobodne operowanie podstawami języka JavaScript;
  • ● Dobra znajomość fundamentalnych koncepcji front-endu takich jak DOM, zdarzenia czy na przykład debugowanie w przeglądarce;
  • ● Świadomość na temat Testu Jednostkowego dla aplikacji JavaScript;
  • ● Basicowa znajomość środowiska Node.js oraz narzędzi które się z nim wiążą – Gulp, Webpack;
  • ● Dobra znajomość podstaw jednego z popularnych frameworków np. Vue.js, Angular, React ;
  • ● Dobra znajomość jednego języka typowego dla back-end np. PHP, Java czy Ruby;
  • ● Znajomość pracy z relacyjnymi bazami danych opartymi na SQL
  • ● Znajomość różnych technik przechowywania danych: cookies, LocalStorage, bazy typu NoSQL
  • ● Od znajomość usług sieciowych oraz zasad projektowania REST API też raczej nie uciekniemy;
  • ● Architektura nowoczesnych aplikacji webowych oraz fundamentalnych koncepcji takich jak MVC, mikrousługi itp. nie mają przed nami tajemnic;
  • ● Nie zapominajmy o współpracy z serwerem w chmurze od popularnego dostawcy: AWS, Heroku czy Azure.

… i na sam koniec:

  • Współpraca z systemem kontroli wersji Git.

 

5. Software stack, czyli gotowe modele

Software stack to zbiór programów, które są dostosowane do konkretnego projektu. Ich nazwy to akronimy stosowanych technologii w danym modelu (np. dla serwisów internetowych). W skrócie obejmuje on system operacyjny i jego zastosowanie. Przykładem jest pakiet oprogramowania dla smartfonów, któy zawiera system operacyjny wraz z aplikacją mobilną, przeglądarkami internetowymi i aplikacjami domyślnymi.

 

Full-stack musi opanować stos oprogramowania w zależności od celów zawodowych, projektu i określonych wymagań firmy. Przygotowaliśmy kilka popularnych zestawów oprogramowania. Przyglądając się tym stosom, można znaleźć wiele podobieństw w ich architekturze i wzorcach projektowych.

 

Przedstawiamy dwa przykłady Software stacków:

 

LAMP stack

LAMP jest szeroko stosowanym modelem dla stosów serwisów internetowych takich jak Facebook czy Wikipedia., a omówione poniżej elementy, wzajemnie się wspierają.
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

MERN stack

MERN jest zbiorem technologii opartych na JavaScript.Obecnie cieszy się ogromnym popytem, ponieważ jest szeroko wykorzystywany do tworzenia aplikacji internetowych.

To akronim czterech technologii:

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.

6. O programistach Full-Stack mitów kilka

Mit: Full-stack zna wszystkie rodzaje kodu.

Fakt: Być może zna on różne technologie, ale nie pisze każdego kodu.

 

Mit: Pisanie zarówno kodów frontendowych jak i backendowych.

Fakt: Niektórzy programiści mogą kodować sami całe strony, jeśli pracują jako freelancerzy. Nie jest to jednak takie oczywiste, że obowiązkowo piszą oni zarówno kod frontendowy, jak i backendowy.

 

Mit: Programista od wszystkiego, to specjalista od niczego,

Fakt: W rzeczywistości praca jako programista Full-Stack daje 360-stopniowy wgląd w różne komponenty, które sprawiają, że produkt programowy odnosi sukces. Dzięki tej świadomości programista Full-Stack Developer może dużo sprawniej stworzyć prototyp w porównaniu z inżynierem backendu lub frontendu. Ich spojrzenie na projekt produktu i architekturę są niezwykle pomocne.

 

Czy Full-Stack Developer jest Full-Stack Engineerem?

 

Tak i nie. Full-Stack Engineer to osoba na wyższym stanowisku, która posiada umiejętności programisty Full-Stack, ale może się także pochwalić w CV doświadczeniem w zarządzaniu projektami w takich dziedzinach jak administracja systemami (konfigurowanie, zarządzanie i utrzymanie sieci i systemów komputerowych).
Jeśli spojrzymy na popularne serwisy pracy z branży IT, wymagane na tym stanowisku jest co najmniej 3 letnie doświadczenia w rozwoju po wszystkich warstwach stosu technologicznego.

 

7. Podsumowanie

  • ●Full-stack web developer jest ekspertem technologicznym, który może pracować zarówno “z przodu” jak i z poziomu serwera każdej witryny lub aplikacji.
  • ●Deweloper full-stack pomaga utrzymać płynne działanie każdej części systemu.
  • ●Wymagane umiejętności wymagane do tego, aby stać się programistą Full-Stack Developer to: technologia front-end, języki programowania, baza danych, podstawowe umiejętności projektowe, serwer, praca z API i systemami kontroli wersji.
  • ●Software stack jest zbiorem programów, które są używane razem w celu uzyskania określonego wyniku.
  • ●Największym mitem dotyczącym deweloperów Full Stack jest to, że sami piszą wszystkie rodzaje kodu, co nie jest prawdą.

Full-stack developer

programista

programowanie

software stack

Czytaj również