Od stażysty do Lead Software Engineera. Historia Michała Piechowskiego
Czy 12 lat w jednej firmie to dużo? Co zyskuje się, a co traci pracując tyle lat w jednej organizacji? Rozmawiamy z Michałem Piechowskim, którego zapytaliśmy o spostrzeżenia dotyczące polskiej branży IT. Poznajcie perspektywę doświadczonego inżyniera, który od 12 lat pracuje w jednej firmie.
Spis treści
Co o realiach pracy w branży IT powinien wiedzieć każdy, kto zastanawia się nad wejściem do niej?
Przede wszystkim to, że jest to bardzo dynamiczne środowisko. Jeśli marzysz o tym, aby nauczyć się jakiegoś fachu, a potem bazując na tym doświadczeniu dociągnąć do emerytury, to raczej nie jest to miejsce dla Ciebie. Ciągle rozwijane są nowe narzędzia, istniejące są aktualizowane, rozwijane są także same języki programowania, a i często moda na pewne rzeczy przemija i jest zastępowana czymś nowym.
Przykładowo jeszcze do niedawna Google zachwalał pisanie aplikacji na Androida w Javie, w architekturze MVVM i z wykorzystaniem plików xml do warstwy wizualnej. Dzisiaj nie ma po tym śladu, za to jest pełno (ocierających nawet trochę o propagandę) tutoriali, które każą używać Kotlina z architekturą MAD i z całkowitym odejściem od tworzenia interfejsu w xmlach. Oczywiście starsze podejście cały czas jest funkcjonalne, ale pokazuje to, jak praktycznie wszystko jest w stanie się zmienić w dosyć krótkim czasie.
To może, dla równowagi, coś o przyjemnej stronie IT?
Z takich przyziemnych spraw, to warto zwrócić uwagę na spore dysproporcje w zarobkach, które mogą wystąpić zależnie od tego, czym chcemy się zajmować. Mówię to na podstawie ofert, które dostawałem na przestrzeni lat. Zdarza się, że pewne zagadnienia są obiektywnie trudniejsze, bardziej pracochłonne i po prostu mniej wdzięczne, a jakby tego było mało, to są one również słabiej płatne. Osobie, która dopiero wchodzi na ten rynek, może być ciężko to ocenić, a jak już wejdzie i posiedzi kilka lat, to z kolei ciężko będzie to zmienić. Polecałbym porównać sobie różne oferty, im więcej, tym lepiej i na tej podstawie wyrobić jakieś zdanie.
W Internecie można również znaleźć różne statystyki odnośnie do tego, jak często dany język czy technologia jest używana i jak szybko rośnie lub spada ich popularność. Tu też są pułapki, bo często jakaś kompletna nowinka będzie brylować jako ta, która bardzo silnie rośnie i pozwala najwięcej zarobić, a po roku nikt już nie będzie pamiętał, że to istniało. Bezpieczniej wybrać coś, co jest powszechnie używane i nawet jeżeli wyjdzie z mody, to ze względu na skalę będzie musiało być jeszcze latami utrzymywane.
A skoro o utrzymaniu mowa, to sporo osób narzeka na tzw. bug fixing, czyli poprawianie błędów w kodzie i broni się przed tym rękami i nogami, ale myślę, że nie do końca słusznie. Jest w tym pewna magia, czasem jakaś intryga, bywa, że wręcz detektywistyczna zagwozdka. Poza tym takie zadania uczą pokory.
Pokory? Czego programistę uczy bug fixing?
Wiele razy byłem przekonany o tym, że rozwiązałem jakiś problem, bo ewidentnie widzę, że go już nie ma, ale po tygodniach okazywało się, że problem dalej występuje, a przez moje poprawki został jedynie głębiej ukryty. Kolejną niepopularną opinią, która nie przystaje do dzisiejszego świata jest to, że na początku kariery warto robić sporo nadgodzin. Dodatkowe fundusze to jedno, ale będziesz wtedy po prostu w stanie zrobić i nauczyć się dużo więcej. Poza tym, jeśli ktoś np. menedżer zwróci na to uwagę, to najprawdopodobniej w pamięci zostanie mu jedynie to, że dużo zostało zrobione, a nie to, że był na to dodatkowy czas w postaci tych nadgodzin.
Na koniec coś, co może powinno być na początku, czyli edukacja, podejście do studiów itd. Od małego miałem wpajane, że jest to kluczowe i pewnie jakaś w tym prawda jest, bo jednak, żeby dostać się na studia, trzeba wcześniej odpowiednio dobrze zdać maturę. Miałem raczej dobre oceny, ale też na samych piątkach “nie jechałem”. Co ciekawe, na studiach szło mi znacznie lepiej, nie wiem, czy to dlatego, że wreszcie jakąś rolę odgrywało programowanie, czy może dlatego, że forma była inna – trudno powiedzieć.
Nigdy nie miałem z niczego poprawki, angażowałem się nawet w różne koła naukowe i dostawałem stypendia. Tak czy siak, jakie znaczenie miałyby moje oceny i osiągnięcia, gdybym dzisiaj zmieniał pracę? Podpowiem … żadne. Nikt na to nie zwróci uwagi, nikt tego nie zobaczy, nikogo to nie obchodzi i nikt o to nie zapyta. Brzmi to może pesymistycznie, ale jak komuś powinęła się noga na studiach, to moim zdaniem nie powinien się tym w ogóle przejmować.
Domyślam się, że początkujący są atakowani wieloma komunikatami, które zachęcają do kupna kursu programowania konkretnego języka. Twoim zdaniem to dobry początek?
Kiedy byłem w gimnazjum, to za własne zaoszczędzone pieniądze kupiłem świetne książki Jerzego Grębosza do nauki języka C++ (kiedy rodzice się o tym dowiedzieli, to pieniądze mi zwrócili). Wiedza w nich zawarta to jedno, ale wciągający i pełen pasji sposób jej przekazania sprawił, że na dobre związałem się z programowaniem. Natomiast innych rzeczy takich jak Java, Kotlin, Python, Bash itd. uczyłem się wyłącznie z darmowych źródeł w Internecie. W obecnym projekcie głównie wykorzystuję Kotlina i Javę, a ponieważ nikt mnie jeszcze nie zwolnił, to wnioskuję, że źródła internetowe są wystarczające.
Niemniej pamiętam, że w firmie zdarzało mi się uczestniczyć w szkoleniach, których nikt za darmo przecież nie prowadził. Jednakże były to specjalistyczne szkolenia, dobrze prowadzone i przyznaję, że doceniałem w nich holistyczne podejście do tematu, które ciężko uzyskać na własną rękę. Także nie jestem jednoznacznym przeciwnikiem płatnych kursów, ale odczuwam pewien niesmak, kiedy widzę, że ktoś oferuje szkolenie z podstaw jakiegoś języka programowania i chce za to kilka tysięcy złotych. Bardzo często tego typu szkoleniowcy uciekają się do sprzedawania marzeń i żerują na ludziach, którym nie mówią, że ta sama wiedza, być może nawet w lepszej formie, jest dostępna za darmo.
Zresztą w Tieto wielokrotnie prowadziłem praktyki i rekrutacje, na które przychodzili również ludzie po takich kursach, więc z pełną świadomością mogę powiedzieć, że płatny kurs nie daje gwarancji zatrudnienia, daje natomiast gwarancję wydania pieniędzy.
Z tym związany jest też dodatkowy aspekt, który jest może mniej widoczny, ale kto wie, czy nie jest on najistotniejszy. Otóż kursy często reklamują się tym, że w przeciwieństwie do tutoriali tam zawsze jest prowadzący, który odpowie na pytania i pomoże w problemach. To wszystko prawda i ja ucząc się z książki, czy Internetu nie miałem kogo spytać, kiedy zderzałem się z jakimś problemem. Często godzinami eksperymentowałem lub szukałem odpowiedzi w Internecie, ale uważam, że to mocno rozwija.
Potem kiedy zaczyna się praca zawodowa, to w dużej mierze tak, to właśnie wygląda, dostaje się do rozwiązania problemy, które nie są oczywiste i w których ani Internet, ani kurs nie przyjdą nam z pomocą. Wtedy ten upór, nie załamywanie się i metodyczne dążenie do rozwiązania (często tygodniami!) okazują się bezcenne. A jednak płatny kurs nieświadomie uczy, że wystarczy zapytać prowadzącego i w 5 sekund dostanie się odpowiedź.
Jesteś po studiach informatycznych – uważasz, że wiedza wyniesiona podczas zajęć jest niezbędna w pracy programisty?
Trochę ciężko mi się do tego odnieść, bo idąc na studia umiałem programować i wszystkie tego typu zajęcia zaliczałem z najwyższymi ocenami, nie wkładając w nie praktycznie żadnego wysiłku. Do firmy w zasadzie też dostałem się bez ukończonych studiów. Wyszło to trochę przez przypadek, bo będąc po zaliczeniu drugiego roku naturalne było dla mnie mówienie, że jestem „na trzecim”. Okazało się, że moja firma wtedy szukała na praktyki ludzi po trzecim roku i źle mnie zrozumieli, dzięki czemu razem ze starszymi kolegami wziąłem udział w testach, a potem w rozmowach rekrutacyjnych.
Przeszedłem je pomyślnie i zostałem przyjęty. Stałem się wtedy najmłodszym pracownikiem całej korporacji. Dopiero później ktoś się zorientował, że w ogóle nie powinno mnie tu być, ale że sobie radziłem, to nikt problemu nie robił. Firma była elastyczna i ze zrozumieniem podchodziła do tego, że pracuję, jednocześnie kontynuując studia dzienne.
Kolejny przykład, jaki znam, to absolutny geniusz, z którym kiedyś długo pracowałem, a do którego nawet po latach nie mogę się porównywać. Z powodów prywatnych, studiów w ogóle nie skończył, a wiedzą i umiejętnościami przerastał wszystkich wokół i nie była to tylko moja opinia.
Czy to oznacza, że studia nie są do niczego potrzebne? Tego bym nie powiedział, bo jednak prawda jest taka, że wiele firm z góry odrzuci CV kandydata, jeżeli nie znajdą się tam studia kierunkowe, albo chociaż powiązane i takim osobom na starcie jest znacznie ciężej się gdzieś załapać. Na politechnice było też sporo przydatnych rzeczy, z których na pewno coś wyniosłem, a nawet jeżeli mi osobiście się one nie przydały, to wierzę, że przydały się kolegom z roku.
Co z perspektywy Twojej 12-letniej kariery było największym boostem pod kątem umiejętności? Które zadanie/projekt rozwinęło Cię najbardziej?
Codziennie jest coś nowego, ale gdybym miał wybrać jedną rzecz, to postawiłbym na implementację DLNA dla urządzeń z Androidem. Jest to związane ze współdzieleniem multimediów np. oglądaniem na telewizorze filmów, które znajdują się na telefonie. Oczywiście to tylko wierzchołek góry lodowej, z którą musiałem się zmierzyć.
Mój udział w projekcie zaczął się w 2013 roku, kiedy firma wysłała mnie na delegację do Szwecji. Akurat rozpoczynały się wakacje, więc nie byłem już w ciągłym biegu pomiędzy biurem a uczelnią i zostałem wybrany chyba dlatego, że w tym okresie rozwiązałem jakiś poważniejszy błąd, przykuwając tym uwagę klienta. To była moja pierwsza delegacja, w dodatku poleciałem całkiem sam do obcego kraju, a poza tym nigdy wcześniej nie siedziałem nawet w samolocie! Na szczęście wszystko poszło zgodnie z planem i na miejscu mogłem już zapoznać się ze szczegółami zadania, a nie było ono proste.
Sama specyfikacja tego, co miałem zrobić miała gdzieś 100 czy 200 stron, w codziennej pracy potrzebne były co najmniej dwa urządzenia (co znacznie zwiększa poziom komplikacji), a do tego implementacja musiała przejść certyfikację przeprowadzaną przez zewnętrzną, międzynarodową organizację o tej samej nazwie (DLNA). Zespół składał się z wianuszka różnej maści managerów, architekta, który miał w ogóle nie brać udziału w pracy, a jedynie ją oceniać, do tego byłem ja i jeden kolega zatrudniony w czeskim oddziale firmy, który miał dołączyć trochę później. Także w zasadzie na samym starcie całe to zadanie spoczęło na barkach prostego studenta z Polski.
Z czasem się to trochę zmieniało, bo praca szła w miarę sprawnie i klient postanowił dodatkowo zaimplementować funkcjonalności, które nie były obowiązkowe, więc parę innych osób również się przewinęło.
Co wyniosłeś z tego projektu? Czego tak naprawdę nauczyłeś się podczas jego realizacji?
Projekt rozwinął mnie nie tylko pod kątem technicznym, bo było też wiele interakcji z różnymi ludźmi, referowania postępów i debatowania z osobami od certyfikacji. Pamiętam, że do jednego z zagadnień podszedłem może trochę zbyt ambitnie. Chodziło o przypadek, w którym odtwarzamy film z jakiegoś serwera, przyspieszamy go dziesięciokrotnie, po czym następowało mocne spowolnienie, a następnie odtwarzanie filmu od tyłu. Testy certyfikacyjne oczekiwały, że mój kod będzie cały czas wysyłał zapytania do serwera, co podczas przewijania nie zawsze miało miejsce.
Wyjaśniałem, że skoro odtwarzaliśmy film do przodu, to pewną liczbę klatek możemy mieć już zapisaną w pamięci i nie potrzebujemy odpytywać o to serwera. Wymagało to interesującej implementacji, ale nie będę wchodził w szczegóły, bo musiałbym dodatkowo wyjaśnić, jak kompresowane są filmy. W każdym razie ostatecznie DLNA odpowiedziało mi, że pierwszy raz spotykają się z takim podejściem, ale zasadniczo zgadzają się z moją argumentacją i testy zostały poprawione po ich stronie.
Swoją drogą ze spowalnianiem i przyspieszaniem wideo związane są również specjalistyczne algorytmy do obróbki dźwięku tak, aby podczas przyspieszania nie był zbyt piskliwy, a podczas spowolniania nie brzmiał zbyt robotycznie. Tego typu niuansów było naprawdę sporo, także finalnie do Szwecji zawitałem łącznie siedem razy i chociaż wcześniej i później robiłem też zupełnie inne rzeczy, to jednak myślę, że ten okres w karierze rozwinął mnie najbardziej.