Wywiady

7 lat w jednej firmie to w IT wieczność? Nie, jeśli rośniesz tak szybko jak Allegro. Ciąg dalszy rozmowy z Wojtkiem Kasperskim

Czy można spędzić w jednej firmie technologicznej 7 lat i ani przez chwilę nie czuć nudy? Wojciech Kasperski, dzisiaj Senior Front-End Software Engineer w Allegro jest najlepszym przykładem tego, że tak. Jego przygoda z Allegro zaczęła się od zwycięstwa w hackathonie i stażu, o czym pisaliśmy na łamach Just Geek IT w 2019 roku. Dziś Wojtek wraca do nas, by opowiedzieć o tym, dlaczego krojenie „słonia” na kawałki to ważna umiejętność inżyniera i dlaczego po 7 latach Allegro wciąż jest dla niego świetnym miejscem do rozwoju.

W 2019 roku, po wygranej w hackathonie Brain Code, trafiłeś na staż w ramach programu e-Xperience. Jak w dużym skrócie potoczyła się Twoja historia od tamtego momentu do punktu, w którym jesteś dzisiaj?

Początek tej historii jest opisany w poprzednim artykule i zachęcam do przeczytania, jednak w bardzo dużym skrócie, co 2-3 lata udawało mi się wchodzić na poziom wyżej. Po stażu zostałem juniorem. Wyglądało to trochę inaczej niż w obecnej erze AI. Myślę, że wejście do branży IT było trochę prostsze. Jednak start od stażu wciąż uważam za najrozsądniejszą opcję.  Przez pierwsze dwa lata pracy – na stażu i jako junior – nauczyłem się działać w dużej organizacji, poznawałem cały stack. Na dobrą sprawę dopiero po pierwszym roku czułem się swobodnie w wewnętrznych technologiach i systemach. Podobnie działa to i teraz, widzę to też u nowych kolegów. Będąc midem, skupiałem się na tym, czego mogę robić więcej i jak budować lepsze, bardziej odporne na czas rozwiązania, które będą się przede wszystkim łatwiej skalować i które będzie można łatwiej rozwijać w dłuższej perspektywie. W końcu duże biznesy lubią stabilność i przewidywalność. Zanim stałem się seniorem, musiałem się wykazać, prowadząc kilka projektów – w moim przypadku były to inicjatywy związane z systemami powiadomień i nawigacją. To sprawiło, że jestem tu, gdzie jestem. 

Co najbardziej zdziwiło by „Ciebie z 2019 roku” w tym, czym zajmujesz się dzisiaj jako senior? Czy wtedy w ogóle wyobrażałeś sobie siebie w tym miejscu?

Na pewno nie spodziewałem się tak dużego znaczenia umiejętności miękkich, a nie tylko tych stricte technicznych. Na stanowisku seniorskim mamy znacznie większą odpowiedzialność – częściej trzeba coś ustalić z innymi zespołami, prowadzić i być odpowiedzialnym za konkretne inicjatywy, czy wykazać się proaktywnością i tworzyć własne. Wtedy wydawało mi się, że senior to po prostu osoba, która jest ekspertem w danej technologii i zrobi w niej wszystko, czego oczekuje biznes. Dziś wiem, że nie tylko o to chodzi. Mam też wrażenie, że im większe jest seniority, tym większy jest zakres obowiązków, a tym samym trzeba efektywniej podchodzić do zarządzania swoim czasem i umieć rezygnować z rzeczy, które nie są niezbędne. 

7 lat w świecie frontendu brzmi niemal jak wieczność. Co z Twojego ówczesnego stacku technologicznego / rozwiązań, z których korzystałeś odeszło do lamusa, a co stało się dzisiejszym „must-have” w ekosystemie Allegro?

Jak zaczynałem to w tak dużych systemach jak Allegro żyły jeszcze PHP i JQuery, a React, Vue, czy Angular miały swoje pierwsze wersje. I chociaż PHP to technologia backendowa, to wtedy niejednokrotnie zdarzało się, że funkcjonowała w synergii z frontendem. Do dziś widzę, że cały czas tworzone są rozwiązania w tych technologiach (np. WordPress pod proste strony wciąż jest dość dominującą technologią, ale pod aplikacje dla korporacji już niekoniecznie), to w firmach takich, jak Allegro dominują już rozwiązania oparte o frameworki takie jak wspomniane React, Vue, czy Angular, skrojone pod konkretne potrzeby biznesowe. Dużą nowością – w porównaniu z tym, jak to wyglądało 7 lat temu – jest też to, że część kodu aplikacji aktualnie generujemy za pomocą takich narzędzi jak np. Copilot. I to już w zasadzie jest nowy standard w branży, bez którego ciężko funkcjonować. Jeśli chodzi o przyszłość, to za jakiś czas część frontendu zapewne będzie generowana i personalizowana konkretnie pod użytkownika w zależności od jego potrzeb. Algorytmy LLM już teraz potrafią wizualizować pewne rzeczy na podstawie dostępnych danych, więc zgaduję, że w niedalekiej przyszłości część wizualna dużych serwisów będzie generowana na bieżąco. I nie zrozumcie mnie tu źle, content bywa generowany w ten sposób już teraz, ale niekoniecznie robi się to z elementami interfejsu, takimi jak menu, nawigacja, czy inne featury, które nie są częścią samej “treści”. 

Za Tobą 7 lat w Allegro. Co w tym czasie było Twoim największym zawodowym wyzwaniem? 

Mój “konik” i jednocześnie największe wyzwanie to systemy powiadomień. “Konik”, bo stworzyłem już dwa z nich. A wyzwanie, bo cała trudność polega na tym, że z jednej strony mamy taki serwis jak Allegro, który jest duży, ma wiele mikrousług pod spodem i dość skomplikowaną architekturę, a z drugiej jest wiele technologii od powiadomień i możemy poinformować użytkownika o pewnych rzeczach na wiele sposobów. I tutaj zaczynała się cała zabawa. 

Jako programista musiałem brać pod uwagę to, że z takim systemem może chcieć się zintegrować wiele mikrousług, za które odpowiadają różne zespoły, więc siłą rzeczy trzeba było stworzyć dość elastyczne i łatwe w integracji rozwiązanie. Jeśli chodzi o dobór technologii, miałem doświadczenie ze standardem WebPush i nie jestem pewien, czy drugi raz bym się na niego zdecydował. Głównie dlatego, że dużo trudności miałem ze stworzeniem stabilnego rozwiązania opartego o ten standard. Przykładowe problemy z jakimi się spotkałem to przychodzenie powiadomień z mało zrozumiałych powodów. To z kolei wymuszało konieczność bardzo szczegółowego wczytywania się w dokumentację systemów czy przeglądarek i łączenie tego z wiedzą o tym, jak działają np. urządzenia mobilne, aby finalnie zrozumieć, że czasem ze względu na oszczędzanie energii w tych urządzeniach proces Service Workera, odpowiedzialny za odbiór powiadomienia jest zabijany przez system. W tych projektach część rozwiązania opierała się też o PWA (Progressive Web App), które jest jeszcze taką nie do końca rozwiniętą technologią, szczególnie na urządzeniach z iOS. Inna kwestia jest też taka, że było to zadanie na pograniczu frontendu i kompetencji związanych bardziej z technologiami mobilnymi, więc finalnie całość była dość złożonym, ale ciekawym wyzwaniem.

Jaki był Twój„aha-moment” na tej ścieżce – taki punkt zwrotny, w którym zrozumiałeś coś kluczowego dla Twojego dalszego rozwoju?

Takim dość świeżym “aha-momentem”, który może wydawać się oczywisty dla niektórych inżynierów, było “krojenie” zadań na mniejsze, łatwiejsze do dowiezienia części. W IT wiele osób zna ten stan, w którym próbuje się pogodzić ze sobą agilowe podejścia do pracy z byciem dobrym skautem i zostawianiem kodu zawsze lepszym, niż się go zastało. Zdarza się, że to drugie bywa pułapką. Sam wierzę w swoją wydajność i wiem, że mogę coś napisać szybko, ale z tego powodu zdarzało mi się czasem trochę zagalopować i… zrobić znacznie więcej, niż początkowo zamierzałem bez jakiejś większej stop-klatki. Chcę przez to powiedzieć, że nie od razu byłem przekonany do domyślnego dzielenia stosunkowo dużych zadań na mniejsze części i dowożenia ich po trochu, ale kiedy zacząłem to robić, zauważyłem, że nie tylko ja, ale ogólnie jako cały zespół zaczęliśmy realizować większość zadań zaplanowanych na dany sprint w bardziej przewidywalny sposób i zyskiwać przestrzeń na zrobienie czegoś jeszcze (np. wypróbowanie nowej biblioteki / technologii, czy usprawnienie własnej pracy przez automatyzację). Dzięki temu wzrosła też nasza wydajność.

Najtrudniejsze było tutaj pamiętanie o tym i przekucie tego w nawyk, nauczenie się samokontroli. Nie zrozumcie mnie źle, nie chodzi o to, że nagle odkryłem agile. 🙂 Chcę przez to powiedzieć, że czasem duże zadania wyglądają na ,,one-man job”, a w praktyce okazuje się, że można je “pokroić” na mniejsze części, które łatwiej dostarczyć i podzielić się nimi z zespołem. Mocno polecam tu eksplorację ćwiczenia Elephant Carpaccio. W moim przypadku dużo dał mi przykład ze szkolenia o tej samej nazwie, na którym prowadzący powiedział, że czasem, aby sprzedać produkt, nie musimy od razu tworzyć całego skomplikowanego i w 100% gotowego rozwiązania. Czasem wystarczy prosta, statyczna strona z informacją na jego temat i elementami must-have, którą dzisiaj może nam nawet w kilka minut napisać jakikolwiek AI. Daje nam to już MVP i punkt wyjścia do dalszego działania, a jednocześnie szansę na to, że docelowy użytkownik od razu zweryfikuje nasze pomysły.

Ile w Twojej dzisiejszej pracy jest „czystego programowania”, a ile projektowania systemów, mentoringu i rozmów z biznesem o tym, co jest w ogóle możliwe do dowiezienia?

Ciężko mi tutaj odpowiedzieć, ile czego jest konkretnie. Na pewno wraz z doświadczeniem wyrabiamy sobie intuicję co do rozwiązań, i z coraz większym seniority takiego czystego programowania faktycznie jest trochę mniej na rzecz architektury, mentoringu, czy rozmów z biznesem. Zależy to też oczywiście od sytuacji i priorytetów w firmie. Dużo więcej jest też pracy researchowej – jako senior często muszę przeanalizować różne rozwiązania, zanim przedstawię jakieś konkretne propozycje dla biznesu. I na to na pewno poświęcam dużo więcej czasu, niż na początku swojej kariery.

Na stażu mówiłeś, że receptą na bycie dobrym programistą jest „nie zamykanie się w swojej bańce”. Jak z perspektywy seniora oceniasz tę radę? Czy po 7 latach dopisałbyś do niej jakiś „aneks”?

Myślę, że ta rada jest wciąż aktualna. Czy to z perspektywy seniora, mida, czy juniora. Ważne jest, żeby nasze decyzje nie były determinowane wyłącznie przez to, co znamy. Warto czasem przysiąść, zrobić research i dopiero na jego podstawie podjąć decyzję, czy to architektoniczną, czy technologiczną. Tym bardziej, że w epoce LLM ten krok stał się dużo prostszy i możemy przejść przez niego szybciej, niż kiedyś.

Przeszedłeś pełną drogę: Stażysta → Junior → Mid → Senior. Który z tych przeskoków był dla Ciebie najtrudniejszy pod względem mentalnym lub technicznym?

Myślę, że pierwsze etapy, czyli staż i bycie juniorem, to etapy, gdzie więcej jest “klepania kodu” i po prostu zdobywania punktów doświadczenia. Na poziomie mida w sumie trochę też. Mamy wyznaczane zadania, robimy je, wdrażamy na produkcję i ta praca jest trochę bardziej jasna. W momencie, w którym wchodzimy w buty seniora, częściej zaczynają nam się przydawać jednak miękkie skille i doświadczenie zdobyte na poprzednich etapach. Więcej jest też tutaj przekazywania wiedzy innym, co też w pewnym sensie jest wymagającą umiejętnością. Zaskoczeniem tutaj i czymś czego też nie mogłem zrozumieć było to, że jako senior też mogę i powinienem wyprzedzać oczekiwania i proponować inicjatywy biznesowe. 

Kiedyś chwaliłeś onboarding i pomoc starszych kolegów. Dziś to Ty jesteś „starszym kolegą”. Jakie to uczucie brać odpowiedzialność za rozwój innych i czy Tobie – jako seniorowi – wciąż zdarza się prosić o pomoc? Jak ten przepływ wiedzy wygląda w Allegro na co dzień?

Jest takie powiedzenie: nie rozumiesz tematu, dopóki nie potrafisz go wytłumaczyć w prosty sposób komuś innemu. Branie odpowiedzialności za rozwój innych paradoksalnie rozwija mnie najbardziej, bo często łapię się na tym, że tłumacząc innym sam zaczynam lepiej rozumieć dane zagadnienie. Jeśli z kolei chodzi o pytanie innych o pomoc to moim zdaniem w IT technologie zmieniają się tak szybko, że proszenie o pomoc czy second opinion jest wyrazem profesjonalizmu, a nie słabości. Pozwala zaoszczędzić czas oraz tworzyć lepsze i bardziej przyszłościowe rozwiązania. 

W samym Allegro wymiana wiedzy, następuje przez blogi techniczne, gildie, code review oraz post-mortemy, które obowiązkowo publikujemy po każdej awarii. A czasem trzeba pochodzić od zespołu do zespołu i samemu zgromadzić wiedzę. Mamy też już rozwiązania AI, które ułatwiają pozyskiwanie wiedzy domenowej. 

Sam najbardziej lubię moment, w którym w biurze staję przy tablicy, chwytam marker i zaczynam rysować pomysł na architekturę rozwiązania, po czym pytam kolegów z zespołu co o tym myślą. Oni zazwyczaj włączają się w dyskusję i dodają coś od siebie. W ten sposób powstają najlepsze rozwiązania, kiedy oprócz samej rozmowy tworzy się na naszych oczach też warstwa wizualna, która na bieżąco ewoluuje. Mam wrażenie, że wtedy ten przepływ wiedzy jest najszybszy, a jednocześnie każdy może kontrybuować do projektu rozwiązania. 

Mówi się, że 'nie samym kodem żyje inżynier w Allegro’. Czy angażujesz się w jakieś inicjatywy poza projektowe?

Pewnie, staram się pomagać w akcjach promujących firmę, czy kursach edukacyjnych, które tworzymy w Allegro. Angażuję się też w inicjatywy związane z wymianą wiedzy technicznej, jedną z nich jest Allegro Tech Meeting, czyli nasza wewnętrzna konferencja, na której dzielimy się wiedzą technologiczną. I czasem też mentoruję na hackathonach.

Firma z 2019 roku i ta dzisiejsza to dwie inne organizacje. Jaką firmą z perspektywy doświadczonego inżyniera jest Allegro dzisiaj? Co sprawia, że po 7 latach nadal chcesz rozwijać się właśnie tutaj?

W 2019 roku Allegro było firmą działającą jedynie na polskim rynku, dziś jest firmą działającą międzynarodowo. Przeszliśmy swego rodzaju transformację i właśnie to jest to, co trzyma mnie tutaj. Ciągły rozwój firmy sprawia, że nie ma tutaj miejsca na nudę, a ja jako inżynier czuję, że idę wraz z organizacją do przodu i się rozwijam, a ten rozwój pozytywnie rzutuje też na inne aspekty mojego życia. Dobrze jest po prostu być częścią tego wzrostu i wraz z jego postępem samemu pozyskiwać tutaj doświadczenie. 

Komu polecasz pracę lub staż w Allegro? Dlaczego #dobrzetubyć?

Myślę, że każdy kto nie boi się wyzwań, chce się rozwijać jako inżynier i jako człowiek na pewno znajdzie tutaj miejsce dla siebie. 

Zainteresował Cię ten artykuł? Zrób następny krok!

Zostań częścią Allegro. Dołączenie do naszego zespołu to możliwość pracy nad dużymi, przełomowymi projektami (takimi, o których mówi cała branża!) i możliwość pokazywania innym, jak to robimy. Tworzymy technologię, z której sami korzystamy każdego dnia – podobnie jak Twoi znajomi, sąsiedzi czy miliony osób w tej części Europy. Sprawdź na: https://jobs.allegro.eu/ 

Senior Front-End Software Engineer

Podobne artykuły