Code Review kluczem do udanego przebranżowienia. Od Reacta do Fullstacka z Node’em
Gdy Kinga zdecydowała, że chce zajmować się backendem, zespół Pragmatic Coders wydzielił dla niej część pracy do zrobienia, z którą wiedział, że sobie poradzi. – Pomocne było Code Review, przy którym brało udział zawsze dwóch doświadczonych NodeJS Developerów. Ich uwagi i komentarze były dla mnie świetnym źródłem wiedzy – powiedziała nam w rozmowie. Jak od środka wyglądało przejście z frontendu na backend? Dowiecie się tego z poniższej rozmowy z Kingą Wigurską-Bąk, Fullstack developerką w Pragmatic Coders.
Spis treści
Od czego zaczęła się Twoja przygoda z programowaniem?
Właściwie tak na poważnie to od mojej pierwszej pracy. Pracowałam w firmie wydającej kursy online. Zaczęłam na stanowisku osoby, która przesłuchuje je i sprawdza pod kątem wszelkich błędów np. w montażu. Dzięki temu miałam okazję dotknąć każdej gałęzi informatyki jaka istnieje – kursy były z programowania (z frontendu, z backendu), z photoshopa, z montowania video, z montowania audio, z robienia grafiki 3D.
Podczas przesłuchiwania tych nagrań upewniłam się, że programowanie to zdecydowanie to, co chcę robić. Z czasem okazało się, że firma z kursami poszukuje również programistów do rozwiązywania pewnych problemów i wtedy wkroczyłam na ścieżkę programowania.
Co wówczas przyciągnęło Cię do programowania? Jak wyobrażałaś sobie pracę programistki?
Myślę, że do programowania najbardziej przyciągnęła mnie chęć ułatwiania życia użytkownikom. Początkowo pracę programistki wyobrażałam sobie dość stereotypowo, co było pokłosiem filmów, w których hakerzy siedzieli nad klawiaturą w kapturach, często w ciemnym pomieszczeniu. Kojarzyła mi się z rozwiązywaniem zadań, a zawsze bardzo lubiłam łamigłówki logiczne.
Jak wyglądała rzeczywistość, czyli Twoje pierwsze zderzenie z pracą jako programistka?
Myślałam, że jest to nudna praca polegająca na pisaniu kodu. Na szczęście w Pragmatic Coders mamy partnerską relację z Klientem w projekcie. Nie jest tak, że przychodzę do pracy i jak taka małpka koduję to, co mi kazano. Biorę udział w dyskusjach, z zespołem jesteśmy osobami decyzyjnymi w tym co robimy, więc wiem, że to co robię ma sens, bo jest wynikiem naszych wspólnych ustaleń, w których też brałam czynny udział. Podoba mi się bardzo w jaką stronę to ewoluowało i to jest też zdecydowanie strona, w którą chcę iść, czyli, że oprócz samego programowania chciałam pracować z klientami biznesowymi.
Ówczesne wybory dotyczące technologii, od której zaczęłaś naukę, miały wpływ na to, czym zajmujesz się dzisiaj?
Właściwie zaczęłam naukę (jak to bywa na studiach) od języków niskopoziomowych, żeby nauczyć się podstaw programowania, algorytmiki. Tak naprawdę każdy język jest podobny, więc jak umiesz jeden, to każdy kolejny jest łatwiejszy do przysposobienia. Porównałabym to do jazdy na rowerze – uczysz się raz, ale później zmieniasz rower i każdy ma inne bajery, wystarczy tylko je opanować.
Jak zaczęłam pracę w pierwszej firmie to było zapotrzebowanie na Web Developera, czyli za tamtych czasów połączenie Frontend Developera i Backend Developera. Szczerze mówiąc, spodobała mi się ta ścieżka, bo jest ciekawym, przeciwstawnym przykładem do programowania stricte w jednym języku np. w C++, czy programowaniem gier. Tutaj efekt jest natychmiastowy. Jeżeli napiszesz jakąś stronę internetową to od razu widzisz jak ona wygląda. A w przypadku np. gier – trzeba kod skompilować, w przypadku aplikacji mobilnych – wrzucić na telefon. Zdecydowanie jestem mało cierpliwa na coś takiego. Wygrało to, że od razu widzę efekt tego co napisałam.
Czego dzisiaj szukasz w programowaniu? Co powinno być jego celem?
Dla mnie głównym celem programowania jest automatyzacja! Jak wspomniałam wcześniej do programowania najbardziej przyciągnęła mnie chęć ułatwiania życia użytkownikom. Nawet jak rozmawiam prywatnie ze znajomymi i usłyszę “ojej, znowu muszę zrobić listę czegoś”, to dopytuję o szczegóły. Pytam się: “ale na czym ta lista polega, co tam musisz dodać, ile razy dziennie to robisz”. Jeżeli słyszę kogoś jak mówi, że męczy go w pracy coś, co musi zrobić na komputerze i jest to jakaś powtarzalna czynność i jest pole do popisu, w którym można by użyć automatyzacji, to od razu staram się to wdrożyć.
Masz doświadczenie w pracy nad wieloma projektami. Który przyniósł Tobie najwięcej wiedzy?
Hmm… Nie wskażę jednego konkretnego, bo każdy był inny i to na każdym obszarze. Pracowałam w firmach stricte produktowych, które miały własny produkt, więc wtedy moim klientem była moja firma. Zupełnie inna praca jest w takiej firmie, kontra software house, czy consulting – gdzie klientem firmy jest osoba / firma, dla której mam stworzyć projekt. Zupełnie inaczej wygląda cały proces współpracy, ale każdy jest cennym doświadczeniem.
Pracę zaczęłam od firmy, która miała własny produkt. Zrobiłam dla nich stronę, później platformę e-learningową i myślę, że dzięki temu zdobyłam doświadczenie w angażowaniu się w to, co robię. Mam takie poczucie, że coś, co robię to coś mojego. Nie jestem tylko podwykonawcą, a ktoś inny będzie się przejmował, tym co stworzyłam.
Czego z kolei uczy praca nad własnym projektem bądź projektem wewnętrznym firmy, w której pracujesz?
Jeżeli pracujesz wewnątrz firmy, to wiesz, że pracujesz nad czymś, co jest dla Ciebie, dla osoby, która siedzi obok Ciebie. Tak na przykład miałam w pierwszej pracy, w której pomogłam z narzędziem do rozliczania faktur. Usłyszałam jak koleżanki z Działu Obsługi Klienta narzekały na wystawianie faktur w naszym systemie, bo musiały ręcznie kopiować dane przesyłane przez klientów. Stworzyłam więc taki mini backend do tego, w którym klikały jeden guzik “zrób faktury”.
Jest to zupełnie co innego, niż tworzenie projektu dla usera, persony, która jest wynikiem badań i po zakończeniu projektu nawet nie masz feedbacku i nie wiesz, co się z projektem dzieje. Cenię sobie to, że mogę się tak zaangażować.
Do Pragmatic Coders dołączyłaś jako React Developerka, a zostałaś Fullstackiem z Node’em. Z czym wiąże się taka zmiana?
Przede wszystkim jest to cenne, ponieważ poznanie dwóch stron pozwala zobaczyć obraz całości. Pomimo, iż zajmowałam się frontendem to interesowało mnie, co dzieje się z całą naszą aplikacją. Byłam ciekawa nie tylko tego, czy tabelka na stronie lub menu dobrze wygląda na telefonie, ale też dlaczego coś nie działa. Dzięki temu, że mogłam poznać ten drugi obszar – “ciemną stronę” backendu – wiedziałam, co jest nie tak, mogłam też sama wyłapać błędy i dało mi to też swobodę w pisaniu kolejnych rozwiązań.
Często zdarza się też tak, że praca nad backendem i frontendem nie jest zsynchronizowana, przez co pisząc jakąś stronę na frontendzie muszę czekać, aż ktoś z backendu dorobi mi do niej resztę, np. endpointów. W momencie jak zajęłam się także backendem to robiłam wszystko na raz i całe rozwiązanie było gotowe dużo szybciej.
Dodatkową korzyścią jest też to, że eliminujemy tzw. bus factor. Jeżeli mamy podział stricte na frontend i backend i zdarzy się, że frontendowcy odpadają, to koniec projektu, bo jeśli nikt nie robi frontendu to projekt leży. W przypadku, gdy każdy w zespole jest full stackiem, backendowcy są w stanie przejąć pracę frontendowców i odwrotnie.
I na koniec zmiana z Frontendowca na Fullstacka otwiera szerszy wachlarz ofert na rynku pracy. Bo nie szukam pracy tylko pod kątem Reacta, czy frontendu, tylko Fullstack Developera. Mogę zająć się np. tylko backendem – mam drugie tyle ofert.
W jaki sposób firma wsparła Cię w przejściu z Frontendu na Backend? Na czym polegało to wsparcie?
Na początku zespół wydzielił dla mnie mniejszą część pracy do zrobienia, z którą wiedział, że sobie poradzę. Jeżeli miałam jakiś problem mogłam się do nich zgłosić. Pomocne było też oczywiście Code Review, przy którym brało udział zawsze dwóch doświadczonych NodeJS Developerów. Ich uwagi i komentarze były dla mnie świetnym źródłem wiedzy.
Doceniane było to, że weszłam w backend i dzięki temu jako zespół też możemy szybciej pracować. Nawet nie wiem kiedy to się stało, gdy okazało się, że mogę brać na siebie całe historyjki, bo na przykład jestem już w stanie zrobić całą strukturę bazy danych, przygotować nowe endpointy czy kontrolery na backendzie, a na koniec podpiąć pod to frontend.
Kluczowe dla mnie było wsparcie mentorskie i praca na “żywym organizmie” przez co świetnie łączyłam teorię z praktyką.
Są jakieś wady tego rozwiązania? Zastanawia mnie, dlaczego inne firmy nie promują tej metody.
Myślę, że istotnym warunkiem na to, żeby to rozwiązanie było łatwe i opłacalne do wdrożenia jest projekt z backendem i frontendem napisanym w tej samej technologii. Wtedy taka osoba ma niski próg wejścia, ponieważ nadal porusza się w znanym sobie obszarze (np. React, czyli JavaScript na FE oraz Node.js na BE). W innym przypadku, gdy np. mamy backend napisany w Javie albo np. GO taka zmiana wymaga więcej pracy, wysiłku i przede wszystkim czasu.
Co możesz poradzić osobie, która chce przejść z frontu na backend w ramach JS?
Po pierwsze, nie bać się i zacząć coś robić. Po drugie, znaleźć dobry zespół (lub dołączyć do mojego). Jasne, że w naszej branży da się dużo samemu zdziałać, ale pomoc kogoś doświadczonego jest nieoceniona. Takie wsparcie na początek jest świetnym motywatorem do tego, żeby dalej się rozwijać.
Kinga Wigurska-Bąk. Fullstack developer, który uwielbia automatyzację – uważa, że nie warto wykonywać nudnych, żmudnych czynności, które może za nas wykonać maszyna. Programuje w JS, na backendzie Node.js, a na froncie React, ale chętnie zmienia kontekst i nie jest wyznawcą jedynego słusznego frameworka. Poza pracą zapalony kibic piłki nożnej, fanka Marvela i mistrzyni wypiekania muffinek.