doswiadczenie programisty

Doświadczenie zdobywa się na wiele sposobów. Historia Krzysztofa Szafranka

– O ile wiedza zdobywana samodzielnie jest niezbędną podstawą, to wejście na kolejny, wyższy poziom jest dużo łatwiejsze, jeśli ma się okazję pracować z doświadczonymi programistami, którzy potrafią dzielić się swoją wiedzą. Ten ostatni element, tzn. chęć i umiejętność przekazywania wiedzy, jest bardzo istotny i sprawia, że solidny programista/programistka przeistacza się w mentora – powiedział nam Krzysztof Szafranek, Senior Software Engineer w Zalando SE.

Z rozmowy z Krzysztofem dowiesz się:

  • jak bardzo stresująca bywa praca managera IT,
  • dlaczego warto zadawać wiele pytań podczas rozmowy rekrutacyjnej,
  • w jaki sposób zdobywać doświadczenie przydatne na rynku pracy w IT.

Pierwsze co napisałeś jeśli chodzi o programowanie to grę w kółko i krzyżyk w Basicu. Dziś masz jeszcze czas na projekty po pracy? Na cokolwiek związanego z programowaniem?

Pogodzenie prywatnych projektów z pracą na etat jest na pewno trudniejsze niż łączenie ich ze studiami czy szkołą, ale od czasu do czasu nadal udaje mi się coś zbudować, np. stronę internetową. Lubię też wyznaczać sobie mniejsze cele, np. w ubiegłym roku postanowiłem poświęcić 2 godziny każdego tygodnia na przyjrzenie się, choćby powierzchownie, wybranym technologiom, które wcześniej znałem tylko ze słyszenia. Nazwałem ten system research sprints. Ostatecznie udało mi się zrealizować swój plan tylko połowicznie (28 sprintów zamiast 52), ale dzięki temu poznałem m.in. podstawy awka, seda, SQLite, go i ponad 20 innych języków, programów i bibliotek. Kilka z nich (np. go, sed i awk) spodobały mi się na tyle, że zainwestowałem w nie później więcej czasu.

Co sprawiło, że postawiłeś na programowanie? Był jakiś jeden element/sytuacja, która przekonała Cię do postawienia właśnie na to?

Paradoksem jest to, że jedną z ważniejszych decyzji w życiu, tę o wyborze kierunku studiów i ścieżki zawodowej, podejmuje się w młodym wieku, gdy ma się jeszcze dość ograniczoną wiedzę na temat rynku pracy czy nawet własnych zainteresowań. Mój początkowy plan zakładał studiowanie historii, bo zawsze lubiłem ten przedmiot. Ponieważ jednak perspektywa pracy jako nauczyciel niespecjalnie mnie ekscytowała, a w połowie szkoły średniej zainteresowałem się komputerami, ostatecznie postawiłem na studia informatyczne. Chociaż tę decyzję podjąłem w ostatniej chwili, tuż przed wyborem przedmiotów maturalnych, nigdy jej nie żałowałem. A historią do tej pory interesuję się hobbystycznie.

W czasie studiów zdobywałeś pierwsze zlecenia. Te doświadczenia w programowaniu, tworzenie stron i for, ukształtowały Ciebie jako programistę?

Dwie rzeczy, który wspominam z tego wczesnego okresu, to zainteresowanie grami komputerowymi oraz, nieco później, stronami WWW. Obie z nich wywarły duży wpływ na moje późniejsze wybory. Do tej pory budowanie stron i aplikacji działających w przeglądarce sprawia mi przyjemność i jest tym, czym zajmuję się na co dzień. Z kolei pisanie gier zawsze uważałem za jedno z najbardziej interesujących i najtrudniejszych wyzwań programistycznych. Kilkanaście lat później sprawiło to, że postanowiłem spróbować swoich sił w berlińskiej firmie Wooga, gdzie przez 5 lat byłem programistą gier i co do tej pory wspominam jako jeden z najbardziej satysfakcjonujących okresów w karierze.

Wróćmy jeszcze do czasów studiów. Na piątym roku studiów szukałeś pracy. Opowiedz o ówczesnym rynku pracy.

Początek lat dwutysięcznych to moment przejściowy, gdy rynek pracy przeniósł się do internetu i moja historia dość dobrze to pokazuje.

Pod koniec czwartego roku studiów uświadomiłem sobie, że za rok będę z dyplomem w ręku, ale bez pracy i doświadczenia. Przeprojektowałem zatem swoją stronę domową i wydrukowałem wizytówki, na których z dumą napisałem, że tworzę strony internetowe. Tak wyposażony udałem się na spacer po biurach w Rzeszowie, gdzie wówczas studiowałem. Celowałem w firmy, które ewidentnie potrzebowały nowej strony. Najlepsze, co udało mi się usłyszeć, to „odezwiemy się do pana”. Spoiler: nikt się nie odezwał. To było moje pierwsze i ostatnie w życiu poszukiwanie pracy offline.

Zniechęcony i bez większych nadziei na odpowiedź zgłosiłem się jako tłumacz do wydawnictwa Helion. Kilka tygodni później, gdy już niemal o tym zapomniałem, dostałem odpowiedź i próbne zadanie: przetłumaczenie rozdziału z książki o XHTML. Dziś mało kto pamięta XHTML, ale wówczas był to gorący temat, o którym wiedziałem całkiem sporo. Test wypadł pomyślnie i wkrótce dostałem pracę przy innym, znacznie większym tłumaczeniu.

Jakby tego było mało, poprzez znajomego z internetu otrzymałem zlecenie na wykonanie serwisu do sprzedaży używanych aut, które również przyjąłem i zdołałem ukończyć.

doswiadczenie programisty

Dlaczego nie znalazłeś wtedy zleceń? Czego w Twojej kandydaturze brakowało pracodawcom?

Na pewno nie miałem wtedy doświadczenia ani bogatego portfolio, ale dziś myślę, że problem leżał gdzie indziej. Znalezienie pracy zależy od tego, czy (1) kandydat posiada umiejętności, których (2) w danych momencie (3) potrzebuje pracodawca. Spełnienie tych trzech warunków, gdy szuka się pracy dosłownie na piechotę w średniej wielkości polskim mieście, może być dość trudne.

O ile umiejętności nadal są niezbędne, to znalezienie pracodawcy dopasowanego pod kątem drugiego i trzeciego kryterium jest o wiele łatwiejsze, gdy szuka się online w całym kraju albo na świecie. Od tamtego czasu każdą kolejną pracę znalazłem online, zwykle nawet nie szukając zbyt aktywnie.

W 2005 roku nawiązałeś współpracę z Wydawnictwem Helion. Przetłumaczyłeś na język polski dwie książki o programowaniu. Czego nauczyło Cię to doświadczenie?

Chociaż nie była to praca czysto programistyczna, to wspominam ten etap bardzo dobrze. To właśnie tam, współpracując z innymi tłumaczami i redaktorkami nauczyłem się… pisać. Oczywiście wydawało mi się, że posiadłem tę umiejętność dużo wcześniej, ale dopiero w Helionie nabrałem pewności i precyzji w posługiwaniu się polszczyzną, zwłaszcza interpunkcją.

Co ciekawe, nie wydaje mi się, aby ta praca znacząco poprawiła moją znajomość angielskiego: nad tym musiałem jeszcze popracować.

Zaprocentowało w późniejszym szukaniu pracy?

Nie jestem pewien, czy zaprocentowało w poszukiwaniach, ale na pewno już w samej pracy. Jestem mocno przekonany, że umiejętność pisania „prozy” bardzo przydaje się programiście. Najlepsi deweloperzy, z którymi pracowałem w każdej kolejnej firmie, potrafili precyzyjnie i poprawnie pisać. Przydaje się to przy dokumentowaniu kodu, pisaniu specyfikacji czy dyskusjach ze współpracownikami. Do tej pory co jakiś czas lubię czytać książki poświęcone pisaniu. Mogę polecić m.in. „The Sense of Style” S. Pinkera i „On Writing Well” W. Zinnsera.

To był też czas, kiedy założyłeś bloga o swoich bojach z przeglądarkami. Co programiście daje pisanie bloga?

Swoją pierwszą poważną pracę jako programista w firmie Roche znalazłem właśnie dzięki posiadaniu bloga. Był to jeden z niewielu wówczas blogów poświęconych frontendowi i mój przyszły szef znalazł mnie dzięki niemu. Później, gdy samemu budowałem zespół, zdarzyło mi się zatrudniać innych ludzi, którzy mieli dobre strony WWW. Jednego przyszłego kolegę zatrudniłem po tym, gdy znalazł i zgłosił mi błąd na mojej stronie.

Blog pomaga również w ćwiczeniu umiejętności pisania, która owocuje na co dzień. Wreszcie napisanie artykułu jest świetnym sposobem na to, aby dobrze zgłębić dany temat. Samo przygotowanie tekstu pozwala lepiej przyjrzeć się problemowi, a później można liczyć na komentarze i korektę ze strony czytelników, zwłaszcza jeśli serwis cieszy się popularnością.

Na marginesie, wnikliwy czytelnik tego wywiadu może zauważyć, że mój własny blog jest od dłuższego czasu, mówiąc najdelikatniej, mało aktywny. Nie oznacza to, że przestałem pisać: od kilku lat prowadzę dziennik (a w zasadzie dwa: jeden poświęcony pracy, a drugi prywatny). Dziennik pozwala mi na odnotowanie rzeczy, które uważam za warte uwagi, ale poprzeczka jest postawiona niżej niż dla bloga ze względu na brak czytelników.

Na podstawie jakich czynników określałeś wówczas, że praca w Roche pozwoli rozwijać Twoje umiejętności?

Przyznam szczerze, że trafiając do pierwszej firmy miałem sporo szczęścia, bo nie myślałem wówczas w zbyt świadomy sposób o rozwoju własnej ścieżki zawodowej. Po traumie pierwszych nieudanych poszukiwań byłem wniebowzięty, gdy otrzymałem ofertę od znanej, międzynarodowej firmy w Warszawie. Miałem szczęście, bo okazało się, że panują tam wysokie standardy i pracuje tam wielu doświadczonych ekspertów.

Dziś patrzę na to trochę inaczej: wybierając firmę zwracam uwagę na jej projekty i ich skalę, a rozmowy wstępne staram się wykorzystać nie tylko do przedstawienia własnych umiejętności, ale też do poznania ludzi i kultury firmy.

Pamiętasz projekt w Roche, który dał Tobie największego boosta motywacyjnego do dalszego rozwoju?

Zapadły mi w pamięć zwłaszcza dwa zadania. Pierwszym była przebudowa serwisów intranetowych tak, aby korzystały z dobrodziejstw CSS takich jak kaskada. Byłem tam pierwszą osobą, która znała CSS i pomimo pewnych wyzwań (szczególnie jednego, znanego pod kryptonimem IE6) udało nam się zbudować system, który był używany przez wiele kolejnych lat.

Ale dużo większym wyzwaniem był awans na pierwsze w życiu stanowisko managerskie. Byłem najmłodszym kierownikiem w dziale i była to oznaka dużego zaufania ze strony mojego ówczesnego szefa. Popełniłem wtedy pewnie sporo błędów, ale też nauczyłem się mnóstwa rzeczy, np. rekrutacji, rozwiązywania konfliktów i planowania.

Przejdźmy do Twojego wyjazdu. Opowiedz proszę o kontekście oferty pracy w Nokii – skąd wiedzieli, że potencjalnie jesteś zainteresowany przeprowadzką?

Myślałem wówczas o wyjeździe, bo lubiłem pracę w międzynarodowym środowisku i wyjazd za granicę uważałem za naturalny krok w rozwoju i możliwość poszerzenia horyzontów. Być może fakt, że w tym czasie zacząłem blogować po angielsku mógł być jakąś wskazówką dla rekruterów.

W Nokii nie byłeś managerem, a programistą. Potraktowałeś to jakoś degradację czy powrót do korzeni?

Mój poziom stresu po dwóch latach pracy jako manager szybko rosnącego zespołu (w ciągu paru lat rozrósł się od jednej do trzynastu osób) był pod koniec bardzo wysoki, bo traktowałem każde wyzwanie trochę zbyt osobiście. Pojawiła się też możliwość awansu, ale po rozmowie z moim ówczesnym przełożonym doszedłem do wniosku, że wiąże się to głównie z większą ilością biurokracji i polityki.

Gdy zacząłem pracę w Nokii jako programista-architekt, przez pierwsze trzy miesiące czułem się niemal jak na wakacjach, pomimo przeprowadzki i zmiany firmy. Wtedy zrozumiałem, że praca managera potrafi być dużo bardziej stresująca i nabrałem szacunku dla ludzi, którzy wykonują tę pracę dobrze.

Ponieważ moje zarobki wzrosły, a ciśnienie krwi wróciło do normy, była to zdecydowanie zmiana na lepsze, a nie degradacja.

Myślisz, że dziś Twoja ścieżka kariery potoczyłaby się inaczej?

Tuż przed przeprowadzką do Niemiec mój szef z Roche’a zapytał: „Rozumiem, że chcesz wyjechać za granicę, ale dlaczego do Niemiec, a nie do Kalifornii?!” Jestem w stanie sobie wyobrazić, że wyjazd za ocean, który chodził mi wówczas po głowie, mógłby sprawić, że byłbym dziś w zupełnie innym miejscu, ale po kilkutygodniowym pobycie w mitycznej Dolinie Krzemowej stwierdzam, że dużo lepiej czuję się w Europie. Nigdy nie żałowałem żadnej z podjętych decyzji.

Jak dalej potoczyła się Twoja ścieżka kariery?

Po dwóch latach spędzonych w Nokii pojawiła się okazja pracy przy tworzeniu gier, jednocześnie pozwalająca mi wykorzystać moje doświadczenie z JavaScriptem. Berlińska firma Wooga poszukiwała wówczas programistów JS do stworzenia swojej pierwszej mobilnej gry, Pocket Island. Był to rok 2011 i wydawało się, że HTML5 stanie się uniwersalną platformą do tworzenia aplikacji mobilnych. Na marginesie, niemal dekadę później dyskusje o przewagach aplikacji webowych nad natywnymi i odwrotnie trwają nadal, choć React Native pogodził trochę oba światy.

Po Pocket Island pozostałem w Woodze. Nauczyłem się Objective C, później Swifta i pomogłem przy powstaniu czterech innych gier, w tym jednego hitu na iOS and Androida, Jelly Splash. Bardzo dobrze wspominam też pracę przy grach na Apple Watch: był to jeden z mniejszych, ale i najbardziej oryginalnych projektów, w jakich miałem okazję uczestniczyć.

doswiadczenie programisty

Co było najtrudniejsze w pracy nad grą mobilną Pocket Island?

Bez wątpienia problemy z wydajnością. Gry wymagają płynnej animacji, a przeglądarki mobilne w 2011-2012 roku zwyczajnie nie były wystarczająco szybkie. Do tej pory pamiętam dzień, gdy do naszych rąk trafiły pierwsze iPady z ekranami Retina: nagle pixeli do renderowania było cztery razy więcej i animacje w naszej grze momentalnie stały się zbyt powolne.

Innym problemem była kompatybilność między przeglądarkami na Androida i iOS-a, a raczej jej brak. HTML5 okazał się być znacznie mniej uniwersalną platformą, niż na to liczyliśmy, przynajmniej do tworzenia gier.

Ostatecznie udało nam się stworzyć co najmniej przyzwoitą grę i ukończyć Pocket Island, ale stało się też dla wszystkich jasne, że napisanie szybkiej, wysokiej jakości gry jest po prostu znacznie łatwiejsze, gdy korzysta się z natywnych technologii takich jak wówczas Objective C.

Dlaczego w 2017 roku przeniosłeś się do Zalando?

Praca przy grach była dla mnie ciekawym eksperymentem, a Woogę do tej pory wspominam z dużym sentymentem. Ale uświadomiłem sobie, że nie chcę pracować przez resztę swojej ścieżki zawodowej przy grach free-to-play. Na dodatek firma zdecydowała się zmienić technologię na Unity 3D, co było bez wątpienia trafioną decyzją ze strategicznego punktu widzenia, ale dla mnie oznaczałoby skupienie się na jednym narzędziu, które poza grami ma ograniczone zastosowanie. Ponieważ zawsze wolałem pracę przy otwartych technologiach, zdecydowałem się wrócić do korzeni i tworzenia aplikacji webowych.

Zalando to jedna największych europejskich firm internetowych. W dziale technologii pracuje ponad 2000 osób. Rozwiązywane tu problemy technologiczne związane np. ze skalowalnością, ochroną danych osobowych czy uczeniem maszynowym są unikalne, szczególnie w warunkach europejskich. Na dodatek pracują tu naprawdę utalentowane osoby z ponad 100 krajów, co jest dla mnie dużym motywatorem.

Firma ułatwia wewnętrzne transfery i właśnie przeniosłem się do nowego zespołu (Machine Learning Platform). Trzy lata w Zalando to okres intensywnej nauki – poznałem między innymi Pythona, Scalę, podstawy machine learning – a to jest dla mnie najciekawszym elementem każdej nowej pracy. Zatrudniamy – polecam.

Jak dziś oceniasz pracę i życie w Berlinie?

Na pewno się zadomowiłem i czuję się tu dobrze, chociaż gdy odwiedzam np. Warszawę dostrzegam, jak bardzo na lepsze zmieniło się to miasto przez ostatnią dekadę. To, co pozostaje istotną dla mnie zaletą Berlina, to jego międzynarodowy charakter i łatwość znalezienia pracy w firmie o co najmniej europejskim zasięgu i z wielonarodowym zespołem.

Co dało Tobie najwięcej wiedzy, doświadczenia, w całej ścieżce programisty?

Doświadczenie ma wiele źródeł: projekty prywatne i w pracy, przeczytane książki i artykuły, konferencje… Jednak pewne metody zdobywania wiedzy są bardziej skuteczne niż inne. O ile wiedza zdobywana samodzielnie jest niezbędną podstawą, to wejście na kolejny, wyższy poziom jest dużo łatwiejsze, jeśli ma się okazję pracować z doświadczonymi programistami, którzy potrafią dzielić się swoją wiedzą. Ten ostatni element, tzn. chęć i umiejętność przekazywania wiedzy, jest bardzo istotny i sprawia, że solidny programista/programistka przeistacza się w mentora. Na przykład w dwóch firmach (w Nokii i w Woodze) miałem dwukrotnie przyjemność pracować z jednym kolegą, który posiadał tę cechę i pomógł mi w wyrobieniu sobie wielu dobrych nawyków i poszerzeniu horyzontów.

Co mógłbyś doradzić początkującym programistom?

Rynek pracy dla programistów jest nadal bardzo chłonny. Oznacza to, że jako programista lub programistka POSIADASZ WYBÓR. Czasem łatwo o tym zapomnieć i utknąć w pracy, która mija się z własnymi zainteresowaniami. Jeśli faktycznie interesuje Cię technologia i programowanie, nie ma obecnie powodu, aby nie znaleźć satysfakcjonującego zajęcia czy to na miejscu, czy zdalnie.

Jestem zwolennikiem „zasady T”: wybierz jakiś obszar, w którym chcesz być ekspertem i poznaj go do głębi. Aby uniknąć frustracji, najlepiej wybrać obszar związany z osobistymi preferencjami, a nie sugeruj się wyłącznie aktualną modą lub zarobkami. W moim przypadku był to frontend i projektowanie interfejsów webowych. To pionowa kreska w literze T. Jednocześnie poznawaj inne technologie i języki, chociaż nie musi być to na równie zaawansowanym poziomie, jak w przypadku wybranej specjalizacji. To pozioma część naszego T. W ten sposób możesz zostać ekspertem w jakiejś dziedzinie, ale jednocześnie będziesz mieć możliwość łatwiejszego przekwalifikowania się, jeśli sytuacja na rynku albo Twoje zainteresowania się zmienią.

Osobiście preferuję otwarte, sprawdzone technologie jako obszary, w których warto się specjalizować, ponieważ są one mniej wrażliwe na nieustannie zmieniające się trendy. Np. poznanie narzędzi uniksowych, SQL-a czy JavaScriptu będzie procentować przez wiele lat.

I wreszcie na koniec: każda godzina zainwestowana w naukę angielskiego i umiejętności miękkich (komunikacja, negocjacje, organizacja pracy własnej i zespołu) sprawi, że Twoja wartość w oczach pracodawców oraz kolegów będzie znacznie wyższa, niż jeśli posiadasz wyłącznie twardą wiedzę techniczną. Pomoże Ci to również, jeśli zdecydujesz się na niezależną karierę jako konsultant lub twórca własnego produktu, bo nie zapominajmy, że praca na etacie to tylko jedna z możliwych opcji.


Krzysztof Szafranek. Senior Software Engineer w Zalando SE. Od 2009 roku mieszka i pracuje w Berlinie. Swoją pierwszą stronę internetową stworzył w roku 2000. Do dziś interesuje go wszystko, co związane z programowaniem, szczególnie aplikacji webowych. Obecne tworzy narzędzia do machine learning w Zalando. W wolnym czasie biega, fotografuje, a w czasie kwarantanny piecze chleb razowy.

Zapraszamy do dyskusji

Patronujemy

 
 
More Stories
Startupowa prasówka: 6-10.08.2018