Nie musisz studiować, żeby być programistą. Beniamin Malinski – historia od Juniora do Seniora
Pracę jako programista zaczął już na studiach, naukę na uczelni przeplatał z praktyką w firmie. Na pierwszej rozmowie rekrutacyjnej nie pytali go o wyniki egzaminów, a konkretne rzeczy, które zbudował. Beniamin Malinski, Senior Web Developer w Asto UK opowiada nam o błyskawicznym przejściu z Juniora na Seniora. Ma też parę rad dla świeżo upieczonych programistów.
Spis treści
Porozmawiajmy o perspektywie juniora. Czy junior developer ma dziś łatwo na rynku pracy?
Teraz z powodu pandemii jest znacznie trudniej. Moim zdaniem osoby, które dopiero zaczynają karierę, potrzebują dobrych wzorów do naśladowania, żeby później móc wykorzystać tę nabytą wiedzę w praktyce. W przypadku pierwszej pracy to zadanie jest utrudnione i np. w Holandii wiele osób decyduje się na internships na 2. bądź 3. roku studiów, po którym dopiero aplikują do firm jako junior developer. Firmy chętnie ich przyjmują, bo nie muszą płacić rekruterom, staż też nie jest drogi, a takie osoby mogą zostać na dłużej. Jeśli ktoś myśli, że staż nie jest dla niego, warto mieć przygotowane proste projekty do zademonstrowania przy interview, żeby zwiększyć swoje szanse spośród innych kandydatów na junior developera.
Czego wymaga się od początkujących programistów?
Z mojego punktu widzenia ważne jest pokazanie, że szybko przyswajasz nową wiedzę i zadajesz pytania, kiedy czegoś nie rozumiesz. Nie musisz pierwszego dnia wprowadzać zmian w kodzie, ale powinieneś umieć komunikować się ze swoim tech leadem i prosić np. o pair programming nad jakimś zadaniem albo żeby opisali ci, jak zbudowany jest projekt. Należy pamiętać, że każdy kiedyś zaczynał swoją pierwszą pracę i na początku wszystko może wydawać się skomplikowane, ale twoi koledzy z zespołu są tam też po to, żeby wspierać się nawzajem. W dobrej firmie standardem jest onboarding nowych programistów, a dla juniora te procedury powinny być uproszczone, żeby po paru dniach taka osoba była w stanie już zrobić coś samodzielnie i uczyć się, stawiając małe kroki. W przypadku popełnienia błędu trzeba mieć nastawienie, że lepiej ten błąd popełnić w kontrolowanym środowisku i mieć okazję go zrozumieć, żeby go więcej nie wykonać.
Dużo jest prawdy w tym, że ważniejsze są umiejętności miękkie?
Nie zgodzę się, że są ważniejsze, ale dobrze jest zbalansować te cechy. Są programiści, którzy zakładają słuchawki, izolują się od pozostałych w grupie i rozwiązują trudne technicznie zadania, ale nie jest łatwo z nimi współpracować. Z drugiej strony możesz spotkać osobę bardzo dobrą w komunikacji, której brakuje umiejętności np. w programowaniu obiektowym. Jako przykład mogę podać swoją wymianę studencką w Singapurze. Podczas semestru spędzonego tam miałem szansę poznać ludzi z większą wiedzą techniczną, ale podczas laboratoriów mieli oni problemy z tym, żeby przekazać te informacje osobom, które nie znały kontekstu. Żeby ułatwić sobie zadanie, musieli posiłkować się prezentacjami, ale przez to nie zawsze dało się uchwycić szczegóły. Dobrze jest znać umiar w obu przypadkach!
Jak znalazłeś pierwszą pracę w Amsterdamie?
Jako student uznałem, że mogę skupiać się na zaliczeniach i robić coś swojego po godzinach, ale chciałem mieć dobre środowisko do przyswajania wiedzy praktycznej. Na wykładach często mieliśmy teorię i dużo uczyliśmy się na temat np. protokołów sieci albo baz danych, ale brakowało mi przełożenia tego na jakiś profesjonalny projekt potrzebny w pracy. Zdecydowałem, że można połączyć przyjemne z pożytecznym i zaaplikowałem bezpośrednio do paru firm przez strony typu monster.com i LinkedIn. Jedna z firm zainteresowała mnie swoim tech stack i faktem, że pozwolili mi pracować dowolną ilość godzin. Mogłem też zdecydować, nad czym chciałbym skupić się w pracy – przykładowo, kiedy miałem wykłady z AI, mogłem używać Google Cloud Functions do image recognition. W ten sposób zarówno studia, jak i praca pomagały mi zrozumieć dany temat.
Jak przebiegała rozmowa rekrutacyjna?
Na spotkaniu był mój przyszły manager i lead developer. Poproszono mnie o wytłumaczenie własnymi słowami, czym zajmuje się firma i co skupiło moją uwagę podczas szukania pracy. Zapytali mnie też, jak moja wiedza ze studiów mogłaby się im przydać – chcieli zobaczyć, że mam pomysł na to, jak rozwiązać jeden z ich problemów technicznych. Następnym krokiem było opisanie i analiza projektu, którym się wtedy zajmowałem. Akurat na jedno z zaliczeń skończyłem zadanie w assemblerze, na którym jest zbudowana Java. Podobało im się to, że miałem szansę zajmować się low level programming i po tym drugim etapie rozmowy zapytali, kiedy mogę zacząć. Co ciekawe, nie zwracano uwagi na moje wyniki ze studiów, tylko rzeczy, które zbudowałem. Powiedziałem, że chcę skończyć studia i wolę pracować part-time do tego czasu.
Czego nauczyłeś się w FashionUnited?
Przez pierwszy miesiąc czerpałem garściami wiedzę od innych w zespole, żeby szybko być w stanie wesprzeć ich w pracy i zadawać pytania, jeśli się na czymś zablokowałem. Zaraziłem się TDD i głównie pisałem w Node.js i języku Elixir, który jest mało znany. Otworzyło mi to oczy na inne technologie, które nie są tak typowe na rynku pracy, ale pozwalają zrozumieć, że każdy framework i język mają swoje wady i zalety. Pracowałem po raz pierwszy w zespole AGILE, gdzie mieliśmy planowanie zadań. Co 2 tygodnie pod koniec sprintu były demonstracje, nie spotkałem się wcześniej z takimi praktykami na studiach. Wyrobiłem sobie dużo dobrych nawyków, zwłaszcza jeśli chodzi o pisanie testów, rozwiązywanie merge conflicts, pracę w grupie. Używaliśmy też GraphQL, zanim stało się popularne, co później ułatwiło mi pracę w innych miejscach.
Na co położyłeś nacisk, gdy szukałeś pierwszej pracy jako programista?
Przede wszystkim nie zwracałem uwagi na zarobki, bo wiedziałem, że to przyjdzie z czasem. Najważniejsze było to, żeby mieć szansę nauki od lepszych, którzy np. piszą backend w Ruby od lat. Jednocześnie nie chciałem szufladkować się i uczyć tylko w jednym kierunku, żeby pozostawić sobie później możliwość zmiany specjalizacji, co zresztą zrobiłem. Chciałem spróbować wszystkiego i potem mieć porównanie, co najbardziej mi pasuje i czym chciałbym się zajmować po skończeniu studiów.
Dlaczego zmieniłeś tę pracę?
Podczas studiów w Singapurze miałem różnicę czasową około 8 godzin, co oznaczało, że musiałem zaczynać standup dopiero po południu. Przez pierwsze parę dni zrozumiałem, że jest to nieosiągalne, bo miałem też dużo zajęć i chciałem nawiązać nowe kontakty z ludźmi z uczelni, zamiast siedzieć przy laptopie do późna nad ranem. Szczerze – nie miałem w planach odejść z tej pracy jeszcze przez pewien czas, ale przed wyjazdem poinformowano nas, że nasza wiza studencka nie pozwala na bycie zatrudnionym i ciężko będzie zaliczyć przedmioty bez skupienia się na zajęciach. Próbowałem zdalnie pomagać zespołowi, ale musiałem uważać, żeby nie przesadzić z nadmiarem rzeczy do zrobienia.
Co zaciekawiło Cię w Gamesys?
Firma zajmowała się czymś zupełnie innym – z branży mody i backendu przeszedłem na frontend/full stack i robienie gier na przeglądarki. Myślałem też o sposobie na połączenie pracy inżynierskiej, co się udało – jeden z moich thesis supervisorów był z uczelni, a drugi z pracy. Miałem dzięki temu mniejszy stres, że zaniedbuję studia, bo wiedziałem, że było to pośrednio połączone z moimi codziennymi obowiązkami 9-5.
Dziś pracujesz w Asto UK jako Senior. Jak się tu znalazłeś?
Nie chciałem być utożsamiany na rynku pracy jako programista, który pracował głównie w branży gier. W Londynie nie można narzekać na ograniczony wybór, ale moim zdaniem jest więcej ofert np. e-commerce, niż w sektorze gier hazardowych na przeglądarki. Łatwo jest popaść w rutynę, ale taka wygoda może ograniczać rozwój. Uznałem, że trzeba podjąć wyzwanie i z tego powodu zdecydowałem się na przejście do sektora FinTech. Pozwoliło mi to wyjść nieco ze strefy komfortu i zapoznać z innymi technologiami.
Opowiedz, czym zajmujesz się na obecnym stanowisku. Za co jesteś odpowiedzialny?
Zajmuję się budowaniem frontendu w React. Piszę też czasem w Pythonie i wprowadzam zmiany podchodzące pod DevOps. Obecnie prowadzę zespół, w którym jest pięciu programistów włącznie ze mną, jeden QA tester i jeden UI/UX designer. Jestem pośrednikiem między zespołem technicznym, a ludźmi, którzy decydują o kolejnych krokach dla biznesu, co pozwala zaplanować i przygotować pracę. Jest to hybrydowa rola, co oznacza, że muszę przygotowywać prezentacje dla udziałowców firmy i prowadzić spotkania, a w wolnym czasie mogę skupić się na programowaniu.
Firma jest częścią banku Santander, co pozwala na poznawanie nowych ludzi z sektora finansów. Z drugiej strony unikamy większej biurokracji, bo jesteśmy od banku mniej zależni. Pozwala to również na współpracę z bardziej znanymi markami. Ciekawsze projekty, którymi się ostatnio zajmowaliśmy, to współpraca z eBay nad ofertami pożyczek dla aktywnych użytkowników oraz stworzenie biblioteki komponentów w Storybook. Przerzuciliśmy cały frontend z JS na TypeScript i zintegrowaliśmy GraphQL z backendem napisanym w Javie. Zmieniamy też często CI/CD pipeline na CircleCI, np. żeby automatycznie sprawdzać wygląd strony na różnych przeglądarkach typu Safari i Firefox.
Pracuję też czasem z programistami z Santander i iOS developerami nad integracją web app z iOS app napisanej w Swift.
Zostałeś Seniorem po zaledwie kilku latach. To nie za szybki przeskok?
Trzeba pamiętać, że w różnych firmach są różne tytuły – lead developer w jednej firmie może być seniorem w drugiej. Miałem to szczęście, że siedziałem przez ponad rok między dwoma tech leadami. Wykorzystałem to do podbierania różnych sztuczek, które przyspieszają pracę. Nigdy nie uciekałem od dodatkowych obowiązków, co zwykle wiązało się z większą odpowiedzialnością. Co 2 tygodnie w pracy mamy duże spotkanie opisujące wprowadzone zmiany, podczas którego zwykle miałem wiele do pokazania. Przez ostatnie 1.5 roku często pomagałem mniej doświadczonym programistom i prowadziłem rozmowy o pracę dla potencjalnych kandydatów. Nowo zatrudnione osoby spędzały ze mną zwykle pierwszy dzień – po to, żeby zrozumieć architekturę naszego projektu i jakich narzędzi używamy. Pół roku temu zgodziłem się kierować zespołem 3 programistów, co też daje nowe doświadczenie na przyszłość.
Podsumowując, moim zdaniem każdy powinien rozwijać się w tempie, które jest dla niego wygodne. Nawet jeśli ktoś ma tytuł “senior developer”, to nie oznacza, że wie wszystko. Podążanie za tytułem jest bez sensu – raczej jest na odwrót, czyli stajesz się seniorem przez długi okres, kiedy zgadzasz się na dodatkowe zadania i potrafisz szybko rozwiązać problem. Po pewnym czasie ludzie sami przychodzą do ciebie, kiedy potrzebują pomocy. Chcę tu zaznaczyć, że nadążanie za obecnymi trendami na rynku jest bardzo pochłaniające i wiedza zdobyta 5 lat temu nie jest już tak aktualna jak kiedyś. Praktycznie co miesiąc na horyzoncie pojawia się nowa biblioteka frontend do użycia i trzeba przyzwyczaić się na bieżąco tym interesować.
O czym w kontekście branży IT mówi się za mało?
Moim zdaniem dużo osób chce stać się programistami w związku z perspektywami finansowymi. Łatwo zobaczyć różnicę w jakości kodu między kimś, kto stał się programistą z pasji, a kto wybrał tę ścieżkę w pogoni za pieniędzmi.
Praca nad własnymi projektami jest czymś istotnym – zwłaszcza w początkowych latach kariery. Jeśli masz własne portfolio i np. uczestniczysz w grupach open source, to masz szansę znaleźć lepszą pracę niż ktoś, kto skończył trzymiesięczny bootcamp, ale nie wykazał inicjatywy poza tym.
Jakie masz rady dla młodych programistów – zarówno Juniorów, jak i Seniorów?
Na koniec chcę dodać, że nie wszyscy muszą wybrać drogę studiów, żeby stać się programistą. Obecnie w sieci jest tyle dostępnych tutoriali i darmowych kursów, że ktoś z dużą ilością samodyscypliny jest w stanie nauczyć się bardziej pożytecznych rzeczy w kontekście pracy. Z tego, co wiem, zajęcia na studiach w wielu krajach dalej odbywają się zdalnie, co tylko potęguje to zjawisko. Chyba że ktoś chciałby stać się researcherem i zrobić PhD, wtedy to co innego.
Beniamin Malinski. Software Developer w Asto/Santander UK, na co dzień pracuje w branży FinTech w Londynie i kieruje zespołem programistów. Obecnie współpracuje z takimi markami, jak eBay i Funding Circle. W 2019 roku ukończył Computer Science na uczelniach w Amsterdamie i Singapurze, a pracę w zawodzie zaczął na drugim roku studiów.