Znajdź złoty środek między swobodą i eksperymentowaniem. Historia Łukasza Mikołajczaka

Łukasz, kiedy znalazł pracę juniora, dostał sporo swobody w doborze narzędzi i tego, jak zakoduje daną funkcjonalność. – Jako “świeżakowi” bardzo mi się to podobało. Patrząc jednak z perspektywy czasu, mam świadomość, że nie było to najlepsze rozwiązanie na samym początku kariery – powiedział nam w rozmowie. Dlaczego swoboda nie jest najlepszym rozwiązaniem dla juniora? Tego dowiecie się z wywiadu z Łukaszem Mikołajczakiem, Software Developer w Nelson Schoenen BV.

swoboda eksperyment

W pierwszej pracy poznałeś w praktyce Pythona. Czego dokładnie dowiedziałeś się o tym języku?

Przed dołączeniem do zespołu, Pythona znałem tylko powierzchownie. Prosta składnia umożliwia jednak szybkie rozpoczęcie pracy i wdrożenie się w projekt. Dowiedziałem się, że Python skrywa wiele tajemnic i to co wydawało się oczywiste, wcale takie nie było po zagłębieniu się w temat. Poznałem też trochę ograniczeń tego języka i przestałem być zaślepiony tylko jego zaletami.

Wspomniałeś o ograniczeniach Pythona – powiedz coś więcej na ten temat.

Po pewnym czasie zrozumiałem, że przede wszystkim należy dobierać odpowiednie narzędzie do określonego problemu. Python jest narzędziem bardzo wszechstronnym, jednak kiedy zależy nam na szybkości działania naszego programu, bezproblemowej obsłudze wątków, czy też potrzebujemy aplikacji mobilnej, wtedy lepiej rozważyć inne opcje. Python jest również językiem dynamicznie typowanym i jest to zarówno zaleta, jak i wada – w większych projektach czasami ciężko się odnaleźć, jeśli nie wykorzystuje on chociażby anotacji typów. Potrzeba też więcej testów automatycznych, aby zapobiec błędom, które mogą pojawić się, kiedy nasza aplikacja działa produkcyjnie – tzw. “runtime errors”.

Jak oceniasz społeczność Pythona? Twoim zdaniem to język stale wspierany przez programistów?

Z mojej perspektywy – jak najbardziej, jest to język stale wspierany przez programistów. Wystarczy chociażby spojrzeć na ilość spotkań związanych z Pythonem, “release schedule” samego języka i jak jest on stale rozwijany. Python żyje.

Twoja ścieżka kariery potoczyłaby się inaczej, gdybyś pisał w innym języku?

Początkowo zacząłem uczyć się języka Ruby z nastawieniem na Ruby on Rails i to była ścieżka, którą chciałem podążać. Jednak na podstawie mojej znajomości tego języka plus ogólnej chęci do nauki, zaproponowano mi staż w GIS Support, firmie zajmującej się szeroko pojętym GISem i danymi przestrzennymi. Firma wykorzystywała głównie Pythona i Javascript. Stwierdziłem, że zamiast siedzieć samemu w domu i uczyć się na własną rękę, szybciej i bardziej efektywnie zdobędę przydatną wiedzę podglądając programistów, którzy pracują komercyjnie, nawet, jeśli będzie to Python, a nie Ruby. 

Czy moja kariera potoczyłaby się inaczej? Wątpię, moim celem było wejście w świat webdevelopmentu, bo to mnie interesowało. W webdevelopmencie obecnie wykorzystuje się wiele języków i to czy wybrałbym coś innego, nie zmieniłoby wiele w mojej karierze, po prostu zamiast w projekcie napisanym w Pythonie, pracowałbym w projekcie napisanym w Ruby, Javie, PHP, czy może nawet Go. Na początku warto nakreślić sobie ogólny obraz tego, co chcielibyśmy robić i dobrać do tego jeden z wiodących języków, który się do tego nadaje, jak i również nie bać się eksperymentować z innymi językami, kiedy mamy już solidne podstawy jednego z nich.

Dlaczego zainteresował Cię właśnie webdevelopment?

Jeśli chodzi o sam webdevelopment to zaczęło się od czystej ciekawości. Większość z nas odwiedza różne strony internetowe. W moim przypadku w parze z surfowaniem po internecie szła również ciekawość tego, jak to tak naprawdę jest zrobione, jak to działa. Strona wizualna nie wzbudzała we mnie aż takiej ciekawości, jednak abstrakcja, która za tym wszystkim stoi zawsze mnie ciekawiła i dawała motywację, aby rozwijać się w tym kierunku. Wiele satysfakcji daje mi odkrywanie różnych rozwiązań technologicznych stosowanych obecnie w webdevelopmencie i bycie trochę bardziej świadomym użytkownikiem internetu.

Czego do rozwoju potrzebuje junior? Dostałeś to w GIS Support?

W GIS Support na pewno dostałem wiele swobody w doborze narzędzi oraz tego jak dana funkcjonalność będzie zaprojektowana/zakodowana. Jako “świeżakowi” bardzo mi się to podobało. Patrząc jednak z perspektywy czasu, mam świadomość, że nie było to najlepsze rozwiązanie na samym początku kariery. Bardzo łatwo nabrać złych praktyk, które później powiela się w innych projektach i których ciężko się pozbyć.

Z drugiej strony, dostałem ogrom wsparcia, cierpliwości i pomocy od bardziej doświadczonych kolegów. Pozwoliło mi to stopniowo budować pewność siebie w tym programistycznym świecie i dawało motywację do systematycznej pracy. Wydaje mi się, że zrozumienie, wsparcie i przede wszystkim czas na dyskusję ze starszymi stażem kolegami to najlepsze, co może spotkać juniora w nowej firmie.

Mamy zatem konkretną radę dla firm zatrudniających juniorów: za dużo swobody nie jest dobrym rozwiązaniem. Zaciekawiła mnie pewność siebie, o której wspomniałeś. Chodzi ci o pewność, że dasz sobie radę, czy pewność, że już coś potrafisz?

Należy znaleźć złoty środek między swobodą i eksperymentowaniem, aby się rozwijać i poznawać nowe rozwiązania, a trzymaniem się dobrych praktyk, które powinny być forsowane przez starszych stażem kolegów. Dobre praktyki często w danej chwili nie mają dla nas większego sensu, jednak często w późniejszym etapie kariery można zauważyć, że nasz były kolega, który “czepiał się”, że coś ma być zrobione w określony sposób miał rację.

Jeśli chodzi o pewność siebie to miałem na myśli pewność, że już coś potrafię, mam podstawy, aby dalej się rozwijać. Trzeba również uważać, żeby nie być zbyt pewnym siebie, bo można łatwo spocząć na laurach.

swoboda eksperymentowanie

Po trzech latach podjąłeś pracę zdalną w firmie ze Stanów Zjednoczonych. Opowiedz o tym, jak ją znalazłeś.

Był to w sumie zupełny przypadek. Pod koniec grudnia, odezwał się do mnie na LinkedIn rekruter ze Stanów i luźno zapytał, czy chciałbym wziąć udział w procesie rekrutacji. Była to końcówka grudnia, a więc przerwa świąteczna. Miałem trochę czasu i stwierdziłem, że może warto byłoby się sprawdzić w procesie rekrutacji. Podszedłem do tego na luzie, chciałem to potraktować bardziej jako test tego, co potrafię i czego powinienem nauczyć się, żeby bez problemu przejść przyszłe procesy rekrutacyjne.

Byłem jednak bardzo zaskoczony, kiedy dwa tygodnie i 3 rozmowy później, otrzymałem ofertę, razem z informacją, że chcieliby, żebym dołączył do ich zespołu. Po krótkich negocjacjach zdecydowałem się spróbować i od lutego rozpocząłem pracę zdalną dla klienta z USA.

Z jakimi wyzwaniami wiąże się praca zdalna dla firmy ze Stanów? Przypuszczam, że strefa czasowa to nie jedyny problem.

Jako, że cała firma pracowała (i nadal pracuje) w pełni zdalnie (200-300 osób), nie miałem większych problemów, żeby się przystosować. Strefa czasowa również nie była problemem. Firma podchodziła do tego elastycznie, wystarczyło, że 4 z 8 godzin pracy pokrywały się z godzinami pracy w Stanach. Nie było to dla mnie problemem, a nawet podobało mi się to, ponieważ miałem 4 godziny zupełnej ciszy tylko dla siebie, a wszystkie rozmowy były zaplanowane w drugiej części dnia, kiedy to oni rozpoczynali pracę. Wyzwaniem na pewno była trochę inna mentalność i podejście do pracy. Nazwałbym to zorganizowanym chaosem.

Często pytam o to programistów, z którymi rozmawiam. Jakie mają podejście do pracy i organizacji programiści ze Stanów Zjednoczonych?

Nie mam wielkiego doświadczenia w pracy z programistami ze Stanów, była to przecież tylko jedna firma i nie sądzę, abym mógł generalizować, ale co mogę powiedzieć na podstawie moich obserwacji, to na pewno pozytywne nastawienie i praca w tak zwanym “zorganizowanym chaosie”, w którym niektórzy mogą mieć problem się odnaleźć. Wydaje mi się też, że na uwagę zasługuje tzw “can-do attitude”, czasami aż do przesady.

Czego nauczyłeś się w tej firmie?

Na pewno podszkoliłem język angielski. Pracowałem również bezpośrednio z zespołem klienta i nauczyłem się przekładać wymagania biznesowe bezpośrednio na zadania/nowe funkcjonalności systemu. Nauczyłem się lepiej szacować czas potrzebny na określone zadanie. Nie tylko kodowałem, ale miałem zespół czterech developerów, za który byłem odpowiedzialny. Był to duży skok dla kogoś tylko z 4 latami doświadczenia. Poradziłem sobie z tym, chociaż chwilami było ciężko. Nie żałuję jednak, bo bardzo wiele się nauczyłem.

Porozmawiajmy o tych ciężkich chwilach w prowadzeniu przez Ciebie zespołu. Opowiesz o najtrudniejszym momencie i kontekście decyzji, które wówczas podjąłeś?

Nie wiem czy był jakiś jeden szczególnie trudny moment. Prowadząc zespół nadal pracowałem również nad kodem. Zdecydowanie trudniejsze było skupienie się na tym, co sam mam do zrobienia, ponieważ cztery inne osoby pracowały nad rozwiązaniem przypisanych im zadań i pojawiały się pytania, prośby o pomoc, których nie można ignorować oraz decyzje, które trzeba było podejmować. Będąc liderem zespołu trzeba przełączyć się w tryb “multitaskingu” i chyba to było najcięższe i najbardziej wymagające

Od blisko roku mieszkasz i pracujesz w Holandii. Opowiedz o kontekście Twojego wyjazdu.

Tutaj również była to bardziej spontaniczna decyzja niż coś, co planowałem. Odezwał się do mnie rekruter i zapytał czy byłbym zainteresowany zmianą pracy. Była Polska, były Stany Zjednoczone to stwierdziłem, że można zobaczyć jak pracuje i żyje się na Zachodzie Europy, szczególnie w Amsterdamie, gdzie swoje siedziby ma wiele znanych firm technologicznych i startupów. Skusiła mnie również podkreślana przez firmę troska o balans pomiędzy pracą, a życiem prywatnym. Była to kusząca perspektywa po prawie dwóch latach bardzo intensywnej pracy dla firmy z USA.

Niestety bywa tak, że w firmach tylko mówi się o balansie między pracą, a życiem prywatnym. W tym przypadku były to jednak realne działania? Nie było nadgodzin?

Jeśli chodzi o moją obecną sytuację, to balans między pracą, a życiem prywatnym jest i nie były to słowa rzucane na wiatr podczas samej rekrutacji. Niderlandy słyną raczej z dobrego podejścia do tych kwestii i osobiście mogę to potwierdzić na podstawie moich dotychczasowych doświadczeń.

Co postawiłeś za cel wyjeżdżając do pracy w Nelson Schoenen BV?

Moim celem było i jest dalsze doskonalenie swoich umiejętności związanych z programowaniem, walidacja tego czego nauczyłem się do tej pory, jak i również doskonalenie umiejętności miękkich. Tym razem nie poprzez rozmowy z kolegami z pracy przez internet, ale bezpośrednio w biurze. Z “questów” pobocznych to doświadczenie życia w zachodniej stolicy, zdobycie nowych kontaktów, dalsze podróżowanie i odkrywanie świata z lotniska Schiphol pod Amsterdamem (obecnie jest to średnio możliwe z wiadomych przyczyn).

W jaki sposób firma dba o Twój rozwój?

Jesteśmy bardzo małym zespołem programistów (6-8 osób), który rozwija i utrzymuje platformę, używaną przez setkę tysięcy Holendrów. Samo to, jest już wystarczające, żebym ciągle się rozwijał. Przy aplikacjach na taką skalę w codziennej pracy spotykam się z problemami, których dotychczas nie musiałem rozwiązywać lub nawet nie wiedziałem o ich istnieniu. Jestem zachęcany do projektowania poszczególnych elementów/funkcjonalności systemu zamiast ślepego wykonywania zadań w danym sprincie. Wszyscy w zespole są bardzo niezależni. Poza tym nie ma problemu, aby brać udział w konferencjach branżowych, których w samym Amsterdamie i okolicach jest multum.

Wcześniej pracowałeś w większych firmach, to był duży przeskok dla Ciebie? Inaczej podejmuje się decyzje o produkcie w małym, a inaczej w dużym zespole?

Wydaję mi się, że proces podejmowania decyzji jest mniej sformalizowany w mniejszych zespołach. Kiedy cały zespół pracuje razem w jednym pomieszczeniu wszyscy komunikują się bezpośrednio, często bez maili, czy długich wątków w aplikacjach, które dany zespół wykorzystuje do komunikacji. Należy jednak pamiętać, żeby po podjęciu jakiejś decyzji, zostawić po niej jakiś ślad, udokumentować ją. Przeskok nie był duży.

Na koniec porozmawiajmy o teraźniejszości. Jak Holandia zareagowała na koronawirusa?

Wydaje mi się, że raczej spokojnie. Największa niepewność panowała w marcu, kwietniu i maju. Większość osób przeszła na pracę zdalną i raz na jakiś czas jadąc do biura wsiadałem w praktycznie pusty autobus, gdzie normalnie jeździ on co 7 minut i zajmuje się jedno z ostatnich miejsc siedzących. Po wakacyjnej przerwie od koronawirusa liczba przypadków znowu gwałtownie wzrasta i rząd Niderlandów wprowadza coraz więcej obostrzeń.

Jaki masz plan na siebie? Co może stanąć na jego przeszkodzie?

Nie mam jakiegoś długofalowego planu na siebie. Jeśli ktoś uważnie przeczytał odpowiedzi na poprzednie pytania to zauważy, że zarówno praca w Stanach, jak i Niderlandach to decyzje dość spontaniczne, nie zainicjowane przeze mnie, których jednak na chwilę obecną nie żałuję. Jeśli chodzi jednak o najbliższą przyszłość to obecnie planuję zostać w Niderlandach trochę dłużej. Zobaczymy, czy w przyszłości kolejny raz zmienię kraj zamieszkania, czy może już zostanę w Niderlandach. Jest również opcja powrotu do Polski. Nie wykluczam takiej możliwości. W przyszłości chciałbym również wrócić do podróżowania.

Na przeszkodzie moich planów może stanąć na przykład wypalenie zawodowe, o którym dość sporo mówi się w środowisku programistów. Work-life balance jest naprawdę ważny. Póki co ten problem mnie nie dotyczy, ale nigdy nie wiemy co przyniesie przyszłość.

Dla Ciebie sposobem na walkę z wypaleniem zawodowym jest zmiana pracy? Podróżowanie? A może coś innego?

Zmiana pracy na pewno daje nowe pokłady motywacji do działania. Zmieniamy otoczenie, projekt, poznajemy nowe sposoby rozwiązywania problemów i po raz kolejny dociera do nas ile jeszcze nie wiemy. Osobiście jednak nie traktuję zmiany pracy jako sposobu na radzenie sobie z wypaleniem zawodowym. Zmieniam pracę w momencie, w którym widzę, że od jakiegoś czasu się już nie rozwijam i raczej się to nie zmieni w najbliższej przyszłości w danej firmie.

Staram się “dawkować” sobie programowanie i stawiać wyraźną granicę pomiędzy pracą, a życiem prywatnym i nie próbować siedzieć nad kodem po kilkanaście godzin dziennie jak to bywało na początku. Mam swoje małe projekty, które staram się rozwijać po godzinach, jednak nie spędzam nad tym już tyle czasu co kiedyś. W moim przypadku takie podejście zdaje egzamin i pozwala cieszyć się tym, co robię.


Łukasz Mikołajczak. Software Developer obecnie odpowiedzialny za wdrażanie funkcjonalności i rozwijanie platformy e-commerce zarówno po stronie frontendu, jak i backendu. Fan nowych technologii, oprogramowania i projektów open source. W wolnych chwilach aktywny gracz interesujący się e-sportem oraz podróżami.

Zapraszamy do dyskusji

Patronujemy

 
 
More Stories
java czy c++
Java czy C++? Wady i zalety obu języków programowania