W UK zatrzymał mnie projekt z branży robotyki. Historia Piotra Cieślika
Pierwsze miesiące w Wielkiej Brytanii były zdecydowanie ciężkie dla Piotra, gdyż Anglia okazała się być zupełnie inna, niż ją sobie wcześniej wyobrażał. To rozczarowanie sprawiło, że irytowało go wszystko dookoła, od dziur w drogach, przez kiepskie jedzenie po nieuprzejmość ludzi. – Był taki czas, że pakowałem się z powrotem do Polski – opowiadał nam w rozmowie. Do pozostania w Anglii przekonał go projekt w Ocado Technology, który do dziś go pasjonuje. Poznajcie historię Piotrka Cieślika, Senior Software Engineera.
Spis treści
Już na studiach zainteresowałeś się sztuczną inteligencją. Potrafiłbyś ocenić swój ówczesny stan wiedzy w tej dziedzinie?
Miałem wiedzę z zakresu konkretnych technik sztucznej inteligencji (sztuczne sieci neuronowe, algorytmy genetyczne, regułowe systemy ekspertowe, itd) razem z dość dobrym przygotowaniem matematycznym. Nie miałem jednak całościowego obrazu tego obszaru.
Jak wiele od tego czasu zmieniło się w branży sztucznej inteligencji?
Wtedy sztuczna inteligencja była dziedziną raczej akademicką a dzisiaj jest ona bardzo gorącym trendem w biznesie. Większość ludzi albo używa jej, albo przynajmniej słyszało o produktach wykorzystujących sztuczną inteligencję, takich jak choćby Alexa czy Asystent Google. W branży IT natomiast, raczej mówi się o uczeniu maszynowym (Machine Learning) niż o sztucznej inteligencji.
Jaka to różnica? Czym jest sztuczna inteligencja, a czym uczenie maszynowe?
Sztuczna inteligencja to szersze pojęcie. Obejmuje wszystko, co można pod to podciągnąć, również niektóre klasyczne algorytmy (jak choćby algorytm A*). Uczenie maszynowe to podzbiór sztucznej inteligencji i są to techniki, które umożliwiają zautomatyzowaną budowę modelu. Czasem używa się określenia, że nie programujemy wprost (explicit), ale tworzymy kod, który umożliwia programowi zbudowanie modelu samemu, w zależności od sytuacji, którą napotka. Machine Learning jest również pojęciem dość szerokim, gdyż obejmuje techniki od najprostszej regresji liniowej, aż po zaawansowane wielowarstwowe sieci neuronowe, gaz neuronowy i SVM (Support Vector Machine).
Co działo się po studiach? Jak znalazłeś pierwszą pracę?
Rozesłałem CV do kilku firm, które miały wówczas oferty dla junior developerów C++. Były to ABB, Ericpol, Google, Motorola i Sabre (skupiałem się na większych firmach). Dostałem oferty z Ericpolu i Sabre.
Co przekonało Cię do Sabre?
Konkurencyjne wynagrodzenie. Sabre zaoferowało mi na rękę więcej, niż Ericpol brutto. Od jednego z przyjaciół słyszałem też, że Sabre dba o swoich pracowników i inwestuje w nich. Wówczas niewiele myślałem o tym, czy projekt będzie ciekawy. Dzisiaj bardzo mocno bym się zastanowił zanim podjąłbym się pracy w projekcie, który jest mało innowacyjny.
Mało innowacyjny projekt hamuje rozwój programisty?
Zdecydowanie. Hamuje albo nawet całkowicie stopuje. Ale nie tylko mała innowacyjność jest przeszkodą w rozwoju. Są nim również niszowe technologie. Jeżeli ktoś programuje w języku, który jest mało używany (w Sabre w niektórych zespołach jeszcze w 2014 roku było używane Delphi) albo nawet w technologi, która jest używana wyłącznie wewnątrz danej firmy, to później może mieć istotne problemy ze znalezieniem kolejnej pracy.
Nic tak nie rozwija, jak praca nad innowacyjnym projektem w silnym zespole. Pracując z mocnymi technicznie ludźmi, uczymy się od nich bardzo wiele. Tego nie zastąpi żadne szkolenie ani żadna książka.
Jaki miałeś wówczas plan na siebie? Chciałeś po prostu zdobyć pierwsze komercyjne doświadczenia?
To na pierwszym miejscu. Miałem również pomysł, żeby spróbować robić doktorat z wolnej stopy (tzn. bez studiów doktoranckich). Moja praca magisterska (System ekspertowy do predykcji przepływu wody w rzekach) była w pewnym sensie badawcza i miała być wstępem do doktoratu. Miało to wyglądać tak, że pod okiem promotora publikowałbym wyniki swoich prac. Przewód doktorski miał być otworzony, kiedy dorobek byłby wystarczająco duży. Niestety, prędko okazało się, że coś takiego jest nie do pogodzenia z pracą na pełen etat.
Czego nauczyłeś się w pierwszej firmie?
Mocno poszerzyłem swoją wiedzę z C++ oraz z bash’a. Nabyłem też umiejętności podstawowe dla każdego programisty a niestety pomijane na uczelniach a mianowicie rozwijanie oprogramowania bez rozumienia każdego aspektu aplikacji. Osiągnięcie takiego zrozumienia nie było możliwe, ponieważ aplikacja miała kilkaset tysięcy linii kodu (podczas gdy projekty na studiach nawet te robione zespołowo, mogły mieć co najwyżej kilka tysięcy).
W dziale Operation Research nauczyłem się tego, że różne problemy, które wydają się mocno niezwiązane z macierzami i matematyką można za pomocą trików matematycznych sprowadzić do macierzy i rozwiązać za pomocą programowania liniowego. Myślę, że warto wspomnieć, że nie wszystko, czego się nauczyłem okazało się przydatne. Najlepszym przykładem będzie Clearcase, archaiczny system kontroli wersji IBM’u.
Przepracowałeś w niej blisko sześć lat. Z perspektywy czasu oceniasz, że mógłbyś inaczej pokierować swoją ścieżką kariery?
Pewnie, że mogłem i rozważałem taką opcję co dwa lata. Za pierwszym, po dwóch latach pracy w Sabre, razem miałem już ofertę z innej firmy (która nawet była dużo lepsza finansowo), ale zdecydowałem, że chcę poznać świat Operation Research i przeszedłem do zespołu OR w Sabre. Za drugim razem, rozważałem opcję zmiany firmy, ale na Sabre przeważyło to, że po doświadczeniach z zespołem OR nie miałem ochoty szukać nowych przygód i chciałem wrócić do zespołu, który znałem i o którym wiedziałem, że dobrze się w nim pracuje.
Sądzę, że przy decyzji o zmianie pracy ważne jest, aby wyważyć pomiędzy dwoma podejściami: jedno głoszące, że warto zmieniać firmę raz na jakiś czas i przechodzić do innej firmy, żeby się czegoś nauczyć oraz drugie, że nie warto zmieniać firmy, która jest naprawdę dobra (bo takie wtedy było Sabre – wygrywali nagrody dla pracodawcy roku przez kilka lat z rzędu).
Najbardziej rozwijające dla Ciebie, programisty, było to, że pracowałeś nad różnymi projektami?
Tych projektów nie było w sumie tak dużo. Przez te osiem lat, pracowałem nad jedynie trzema, choć były to dość duże aplikacje. Prawdą jest, że praca nad różnymi projektami rozwija, ale nie znaczy to, że praca nad jednym projektem jest pozbawiona tej zalety. Kiedy pracujemy przez dłuższy czas nad jednym projektem, to podejmujemy coraz bardziej odpowiedzialne funkcje.
Kiedy przychodzimy do projektu, to na początku, nawet jeżeli jesteśmy już doświadczonymi programistami, dostajemy do zakodowania jakieś zadania. Po roku lub dwóch, kiedy potrafimy ogarnąć umysłem całą aplikację lub przynajmniej dużą jej część, dostajemy pod opiekę duże przedsięwzięcie. Wtedy naszym zadaniem jest rozbicie projektu na taski i zapewnienie techniczne prowadzenie innym programistom, którzy są krócej w danym zespole, choć nawet mogą mieć więcej lat doświadczenia w programowaniu niż my.
Przejdźmy do Twojej relokacji za granicę. Dlaczego zdecydowałeś się szukać pracy w Wielkiej Brytanii?
Miałem dość smogu. Cytując Kabaret Paranienormalni, Kraków zasłynął w Polsce największą liczbą związków zawartych… w powietrzu. Sytuacja była dramatyczna już w 2012 roku, kiedy powstał Krakowski Alarm Smogowy. Wówczas myślałem, że skoro jest to nagłaśniane to coś w niedalekiej przyszłości się zmieni. Sądziłem, że jeszcze rok lub dwa, maksymalnie trzy i coś będzie się zmieniać na lepsze.
Te złudzenia straciłem podczas zimy 2017/2018. Myślałem wówczas o przeprowadzce do Gdańska lub innego miasta w Polsce, ale de facto nigdzie nie było czysto. Praktycznie wszędzie było czyściej niż w Krakowie, ale normy były regularnie przekraczane w każdym mieście a ja miałem już tego serdecznie dosyć
Przeprowadziłeś się do UK mając już pracę czy szukałeś jej na miejscu?
Wolałem mieć już coś nagrane przed przeprowadzką. Chciałem uniknąć nierówności i stresu. W ogóle jestem zwolennikiem podpisywania umowy z nową firmą przed złożeniem wypowiedzenia w starej. Tak też zrobiłem i tym razem. Oczywiście, musiałem pofatygować się do Anglii na rozmowę kwalifikacyjną.
Jak przebiegała Twoja przeprowadzka? Na jakie problemy napotkałeś szukając, wynajmując mieszkanie?
Napotkałem na całą masę przygód. Pierwsza z nich miała miejsce już kiedy przyjechałem do hotelu. Okazało się że kody dostępu do wynajętego pokoju nie działają a kiedy próbowałem się dodzwonić na numer podany na booking.com, nikt nie odbierał. Myślałem już, że spędzę noc na wycieraczce. Na szczęście po jakimś czasie ktoś odebrał i podał mi właściwe kody. Kolejna przygoda była taka, że agencje nieruchomości żądały podpisania umowy na pół roku a w przypadku gdybym chciał wprowadzić się wcześniej, to i tak musiałbym zapłacić za całe 6 miesięcy.
Taka opcja bardzo mi nie pasowała, gdyż nie wiedziałem jeszcze, czy Anglia mi się spodoba. Na tym jednak nie koniec przygód. Miałem rozpocząć pracę zaraz po Wielkanocy, więc przyleciałem tydzień przed, aby na spokojnie znaleźć mieszkanie. Nie uwzględniłem, że tydzień czasu to za mało, żeby w Anglii znaleźć mieszkanie i podpisać umowę. Wszystko znów przez agencje nieruchomości, które od momentu decyzji o wynajęciu mieszkania lub pokoju potrzebowały tygodnia na sprawdzenie mnie w bazach przestępców i dłużników oraz na dopełnienie innych formalności. Nie pomagało również to, że Wielki Piątek jest w Anglii świętem ustawowym i agencje wtedy nie pracują. Na szczęście udało mi się znaleźć stronę, na której ogłoszenia dodają prywatni właściciele i udało mi się w sobotę być już w wynajętym lokum.
Jak rozumiem, miałeś nieciekawe pierwsze wrażenia z pobytu w Anglii. Później już było lepiej?
Niestety nie, zwłaszcza w pierwszych miesiącach. Zaraz po zamieszkaniu tutaj zderzyłem się z rzeczywistością, która była diametralnie różna od moich wyobrażeń o Anglii. Moje wyobrażenia, zanim przyjechałem tutaj, były kształtowane przez opowieści ludzi, którzy pracowali za granicą oraz przez nasze polskie kompleksy, że rzekomo Polska jest tak bardzo w tyle za zachodnimi krajami. Anglia jest przereklamowana i zderzenie z tym, jak bardzo jest przereklamowana było dość bolesne.
Kiedy tutaj przyjechałem, okazało się, że muszę odkleić się od swoich oczekiwań, że Anglia to nowoczesny, zadbany i zamożny kraj, gdzie ludzie są milsi niż w Polsce a życie wygodniejsze. Przez pierwsze miesiące irytowało mnie tutaj praktycznie wszystko, od fatalnego stanu dróg i chodników przez niedobre jedzenie aż po nieuprzejmość ludzi. Szczerze powiem, że był taki czas, że już pakowałem się z powrotem do Polski. Czynnikiem, który zadecydował o pozostaniu tutaj, była praca. Projekt, nad którym pracujemy w Ocado jest naprawdę pasjonujący i to była dosłownie jedyna rzecz, która na początku mi się tutaj podobała.
Na szczęście, po kilku miesiącach udało mi nauczyć cierpliwości i przyzwyczaić do rzeczy, które wcześniej mnie irytowały. Wtedy zacząłem dostrzegać pozytywy mieszkania tutaj. Jednym z nich jest pogoda i to też jest niespodzianka (tym razem na plus), bo w zarówno Polsce, jak i w Anglii, powszechne jest przekonanie, że angielska pogoda jest do niczego a moim zdaniem to nieprawda. Owszem, często jest pochmurno, ale deszczu wcale nie ma tak dużo. Co więcej pogoda jest znacznie łagodniejsza niż w Polsce. Temperatura w zimie rzadko kiedy spada poniżej zera, w lecie raczej nie wychodzi powyżej trzydziestu stopni. Nie ma też gwałtownych zmian, które są charakterystyczne dla Polskiej pogody.
Jak wygląda rynek pracy w IT w Anglii?
Trudno mi wypowiadać się na temat całości Anglii, więc skupię się na obszarze, gdzie szukałem pracy, czyli Londyn i okolice. Rynek IT jest tutaj bardzo duży i każdy znajdzie tutaj coś dla siebie. Charakterystyczne jest również to, że w ogłoszeniach o pracę praktycznie zawsze podawane są widełki płacowe. Co do podobieństw z polskim rynkiem IT, to aktywni są tutaj rekruterzy. Żeby dostać zaproszenie do udziału w rekrutacji, nie trzeba nawet niczego szukać, wystarczy włączyć na LinkedIn opcję ”daj znać rekruterom, że jesteś otwarty na kontakt z ich strony” i od razu zgłasza się do nas kilku rekruterów.
Dlaczego wybrałeś tę, a nie inną firmę?
Za Ocado przemawiała innowacyjność, ciekawe projekty, możliwość zastosowania sztucznej inteligencji w pracy, użycie robotyki (bardzo chciałem pracować z tymi robotami) oraz brak dress code’u. Przeciw przemawiały niższe zarobki niż w firmach technologicznych, ale gdybym miał wybrać jeszcze raz, wybrałbym tak samo.
Co zaskoczyło Cię w pracy z robotami?
Zaskoczyła mnie cena i niektóre ich parametry, np. waga. Bardzo ciekawe było również zobaczenie, jak zbudowany jest system sterowania taką zautomatyzowaną hurtownią. Ale niestety, ze względu na to, że są to tajemnice firmowe, to nie mogę powiedzieć więcej.
Z jakimi wyzwaniami spotykasz się na co dzień?
Wyzwania tutaj nie różnią się zbytnio od wyzwań, które napotykałem we wcześniejszych projektach. Dla mnie dużym wyzwaniem jest zawsze zawsze wgryzienie się w kawałek kodu, którego nie znam. Trudne bywa również przeanalizowanie, czy zmiana, którą robię, nic nie zepsuje. Zwłaszcza, kiedy aby to przeanalizować, trzeba przebijać się przez kilka, czy nawet kilkanaście wywołań metod.
Kto, Twoim zdaniem, odnajdzie się w branży sztucznej inteligencji/uczenia maszynowego?
Ktoś, kto lubi się uczyć, lubi eksperymentować i ma odrobinę zacięcia badacza. Myślę, że nieodzowne jest również to, żeby lubić matematykę, w przeciwnym razie praca z Machine Learning’iem będzie utrapieniem.
Jaki masz plan na siebie? W jakim kierunku chciałbyś się rozwijać?
Chcę zmienić ścieżkę kariery z Software Engineer na Machine Learning Engineer. Jestem w trakcie robienia kursów na Courserze. Czasem też marzę o powrocie do pomysłu doktoratu. A tak poza pracą, to moim najważniejszym celem jest założenie rodziny. Programowanie i sztuczna inteligencja to fantastyczna przygoda, ale na tym świat się nie kończy.
Co może przyspieszyć, a co opóźnić Twój plan zostania Machine Learning Engineerem?
Największą przeszkodą w moim przypadku, jest prokrastynacja, wieczne odkładanie na potem. Zdarzało się, że przez kilka lat nie zrobiłem nic w tym kierunku. To nie do wiary, jak wielką przeszkodą może być prokrastynacja. Na szczęście w ostatnich miesiącach natrafiłem na kilka ważnych informacji dotyczących budowania nawyków. Jedną z nich jest japońska metoda wypracowywania nawyków Kaizen. Od tego czasu codziennie robię coś, co przybliża mnie do tego celu. Raz więcej, raz mniej, czasem bardzo niewiele, ale codziennie. Obiecanie sobie, że zrobię codziennie coś, co przybliży mnie do mojego celu, jest najskuteczniejszą bronią przeciwko prokrastynacji, jaką znam.
Gdybym postawił sobie cel, że przeczytam 30 stron książki dziennie, to najpierw powiem sobie, że dzisiaj jestem już zmęczony i że nie mam czasu i że nic się nie stanie jak raz odłożę to na jutro. Po kilku takich “odłożeniach na jutro” zapomniałbym w ogóle, że miałem tę książkę przeczytać. Kiedy natomiast postawię sobie cel, że przeczytam cokolwiek, przynajmniej pół strony, to nie uda mi się wmówić sobie, że nie mam czasu, albo że jestem zbyt zmęczony, żeby to zrobić. Kiedy w dodatku wzmocnię to obietnicą daną samemu sobie i będę codziennie sobie przypominał o tym, jaki mam cel (na przykład przez przypomnienie na smartfonie) to mam gotowy przepis na budowanie trwałego nawyku.
Ktoś może zapytać “co da pół strony dziennie”. Codziennie, przez kilka miesięcy czy nawet lat, da sporo, ale tak naprawdę nie chodzi o to, żeby czytać tylko pół strony dziennie. Chodzi o to, żeby nie przerwać nawyku. Te pół strony, to takie minimum przyzwoitości, które muszę zrobić codziennie, nie ważne jak mało mam czasu i jak bardzo jestem zmęczony. Oprócz tego, rzadko kiedy poprzestaje na jedynie pół strony. Najtrudniej jest zacząć, ale kiedy zacznę, to już jakoś idzie.
Co do czynników, które mogłyby przyspieszyć mój plan, to widzę dwa takie. Pierwszy to tzw. “pet project”, czyli rozwijanie jakiegoś swojego, małego projektu, najlepiej open-source. Drugi czynniki to próba rozwiązywania praktycznych problemów sztucznej inteligencji. Istnieje nawet serwis internetowy (Kaggle), na którym można znaleźć takie problemy razem ze zbiorami danymi, które wykorzystuje się do tworzenia rozwiązań.
Piotr Cieślik. Senior Software Engineer at Ocado Technology. Programista C++ i Javy, obecnie pracujący w Anglii. Planuje zmianę ścieżki kariery z Software Developer na Machine Learning Engineer. Zainteresowania zawodowe obejmują algorytmy i informatykę teoretyczną. Zagorzały fan Linuxa, mind-mappingu i technik produktywności. Miłośnik roweru.