Dobrze wykonana strona internetowa firmy to połowa sukcesu. Dlatego tak ważne jest, aby jej wygląd był dobrze przemyślany i dopracowany do perfekcji. Niezbędne jest, aby wyświetlała się w odpowiedniej rozdzielczości nie tylko w przeglądarkach internetowych, ale również, a może i przede wszystkim na smartfonach. Za cały design aplikacji webowej odpowiada nie kto inny jak Frontend Developer.
O codziennej pracy, wymaganych kompetencjach technicznych, ale i miękkich, opowiada Piotr Dąbrowski. Jak twierdzi Piotr, dobrego Frontend Developera nie jest łatwo znaleźć. Jak nim być? - odpowiedź znajduje się w poniższej rozmowie.
Diverse CG: Czym zajmuje się Frontend Developer?
Piotr Dąbrowski: Frontend Developer zajmuje się przygotowaniem aplikacji lub stron internetowych, które działają na przeróżnej maści przeglądarkach. Kluczową rzeczą jest przeglądarka, a na drugim miejscu – technologia. Rola Frontend Developera jest bardzo szeroka. Przyczyną tego jest fakt, że przeglądarki są wszechobecne, dostępne wszędzie oraz praktycznie w każdej możliwej formie. Praca Frontendowca, poza oczywistym tworzeniem stron internetowych, które działają w klasycznej przeglądarce na desktopie, może polegać także na programowaniu aplikacji mobilnych, czy też takich, które pojawią się na ekranach Smart TV, smart-lodówek, czy innych sprzętów IoT.
DCG: Dlaczego rola Frontend Developera jest teraz tak bardzo popularna?
PD: Obecnie przeglądarki internetowe są wszechobecne i często zastępują natywne rozwiązania z konkretnych platform. Dzięki temu rola Frontend Developera stała się bardzo pożądana przez klientów biznesowych. Głównym zainteresowaniem osoby o tej roli jest praca w języku JavaScript (JS) lub jednym z języków pochodnych (najczęściej mamy teraz do czynienia z TypeScript) i implementowanie na podstawie historyjek / wymagań ekranów i całej funkcjonalności, która się na nich dzieje.
DCG: Może się dużo dziać...
PD: Zdecydowanie. Od dość skomplikowanych formularzy, walidacji, animacji, ładowania dynamicznych treści, koordynowania komunikacji z backendem (wysyłanie requestów przez REST API lub GraphQL w nowszych projektach), po trzymanie całej logiki aplikacji i jej stanu po stronie przeglądarki klienta. To ostatnie o tyle wzrosło na znaczeniu, przez rozpowszechnienie się Single Page Application (SPA), które efektywnie przerzuca zdecydowaną większość odpowiedzialności za całą aplikację na stronę klienta. Po stronie backendu pozostaje na ogół tylko jakiś prosty moduł API, który odpowiada za reagowanie na requesty wysyłane przez aplikację frontową.
DCG: To duża odpowiedzialność.
PD: Tak, jest to bardzo dużo odpowiedzialności, ale na szczęście taki Frontend developer nie jest odpowiedzialny za wszystko. Z pomocą może mu przyjść Web/UI Designer, który zaopatrzy go w HTMLa i CSSy, tak by aplikacja była ładna i spójna z brandingiem klienta, albo UX Designer, który przygotuje cały prototyp w specjalnej aplikacji. Dzięki temu nasz developer będzie mógł się skupić na szczegółach i zaimplementować całą aplikację szybciej. Jest tak po części dlatego, że najwięcej przeróbek i zmienionych wymagań zostanie (przynajmniej w teorii) wyłapanych na etapie prototypowania.
DCG: Od czego zacząć swoją karierę Frontend Specjalisty?
PD: Od szczerego zainteresowania i chęci zrobienia czegoś prostego, co pomoże nam w jakiejś czynności codziennej. Najczęściej programiści bawiący się nową technologią robią ToDo listę albo różne wariacje Hello World, jednak najlepiej byłoby zrobić coś, z czego sami będziemy korzystać. Pamiętajmy, że musi być to też proste. A więc powinny to być rzeczy typu kalkulator spłat kredytu, lista zakupowa, jakiś prosty licznik kalorii, etc. Są najlepsze na początek. Podstawy programowania i algorytmów są jak najbardziej niezbędne, jeśli chcemy zrobić coś kreatywnego. Należałoby je w takim wypadku zawczasu też sobie przyswoić. Jest to też niestety najtrudniejszy krok. W szczególności dla osób, które nie wiedzą, jak działa pętla, czym jest zmienna, itd.
DCG: Jeśli podstawy nie są nam już obce i chcemy nauczyć się nowych rzeczy?
PD: W kolejnym kroku powinniśmy wybrać technologię (bez długiego zastanawiania się, najlepiej coś popularnego) i zacząć. Internet aż wrze od tutoriali, poradników, a każdy błąd, na który się natkniemy będzie dobrze opisany na Stack Overflow, więc jedyne co od tego momentu będzie nam potrzebne to samozaparcie i wolny czas. Na rynku popularne stały się w ostatnim czasie także BootCampy, na których prowadzący zarzekają się, że w miesiąc albo dwa zrobią z każdego programistę. Jednak w ich przypadku byłbym odrobinę ostrożny. 1-2 miesiące to niestety za mało, by od zera stać się wartościowym programistą, ale to też jest bardzo dobry sposób, by poznać praktyki pracy zespołowej, narzędzi do takiej pracy i realiów faktycznej pracy jako developer. Zakładanie, że bootcamp to idealne miejsce do nauczenia się, jak się programuje, może być trochę zbyt optymistyczne. Warto się nim zainteresować po odkryciu podstaw programowania (minimalnych chociaż).
DCG: Dobry Frontend Developer to osoba, którą…?
PD: Trudno znaleźć :)
Ze względu na to, że rola ta jest dość szeroka, to trudno znaleźć osobę, która będzie umiała wszystko. A niestety tego od dobrego Frontend Developera należy i trzeba oczekiwać. Dobry jest bowiem taki, który sam jest w stanie zaprojektować coś, co nie razi w oczy oraz potrafi wpasować się w istniejący wygląd aplikacji. Do tego kod takiej osoby powinien być przemyślany, wydajny i otestowany (przynajmniej przez samego developera, a najlepiej przez testy jednostkowe). Taka osoba powinna znać przynajmniej podstawy tego, jak wyglądają kwestie związane z bezpieczeństwem aplikacji internetowych. Idealnie byłoby także, gdyby potrafiła tworzyć kod, który będzie też używalny przez osoby niepełnosprawne (czyli całe zagadnienie Accessibility).
Jako ciekawostkę dodam, że kiedyś bardzo ważną odpowiedzialnością była wiedza o tym, czym różnią się przeglądarki i tym jak sprawić, by strony internetowe działały wszędzie tak samo. Obecnie nie jest to już tak ważną kwestią, bo era Internet Explorera nareszcie przemija i wiele firm otwarcie już go nie wspiera.
DCG: Czy certyfikaty mają znaczenie? Które warto zdobyć?
PD: Nie. Szczerze to nawet nie wiem, jakie certyfikaty są w ogóle dostępne na rynku w dziale Frontend Developmentu. Domyślam się, dlaczego tak jest - standardy i technologie frontendowe zmieniają się bardzo często, więc taki certyfikat po prostu bardzo szybko by się zdezaktualizował. Kandydat do tej roli powinien móc pochwalić się sensownym portfolio – to zdecydowanie lepsze. Screenshoty aplikacji (gdzie nie może pokazać kodu), a w innych przypadkach linki do repozytoriów na GitHubie są najlepszymi wyznacznikami jego umiejętności. I też dają dobre pojęcie o predyspozycjach kandydata (np. tego czy lepiej programuje, czy jego aplikacje są lepsze wizualnie, etc).
DCG: Jakie umiejętności miękkie przydają się na takim stanowisku?
PD: Umiejętność pracy w zespole - to standard. Obecnie rzadko kiedy programista pracuje samodzielnie nad jakąś aplikacją, tak więc umiejętność porozumienia i dogadania się z innymi członkami zespołu jest kluczowa. Poza tym, z uwagi na to że efekty pracy Frontendowca są bliżej klienta, musi także posiadać umiejętność prowadzenia efektywnej komunikacji z klientem - co istotne - także spoza naszego kraju. Angielski jest więc absolutnym must have ;)
DCG: Kto może zostać Frontend Developerem?
PD: Każdy, kto jest tym zainteresowany :) Są oczywiście naturalne predyspozycje, które pomagają bądź przeszkadzają w tej konkretnej ścieżce zawodowej.
DCG: Komu więc będzie łatwiej odnaleźć się na tym stanowisku?
PD: Osoba, która ma przynajmniej minimalny zmysł estetyczny, będzie miała na pewno dużo łatwiej, bo tak naprawdę końcowy efekt pracy Frontend developera jest najczęściej wizualny.
Osobiście uważam, że developerzy-puryści mogą mieć ciężkie życie pracując przy JS / TS. Często kod, który powstaje po stronie frontu jest nieco mniej rygorystyczny niż ten, który siedzi na serwerze.
W końcu JS to nie jest Java / C# / czy inne Enterprisowe rozwiązanie i nie każdemu będzie się to podobało. Przez backendowców JavaScript czasami jest uznawany za język ułomny i niegodny prawdziwego programisty. Pozostawię to jako przykład bez komentarza. Dla przykładu – w środowisku Back-endowym, JavaScript uznawany jest za język gorszej kategorii.
DCG: Wyzwania przy rekrutowaniu?
PD: Największym wyzwaniem, które przerobiłem na własnej skórze jako osoba prowadząca rozmowy techniczne z kandydatami, jest to, że trudno znaleźć osoby, które byłyby dobre we wszystkich aspektach, które są oczekiwane. Często jest tak, że ktoś nie potrafi w ogóle tworzyć interfejsów użytkownika, ale ma bardzo dobry zmysł analityczny, albo fantastycznie programuje w wybranym języku, ale nie testuje funkcjonalności, które tworzy, etc. Dodatkowo - podczas rekrutacji praktycznie zawsze kandydaci zainteresowani są środowiskiem programistycznym używanym w firmie. W przypadku Frontendowców panuje ogólna preferencja do używania w pracy Mac Booków lub - rzadziej - dystrybucji Linuxa. Zdarza się niejednokrotnie, że fakt, iż firma funkcjonuje na Windowsach jest przez kandydatów uznawany za czynnik dyskwalifikujący. Jest to zrozumiałe z uwagi na fakt, że wszystkie narzędzia, które na co dzień są przez nich używane, działają po prostu lepiej na Macach.
Najbardziej jest to odczuwalne przy firmach, które mają oparty cały stack technologiczny na produktach firmy Microsoft. Ograniczenia narzucone przez rozwiązania korporacyjne oparte na Active Directory, Azure czy IIS są częstokrotnie nie do obejścia. Dlatego mało kto ma ochotę "walczyć" i zamiast tego szuka oferty, gdzie stack jest bardziej przyjazny dla programisty.
DCG: Najważniejsze wskazówki na start?
PD: Jak już wspomniałem, przede wszystkim zacząć tworzyć aplikacje/strony internetowe, które nam samym dadzą przyjemność z ich użytkowania. Z uwagi na fakt, że wybór technologii i frameworków na froncie jest tak przytłaczająco duży, istnieje ryzyko pewnego zagubienia i trudności z podjęciem stanowczej decyzji, co do wyboru konkretnych bibliotek, których chce się użyć. Może to czasami, zwłaszcza na początku frontendowej drogi rodzić frustracje i poczucie, że nie umie się wybrać idealnego rozwiązania. Moja wskazówka jest następująca: to zupełnie normalne. Pamiętaj, że każde narzędzie ma wady i zalety. Niektóre z nich są dodatkowo niewidoczne na pierwszy rzut oka. Dlatego, w szczególności na początku kariery, należy wybrać to, co jest popularne na rynku (i co przynajmniej z grubsza nam pasuje) i stanowczo trzymać się tej decyzji. Dopiero po zakończeniu (bądź porzuceniu) projektu można, po wyciągnięciu wniosków z poprzedniej, zastanowić się nad użyciem nowej technologii. Brzmi może infantylnie, ale najprostsze rozwiązania są zawsze najlepsze. W Internecie aż roi się od stwierdzeń typu "nie działa ci walidacja w tym konkretnym przypadku w formularzu w React? Użyj najnowszego Angulara!" i dla początkujących osób tego typu rady są bezużyteczne i dodatkowo demotywują.
Mając to na uwadze, życzę cierpliwości, wytrwałości, metodycznego podążania za wyznaczonymi sobie celami i mini-projektami oraz udanego startu kariery. Powodzenia!