Cześć, tu Primotly! To już trzecia część naszej serii artykułów, w których zaglądamy za kulisy pracy w IT. Dzisiaj poznacie Maćka, który opowie więcej o tym, czym zajmuje się full-stack developer.
Przedstawiamy Wam zbiór wywiadów z ekspertami z różnych dziedzin IT. Początkujący deweloperzy znajdą tu nie tylko przydatne wskazówki, ale także inspiracje, jakie umiejętności powinni rozwijać i jakie kompetencje zgłębiać. Dla osób, które poszukują pracy w IT, będzie to świetny sposób na lepsze poznanie kultury naszej pracy i członków zespołu Primotly. Poprzednio mogliście poczytać o pracy back-end developera oraz programisty front-end. Dzisiejszy gość opowie o ścieżce kariery, która łączy obydwie te role.
Maciej Kemnitz – programista, który z Primotly związany jest od czterech lat jako front-end tech lead. Ma ponad dziewięć lat doświadczenia w pracy z technologiami webowymi. Pracował przy stronach firm takich jak znanylekarz.pl (docplanner.com) czy slowhop.com. Pasjonuje go biznesowy aspekt aplikacji webowych.
Deweloper full-stack zajmuje się programowaniem całej aplikacji. Można powiedzieć, że jest to połączenie front- i back-end developera. Do moich obowiązków należy również ogarnianie bazy danych i konfigurowanie środowiska. Jednak full-stack developer nie zajmuje się obowiązkami DevOps. Muszę znać pliki konfiguracyjne na front-endzie i technologie wspierające programowanie w React. Z kolei DevOps będzie odpowiedzialny za wdrażanie i przesyłanie danych na serwer.
Full-stack developer tak naprawdę jest w stanie odnaleźć się wszędzie. Oczywiście wszystko ma swoje plusy i minusy, a czasem lepiej sprawdza się rozdzielenie ról na front-end i back-end developera. Jestem pewien, że praca z full-stack developerem może zdecydowanie zaoszczędzić czas. Jedna osoba zajmuje się zarówno front- jak i back-endem, więc cały proces jest szybszy i wymaga mniej iteracji. Znajomość wszystkich zależności w projekcie ułatwia zaproponowanie właściwych rozwiązań. Z drugiej strony, szeroka wiedza oznacza, że programista full-stack może mieć mniejszą wiedzę w bardzo wyspecjalizowanych obszarach.
Na początku swojej kariery zajmowałem się tylko back-endem. Pewnego dnia zaproponowano mi zrobienie również frontu. Pomyślałem, że spróbuję. Poszerzanie kompetencji okazało się dla mnie dość łatwe.
Przesiadka z back- na front-end nie jest taka trudna. Gorzej, gdy trzeba poradzić sobie z odwrotną sytuacją, ponieważ back-end jest znacznie szerszą dziedziną. Gdy zacząłem pracować jako full-stack developer, zdobywanie nowej wiedzy przychodziło mi z łatwością. Jako senior nie miałem z tym większego problemu, bo znałem technologię. Po prostu musiałem nauczyć się front-endowego frameworka. Na początku nauka przebiegała trochę wolniej, jednak nie mogę mogę powiedzieć, że musiałem poświęcić na to bardzo dużo czasu, raczej wszystko przyszło całkiem naturalnie.
Najbardziej ekscytujące jest dobre wykonywanie swojej pracy. Dla mnie nie ma różnicy, czy to jest front-end czy back-end. Wcześniej pracowałem z językiem PHP, który używany jest tylko w back-endzie. To bardzo przydatna wiedza, ale patrząc z dzisiejszej perspektywy, raczej nie będę się w tym kierunku rozwijał. Obecnie cieszy mnie fakt, że pracuję z JavaScriptem i TypeScriptem, bo daje to dużo większe możliwości – zarówno od strony back-endu, jak i front-endu.
Pierwszą zaletą jest to, że nie ma potrzeby dzielenia się zasobami. Jedna osoba zastępuje dwie. Pełnoetatowy programista zna całą strukturę aplikacji, więc łatwiej jest znaleźć błędy. Łatwiej jest również proponować rozwiązania biznesowe, gdy widzi się szerszy obraz. Kiedy wiesz, co dzieje się po obydwu stronach, możesz łatwiej zaplanować całą ścieżkę dla produktu cyfrowego. Kiedy zasoby są współdzielone, czasami można wybrać niewłaściwe rozwiązania, ponieważ jeden programista bardzo mało wie o kodzie swojego kolegi. Praca full-stack developera może też zająć mniej czasu ze względu na mniejszą potrzebę komunikacji.
Najfajniejsze w mojej pracy jest zajmowanie się funkcjonalnością strony internetowej lub aplikacji całościowo. Kiedy pracujesz tylko we front- lub back-endzie, nie ma tyle satysfakcji z zakończenia projektu, bo byłeś odpowiedzialny tylko za część większej całości. Front-end i back-end nie są kodowane równolegle, więc kiedy wykonujesz tylko jedno z nich, musisz poczekać, aż ktoś inny wykona swoją pracę, aby zobaczyć końcowy rezultat. Jako programista full-stack mam wszystko pod kontrolą, a gdy dostarczam finalny produkt, wiem, że wszystko działa tak, jak powinno.
Jako full-stack możesz zajmować się zarówno front- jak i back-endem, czyli teoretycznie obydwie role mogą leżeć w kręgu twoich zawodowych zainteresowań. Praktycznie nie zdarza się, aby ktoś odrzucił full-stack developera, ponieważ większy stack technologiczny jest zawsze zaletą, a nie wadą. Z moich obserwacji wynika, że częściej specjalistów o szerszym zakresie umiejętności zatrudniają mniejsze firmy, ponieważ łatwiej jest zatrudnić jedną osobę, niż dwóch osobnych pracowników. W większych firmach często zatrudnia się osobnych ekspertów od front- i back-endu.
Jeśli chodzi o liczbę ogłoszeń o pracę – często są one podzielone na specjalistów obydwu dziedzin. Te dotyczące pracy stricte programistów full-stack są o wiele rzadsze. Często kryterium przyjęcia jest znajomość konkretnych technologii. Można być programistą JavaScrip – język ten jest używany zarówno we front- jak i back-endzie – jednak nie wszystkie technologie oferują taką wszechstronność.
Myślę, że dobry programista full-stack posiada przede wszystkim sporą wiedzę z zakresu back-endu. Bez tego będzie ciężko iść dalej. Zdolność analitycznego i logicznego myślenia jest również niezwykle istotna. Z drugiej strony, musisz znać się na architekturze aplikacji i mieć trochę wyczucia estetycznego. Krótko mówiąc – potrzebujesz solidnych kompetencji zarówno z zakresu front- jak i back-endu.
Jak tylko zaczniesz pracować z kodem, postaraj się zrozumieć całą aplikację, jej działanie i przepływ informacji. Jeśli pracujesz jako front-end developer, zainteresuj się tym, jak działa back-end. Warto w tym miejscu zaznaczyć, że full-stack developer najlepiej sprawdza się w świecie webowym. Warto więc w pierwszej kolejności zapoznać się z tym, jak działa HTTP. Tak jak wspomniałem, moim zdaniem lepiej zacząć od back-endu, jeśli to możliwe. Gdy zrozumiesz, jak to działa, front-end będzie dla ciebie łatwy.
Nawet jeśli mówimy tylko o webie, trudno będzie udzielić jednoznacznej odpowiedzi. Przede wszystkim musisz dobrze zrozumieć, jak działa Internet. Możesz po prostu poznać Pythona, który sprawdzi się zarówno we front-, jak i na back-endzie. To samo dotyczy JavaScriptu. Jednak niewiele technologii działa zarówno w obydwu kategoriach. Wszystkie te języki są często mieszane. Co jeszcze? Z pewnością przydatna jest znajomość HTML i CSS. Dobrze jest też mieć trochę wiedzy DevOps – na przykład czym jest AWS i jakie usługi oferuje.
React to obecnie jedna z najpopularniejszych bibliotek front-endowych. Ma dużą społeczność i wsparcie, więc jest doskonałym wyborem dla różnych projektów. Możesz łatwo zintegrować React z Symfony, który jest głównym frameworkiem PHP. Symfony ma również dużą społeczność, dobrą dokumentację i niewiele błędów. Jest to bardzo potężne narzędzie, które zapewnia wszystko, czego potrzebujesz zarówno do front-endu, jak i back-endu. Należy jednak pamiętać, że w tym miejscu pojawia się inna technologia, PHP. Myślę, że programistom full-stack będzie dużo łatwiej pracować z Reactem i Node.js.
Bardzo lubię tworzyć marketplace’y, bo z jednej strony są użytkownicy, SEO i ładny design aplikacji, a z drugiej strony kryje się wiele problemów algorytmicznych. Niewidoczny back-end musi działać bezbłędnie, aby można było nim dobrze zarządzać. Właśnie to połączenie wiedzy z różnych światów jest w tym wszystkim najciekawsze.
Primotly is a trading name of bPolNet Sp. z o.o.,
ul. Człuchowska 9/6 01-360 Warszawa, Poland
PL5223071494
365402632
0000636383