Backend vs Frontend vs Fullstack developer – która opcja jest dla mnie najlepsza?

Wstęp

Początkujący programiści często zastanawiają się od jakich technologii zacząć naukę programowania. Do wyboru jest wiele języków, frameworków czy ogólnie obszarów zainteresowania jak frontend, backend lub fullstack. Jeśli chodzi o sam język to tak naprawdę nie ma on tak wielkiego znaczenia. Te bardziej popularne języki w zasadzie umozliwiają tworzenie kodu po stronie serwera jak i klienta np Java + JSP, javascript / Node.js, Ruby on Rails etc. Wazniejsze jest pytanie czy chcę tworzyć oprogramowanie po stronie serwera, klienta czy może jedno i drugie?



 

Backend developer

Programowanie po stronie serwera najczesciej polega na implementacji logiki biznesowej dla mniejszych lub większych aplikacji webowych/mobilnych. Problemy napotykane w tym segmencie są zupełnie inne o tych po stronie klienta. Mamy tu do czynienia ze skalowalnością, obsługą dużego ruchu, komunikacją pomiędzy różnymi systemami, zagadnieniami architektury większych systemów itp. Dla części programistów tego typu wyzwania mogą być bardziej interesujące, dające satysfakcję z tworzenia złożonych struktur. Niesie to jednak ze sobą dużo większą odpowiedzialność – to serwer musi komunikować się z bazą danych, wystawiać zewnętrzne interfejsy czy obsługiwać miliony zapytań na minutę. Odpowiada również za walidację i bezpieczeństwo. Tu nie ma miejsca na pomyłki.

Tworząc oprogramowanie po stronie serwera nie mamy jednak „fajerwerków”, którymi moglibyśmy pochwalić się np. naszemu managerowi. Również w dniu, gdy robimy demo, klient nie widzi tego ile pracy zostało włożone by system działał – liczą się tylko wodotryski w UI. 🙂

Oczywiste jest, że bycie ekspertem w tym obszarze technologicznym wymaga ogromnej ilości czasu i nauki. Framewroki serwerowe są tu bardzo złożone i służą do tworzenia kompleksowych systemów informatycznych. Jednak do plusów można zaliczyć fakt, że koncepcje nie zmieniają się tu tak często jak dzieje się to na przykład w gronie aplikacji webowych.

 

Frontend developer

Będzie to osoba, która tworzy klienta do powyższego serwera czy innego interfejsu wystawiającego swoje API. Najczęściej jest to aplikacja webowa, mobilna Android/iOS. Praca nad takimi aplikacjami może sprawiać dużo frajdy ze względu na to, że jej wyniki są widoczne, namacalne i zazwyczaj budzą podziw jeśli mamy dobrego grafika 😉 Ogólnie najprościej jest zacząć programowanie właśnie od technologii webowych: html, css, javascript. Android czy iOS może być już bardziej wymagającą platformą, gdzie trzeba zapoznać się z obiektowymi aspektami języków programowania, do tego mogą dojść bardziej skompilowane problemy typu zarządzanie pamięcią i zasobami urządzenia. Niemniej jednak aplikacje klienckie wybaczają dużo błędów pod warunkiem, że API po stronie serwera jest poprawnie zaimplementowane. Z tego powodu bardzo często jakość kodu w tym obszarze pozostawia wiele do życzenia – programiści nie poświęcają należytej uwagi na czystość kodu czy pokrycie testami. Z tego też powodu technologie webowe/mobline częściej są wymieniane nowymi rozwiązaniami: jQuery, Angular, Ember, Backbone, objective C, swift, android java i kotlin, react native itd… – jest tego dużo więcej.



 

Fullstack developer

Programista, który odpowiada za rozwój aplikacji na wszystkich poziomach integracji od bazy danych, logiki biznesowej po aplikacje klienckie. Tacy programiści są najbardziej cenieni na rynku pracy, łączy się to zazwyczaj z większym doświadczeniem, gdyż potrzeba paru lat żeby opanować frameworki serwerowe oraz technologie web/mobilne. Jest to idealne połączenie dla osób, które interesują się UI/UX jak również chciałyby mieć doświadczenie z bardziej kompleksową architekturą systemów informatycznych.

Oczywiscie ciężko być ekspertem w obu obszarach tym bardziej, że frameworki webowe są teraz coraz większe i wymagają więcej nauki niż kiedyś. Aczkolwiek nauka w tym zawodzie popłaca w dosłownym tego słowa znaczeniu 🙂

 

***

Osobiscie w zasadzie od samego początku rozpocząłem swoją naukę programowania w opcji fullstack. Pierwsze kroki zacząłem z Java EE + JSP, później dodając do tego odrębne aplikacje klienckie w Angular.js lub Android. Dziś skaczę pomiędzy mikroserwisami w spring boot, web w Ember.js czy Android z językiem kotlin. Daje to lepszy obraz całego produktu, który tworzymy. API które implementuję po stronie serwera jestem też w stanie dostosować do problemów jakie wiem, że będą mieli programiści po stronie klienta.

Uważam, że im szersze mamy spojrzenie na spektrum technologii, będąc jednocześnie ekspertem w chociaż jednym obszarze sprawia, że jesteśmy lepiej postrzegani na rynku pracy, a jednocześnie nie tkwimy w jednej technologii bez możliwości zmian.

Oprócz „umiejętności twardych” czyli technologie, języki programowania, frameworki ważne jest również umiejetność pracy w zespole, rozumienie potrzeb klienta i tzw „big picture”. Dopiero wtedy stajemy się „Rock Star” wśród programistów – to są Ci, którzy osiągają sukces w zawodzie dużo większy niż pozostali. I tego Ci życzę 🙂

 

 

 

Posted on: Marzec 23, 2018

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *