Skromność pomaga w rekrutacji do Google. Historia Tomasza Wiszkowskiego
Tomasz Wiszkowski przeszedł długą drogę zanim został zaproszony na rozmowę rekrutacyjną do Google. Minęło pięć lat od wysłania CV. Rekruterka poprosiła o aktualizację danych i zaproponowała rozmowę o pracę. Jak się potoczyła? Tego dowiecie się z wywiadu.
Skąd pomysł na aplikowanie do Google’a? Najpierw wysłałeś CV w Polsce, czy od razu do Stanów Zjednoczonych?
Moja przygoda z Google’em wyglądała tak, że kiedy aplikowałem do Motoroli, mniej więcej w tym samym czasie składałem też dokumenty na staż do Google’a. Nie jest łatwo dostać się na staż, ponieważ ma ograniczoną liczbę miejsc. Zainteresowanych jest mnóstwo. Sito – to ciekawe, jest nawet sito na staż – trzeba w jakiś sposób przejść. Jak złożyłem tam papiery, to pamiętam, że nawet rozmawiałem z rekruterem z Google’a.
Byłem studentem i przedstawiłem rekruterowi moją sytuację, że póki nie skończyłem studiów, to wydaje mi się, że do Google’a jako pracownik nie będę jeszcze aplikował. Moje dokumenty po prostu trafiły gdzieś, powiedzmy maszyny losującej CV. Tam jest cały system, który zajmuje się przerobem CV-ek i o mojej aplikacji zdążyłem zapomnieć. Naprawdę.
Wysłałeś CV-kę i po prostu life goes on, pracujesz dalej.
Tak, minęło 5 lat, aż moje CV wypłynęło na powierzchnię. Zadzwoniła do mnie rekruterka:
– Słuchaj Tomasz, znaleźliśmy twoje CV.
– Pisałem je parę lat temu i jest trochę nieaktualne.
– No tak, ale zastanawiałam się, czy byłbyś zainteresowany zaktualizowaniem swojego CV w naszym systemie i wzięciem udziału w rozmowach kwalifikacyjnych?
– Pewnie, że jestem!
Nigdy nie rozpatrywałem tego, że mógłbym pracować dla takiej firmy. Wtedy zatrudniała trzydzieści tysięcy inżynierów, a może pracowników, coś takiego.
Do ogłoszeń możesz przejść klikając w powyższą grafikę lub tutaj.
Jaki to był rok?
To był rok 2011, początek, więc ponad siedem lat temu.
Czyli aplikowałeś w zasadzie w 2006 roku.
Zgadza się. Pięć lat później odezwali się do mnie, żeby odświeżyć CV. Zrobiłem to i zostałem zaproszony na rozmowy kwalifikacyjne. Moje wcześniejsze doświadczenie, jeszcze z Microsoftu, przypomniały mi, żebym mocno przygotował się do tej rozmowy. Więc przygotowywałem się dosyć mocno z podstaw i algorytmiki systemów operacyjnych.
Wpadła mi w ręce znakomita książka. Jeżeli przymierzacie się do pracy w dużej firmie, gorąco wam polecam. Książka nazywa się „Cracking, the Coding Interview”, czyli jak zhackować interview na inżyniera oprogramowania. Polecam wam książkę w języku angielskim, ponieważ z tłumaczeniami na język polski różnie bywa. Czasami są słowa, które mają więcej niż jedno znaczenie w języku angielskim, ale niosą bardzo konkretny przekaz. Jeżeli tego znaczenia się dobrze nie zrozumie, to łatwo dokonać nieumyślnych przekłamań.
Co znajdziemy w tej książce?
Bardzo różnorodne pytania, czy to z algorytmiki, czy to z probabilistyki. Są bardzo ciekawe corner case’y, czyli co się stanie w szczególnym przypadku. To, co jest najważniejsze, to książka przekazuje pewien sposób rozumowania. Pokazuje jak myśleć, kiedy idziecie na takie interview z programowania i co jest, a co nie jest kluczem do sukcesu.
Jednak nie zawsze zaproponowanie rozwiązania gwarantuje wam sukces. Bo nie chodzi o to, żeby rozwiązać zadanie byle jak, chodzi o to, żeby znaleźć sposób na takie rozwiązanie, które będzie znakomite. Czasami braknie tego czasu na zaimplementowanie, więc zaproponowanie na przykład: „Słuchajcie: ten problem można rozwiązać w sposób naiwny, robiąc tak, tak, tak i tak, albo w sposób, który gwarantuje trochę większy sukces, dajmy na to, będzie szybszym rozwiązaniem, będzie ciekawszym rozwiązaniem, będzie łatwiejszy pod względem obliczeniowym w zupełnie inny sposób”. Jeżeli zaproponujecie, więcej niż jeden sposób rozwiązania problemu, to interviewer powie wtedy: „Ok, czyli rozumiem, że nie jest to dla was problem, żeby rozwiązać takie zadanie, skupmy się w takim razie nad tym ciekawszym rozwiązaniem”. I wtedy robi się naprawdę fajnie, oni właśnie na to liczą. Tego właśnie oczekują od was.
Żeby myśleć nieszablonowo?
Żeby znaleźć coś fajnego, coś ciekawego w tym zadaniu. Żeby znaleźć fajne rozwiązanie tego zadania. Jeżeli jesteście w stanie jeszcze zaskoczyć, zaciekawić waszego interviewera, to gwarantuje wam, że będzie naprawdę czadowo.
W jaki sposób zaskoczyłeś swojego interviewera?
Dostałem do rozwiązania problem, który polegał na „przedstawieniu liczb za pomocą konkretnego szyfru”. Można oczywiście zrobić to w sposób naiwny, za pomocą czegoś, co nazywa się mapa lub słownik – bierzecie liczbę, rozczłonkowujecie ją na elementy i przepuszczacie przez słownik. Uzyskujecie tym samym inną liczbę, która jest już waszym docelowym szyfrem. Ponieważ miałem na politechnice inżynierię komputerową, na której była też elektronika, a na niej elektronika cyfrowa, a na elektronice cyfrowej uczyliśmy się o optymalizacji układów logicznych, to stwierdziłem: „ok, nie będę robił mapy, bo mapa jest prostym rozwiązaniem, ale zaproponuję rozwiązanie tego za pomocą optymalizacji układów logicznych”.
Zrobiłem prosty układ, który za pomocą szeregu wyrażeń logicznych z elektroniki i z programowania, pomagał przedstawić jedną liczbę w drugą i zaproponowałem rozwiązanie, które właśnie na tym bazuje. Z mapy czy ze słownika przerodziło się w bodajże cztery lub pięć wyrażeń logicznych – przepisanie równa się wyrażenie logiczne. Zadziałało. Mój rekruter był do tego stopnia zaskoczony, że poprosił mnie, abym wytłumaczył mu, na jakiej zasadzie działa optymalizacja układów logicznych. Wydaje mi się, że jest to jedno z zadań, które poszło mi naprawdę nieźle. Z drugiej strony, dosyć ważna rzecz – jeżeli będziecie się czuli zbyt pewnie w danej kwestii, to na pewno ta kwestia zostanie bardzo dokładnie przetestowana. Jeżeli uważacie, że jesteście ekspertem, powiedzmy, z Pythona, z Javy, z C++, to…
…to oni sobie wezmą to do serca?
Wezmą to sobie do serca. Bardzo wam polecam, jeżeli będziecie aplikowali do dużej firmy, być świadomym swoich sukcesów i umiejętności, ale nie bycie zbyt pewnym. Zachowajcie skromność. To dużo pomaga, bo łatwo utrudnić sobie życie.
Jak poszło dalej z tą rekrutacją?
W dużym skrócie rekrutacja w Google to bardzo duży mechanizm, który angażuje sporo osób. To nie jest tak, że decyzję o zatrudnieniu podejmuje sam rekruter, ale zajmuje to więcej czasu. Polecam wam uzbroić się w cierpliwość. W moim wypadku wymagało to paru miesięcy. Moje interview odbyło się chyba w lutym, a w kwietniu otrzymałem ofertę.
Po tych pięciu latach wyczekiwania to i tak jak pstryknięcie palcem?
Nie mogłem doczekać się tej decyzji. Zadzwonił do mnie rekruter z prośbą o namiar na kogoś, kto wystawi referencje. Pojawił się pewien problem, ponieważ powstał konflikt interesów. Mógłbym dostać referencje od kogoś, z kim pracowałem w Motoroli, ale błyskawicznie wypłynie na wierzch, że aplikuję do innej firmy. Niemniej, oczywiście udało się, ponieważ ludzie zasadniczo wspierają się nawzajem w tym, żeby osiągnąć sukces. Jeżeli macie dobrych przyjaciół, to myślę, że pomogą Wam w osiągnięciu tego sukcesu.
Dostałeś referencje, co było dalej?
Rekrutacja jeszcze trochę trwała. Uczestniczyłem kiedyś na dużej konferencji o Agile, spotkałem na niej ludzi z Google, którzy już wiedzieli, ale nie mogli nic powiedzieć. Nie poruszali tego tematu, bo im nie wolno, nikomu nie wolno, do samego końca. W tzw. międzyczasie miałem prawie nagrane rozmowy do kolejnej pracy i umówione spotkania. Z jeszcze innego miejsca otrzymałem negocjowaną ofertę i nagle dowiedziałem się –„ok, zapraszamy”. Bardzo ciekawa i bardzo ważna rzecz dla wszystkich, którzy – no wiecie, jak jest z rynkiem pracy w Polsce.
Niejednokrotnie zdarza się, że dostajecie umowę na czas próbny, a po czasie próbnym ludzie mówią „dobrze się pracowało, pora na kogoś innego”. To stwarzało na tamten czas bardzo duże poczucie ryzyka. Przejście ze stanu stabilnego, w którym macie pewną pracę i wiecie dobrze, jak ta praca wygląda, jak funkcjonuje i ryzykujecie, że za 3 miesiące wylądujecie na rynku pracy jako poszukujący i jeszcze będziecie bezrobotni. Ucieszyło mnie, to były słowa w stylu „panie Tomaszu…
…nie będzie pan bezrobotny”.
Tak. Jeżeli składamy panu ofertę, to znaczy, że chcemy z panem pracować, a nie pana popróbować, a później wyrzucić. Firmy, które się szanują, po takich interviews nie bawią się w okresy próbne.
I co dalej? Praca w Google w Polsce, czy już nastawienie na Seattle?
W Seattle, człowieku!
Wiedziałeś, gdzie to jest?
Seattle znałem z telewizji, z programów przyrodniczych! Praca w Google w Polsce była znakomita. Jest taka świeżość, zupełnie inny model pracy. Mieliśmy biuro, w którym było sto osób, myśmy się prawie wszyscy tam znali. Przy stu osobach gadki niemal na wszystkie tematy, zapoznanie się z niemal dowolną technologią, były do zrobienia. Ludzie byli bardzo fajni, otwarci. Zupełnie inaczej pracowało się z osobami, które traktowały to, jak przygodę – przestały martwić się tym, czy wylecą z pracy, stresować, czy starczy im pieniędzy, czy z wynagrodzeniem będzie problem. Wielu fajnych przyjaciół tam zyskałem.
Pracowałem tam do 2015 roku, czyli cztery lata. I po czterech latach przyszedł dla naszego biura trochę zaskakujący koniec, nazwana defragmentacją. Pojawiło się drugie biuro w Warszawie, równie prominentne, co biuro krakowskie. Dostaliśmy więc wszyscy ofertę, żeby przenieść się w inne rejony świata. Firma oczywiście próbowała nas przenieść tak, żebyśmy zostali z projektami. Część z nas była zdecydowana na to, żeby jednak odejść, bo jak ma się dzieci, ustawione życie, spłaca się kredyt czy właśnie skończyło się spłacać, trudno przenieść się daleko. Na początku byłem do tego bardzo sceptycznie nastawiony, ale w pewnym momencie pomyślałem: „Kurczę, znam to Seattle z bardzo różnych historii z filmów, znam z filmów przyrodniczych i dokumentalnych. Pięknie tam zawsze było. Z opowieści ludzi, którzy tam byli też było nieźle”. No i oczywiście zapytałem, czy jest taka opcja. Pojawiła się, firmie zależało na tym, żeby zachować pracowników, którzy przepracowali już trochę lat i znają się na technologiach w środku, więc pozwolili mi pojechać.
Kiedy dokładnie wyleciałeś?
Byłem w Seattle pierwszy raz w życiu w kwietniu 2015 roku i to, co zobaczyłem w momencie, kiedy wyszedłem z lotniska i zobaczyłem pasma górskie, Góry Kaskadowe po jednej stronie, wielki wulkan Mount Rainier, góry na Półwyspie Olimpic, w zasadzie całe miasto otoczone górami, piękna zatoka, jeziora, czyściutkie powietrze. Byłem w tym miejscu zakochany. Czasu nie mieliśmy dużo, ponieważ firma daje możliwość znalezienia pracy oczywiście w takim zdalnym biurze, ale jest na to bardzo krótki czas. Znaleźliśmy ludzi – ponieważ nie tylko ja się przenosiłem, przenosił się też jeden z moich kolegów – którzy chcieli z nami pracować. Bardzo pozytywni, bardzo szczęśliwi, że w ogóle mieliśmy okazję pogadać ze sobą, spotkać się.
No i tak się przenosimy. Bardzo dużo pomocy dostałem od firmy z tym, żeby zorganizować sobie życie tutaj. Firma pomaga ludziom, żeby nie stanowiło to dla nich jednak traumatycznego przeżycia, doświadczenia. Przyleciałem tutaj na rok, z bardzo dużą niepewnością. Bałem się tego, że jestem z dala od rodziny, przyjaciół, z dala od miejsca, które znam, jestem w zasadzie zupełnie świeżym człowiekiem. To jest tak, jakbyście obudzili się po 30 latach. Wstajecie rano i jesteście w kraju, w którym nie macie nawet PESELu, nie ma was, nikt o was nic nie wie. Nie macie historii kredytowej, nie macie konta bankowego, fizycznie po prostu jeszcze nie istniejecie. I trzeba to życie zorganizować. To było wymagające i stresujące. Dałem jednak radę. Moja partnerka, obecnie żona, również dała radę.
Czym zajmowałeś się w Google?
Głównie Androidem. Kiedy przyszedłem do Google, to oczywiście pierwsze pytanie dotyczyło tego, w jakich środowiskach pracuję i jakich języków używam. Jestem platformersem, więc dla mnie VM i C++, ci, którzy wiedzą co to jest, to wiedzą od razu, o co chodzi. Ci, którzy nie wiedzą, to jest niskopoziomowe i nie ma tam żadnych ikonek, żadnych podpowiedzi, w zasadzie do bardzo niedawna nie było w zasadzie żadnych dodatków. Za pomocą tych języków budowałem coś, co jest wykonywane bezpośrednio przez sam procesor i kontaktowało się bezpośrednio z nim. Jądrem – przykładowo – systemu operacyjnego. Wszyscy się ucieszyli, przyklasnęli i mówili „no to zajebiście, będziesz pracował w Androidzie, będziesz pracował z Android Studio i będziesz pisał w Javie”. „Wait, what?”
Skąd taki wybór?
Nie było czegoś takiego, że jesteście w czymś dobrzy, to was tam wsadzą. Jest sposobność do tego, żeby rozwijać się w wielu kierunkach, i ludzie naprawdę bardzo w tym pomagają. Są znakomici. Zajmowałem się więc Androidem, przy ostatniej edycji, kiedy się spotkaliśmy, zajmowałem się czymś, co zostało wypuszczone jakiś czas temu jako android-cuttlefish. Jest to Android, który jest przeznaczony głównie do testów, więc jest to system operacyjny przeznaczony do uruchomienia albo w maszynie wirtualnej, albo przykładowo, można sobie wyobrazić scenariusz, gdzie jest on uruchamiany na Amazonie. Niemniej jest to system przeznaczony głównie dla testerów. Koncepcja była taka, żeby działał jak prawdziwy Android, przynajmniej tak blisko prawdziwego Androida, jak to tylko jest możliwe. Żeby dawał wam taką samą odpowiedź, jaką uzyskacie przy uruchamianiu waszego oprogramowania na prawdziwym Androidzie.
Obecnie zajmuję się Fuchsią – dalej siedzę w systemach operacyjnych. Jest to świeżutki system operacyjny Google. Próbuję wyciągnąć możliwie jak najwięcej doświadczenia płynącego z systemów operacyjnych, które zostały zaprojektowane przez ostatnich kilka dekad. Jak rozwiązać problemy, które były albo naprawiane wielokrotnie, albo przerabiane wielokrotnie. Pracuję także nad tym, jak stworzyć system, który nie posiada takich naleciałości, gdzie dana funkcjonalność, żeby była rzeczywiście bezpieczna, została wielokrotnie połatana do tego stopnia, że w tym momencie ciężko dojść do tego, dlaczego każda linijka jest potrzebna.
O jakich wadach, problemach, czy wyzwaniach możesz powiedzieć? Zespół liczy 250 osób, tak?
Jest to duży zespół. Ciężko mi powiedzieć, ile on ma tak naprawdę ludzi. Jest to na pewno duży zespół i jest bardzo dużo pracy włożonej w to, żeby Fuchsię rozwijać bardzo prężnie.
Problemy ze sprzętem są bardzo często dosyć zaskakujące. To już mówię bardziej z własnego doświadczenia, zresztą – chciałbym, żebyście potraktowali to wszystko, co dzisiaj mówię jako moje własne doświadczenia. Ponieważ mówię do was i opowiadam wam historię z mojego doświadczenia, a nie z doświadczenia Google’a. To wszystko, co dzisiaj słyszycie, to jest dosłownie moje doświadczenie i absolutnie nie ma to nic wspólnego z żadną firmą – ani z Motorolą, ani z Google, ani z ich opiniami i decyzjami.
Moje doświadczenie tutaj wygląda bardzo często tak, że sprzęty nie do końca zawsze działają tak, jak to wygląda na papierze. Jest bardzo dużo takich case’ów, gdzie trzeba być na to przygotowanym. Pewne zachowania mogą prowadzić do tego, że przykładowo sprzęt się zablokuje. Musicie być przygotowani na wykonywanie restartu pojedynczego sprzętu, nie restartując na przykład całego boardu. Jest bardzo dużo problemów, które zostają rozwiązane przez dekady doświadczeń, np. kwestia zabezpieczeń. Bezpieczeństwo to bardzo duże wyzwanie dla systemu operacyjnego, a teraz w naszej erze, gdzie mamy do czynienia ze Spectre, z Meltdown, jest to jeszcze trudniejsze.
Jakie są ograniczenia pisania takiego systemu?
Napisanie takiego systemu totalnie od zera, gdzie nie replikujecie istniejącego systemu, wiąże się np. z tym, że nie będziecie mieli dostępu do aplikacji, które istnieją. Ponieważ te aplikacje nie są przeznaczone na wasz system. Ludzie, którzy mieli do czynienia z takimi systemami jak np. BeOS, czy Syllable, czy AROS, mają pewnie wyobrażenie, o czym mówię.
Ograniczenia, które z tego płyną, są dosyć duże, więc jest bardzo, bardzo dużo pracy potrzebnej do tego, żeby ten system działał. Fuchsia i cały zespół stara się zmierzyć z tym wyzwaniem. Pewnie zastanawiacie się w ogóle, dlaczego powstał ten system. Jest to taki google’owy sposób na to, żeby rozwiązać problem waszych wielu komputerów, na których macie różne dane. Jest to sposób Google’a na to, żeby pogodzić producentów sprzętu i oprogramowania z użytkownikami, ponieważ licencjonowanie już jest troszeczkę inne.
Kiedy możemy spodziewać się tej Fuchsii?
Trudno powiedzieć. Podejrzewam, że jeszcze trochę czasu minie, zanim trafi na nasze desktopy, o ile trafi. Jest szereg problemów, które Fuchsia stara się rozwiązać i do których stara się nawiązać. Niestety, póki takie prawdziwe sprzęty z tym systemem nie wyjdą, nie mogę nic zdradzić.
Jakbyś ocenił swoją pracę w Google? Jesteś związany z tą marką, jesteś też w Seattle. Czy tam istnieje pojęcie pracy po godzinach, czy raczej jest zachowany work-life balance?
Google, jak i dosyć sporo obecnie już firm na rynku stosuje coś, co się nazywa „nienormowane godziny pracy”. Więc jesteście inżynierem dla Google’a, ale to nie zobowiązuje was do tego, żebyście siedzieli od godziny 9 do 17 za biurkiem albo sprężali się i dajmy na to, później spędzali jeszcze nocki, żeby coś dostarczyć. Jeżeli jest sytuacja, że przykładowo pracujecie nad projektem, który został połączony z innym i jesteście w trakcie tranzycji, albo zamykają wasz projekt i nie macie jeszcze nad czym pracować, to nikt was do biurka przykuwać nie będzie. To, co robicie ze swoim czasem, to jest wasza sprawa. Jeżeli chodzi o pracę po godzinach, przyznam się szczerze, że spotkałem się z tym. Ludzie czasami to robią. Nie jest to obowiązkowe.
To zadam jeszcze inne pytanie – ile średnio godzin pracujesz nad Fuchsią?
Pracuję mniej więcej od godziny 8 do godziny 16:30, a mam w tym czasie mam przerwę na obiad. W tym spokojnie czas, żeby załatwić jakieś bieżące sprawy, porozmawiać z ludźmi, jeśli jest taka potrzeba, czy jeżeli mam ochotę np. zadzwonić do rodziny, do siostry. Jest między nami dziewięć stref czasowych różnicy, więc mam tutaj piękne słońce, zbliża się południe, u was jest godzina prawie 21, mniej więcej tyle to oznacza.
Więc jeżeli chodzi o work-life balance, jest pięknie. Bardzo cenię sobie takie podejście. Nikt nie stoi nade mną i nie zmusza do tego, żebym pracował ciężej, a pracuje tak ciężko, jak uważam, że potrzebuję pracować. Mimo to byłem świadkiem, jak ktoś kiedyś wyleciał z pracy.
Czytałem, że Google jest firmą, do której bardzo trudno się dostać i później, jak już tam jesteś, to tak naprawdę musisz bardzo mocno komuś zaleźć za skórę, żeby z tej firmy wylecieć? Zgadzasz się z tą opinią?
Podejrzewam, że to słuszna opinia. Nawet nie tyle zaleźć za skórę, ponieważ z ludźmi różnie bywa i dynamika między ludźmi bywa różna. Tak jak w szkole. Nie byliście dla wszystkich dobrymi znajomymi. Każdy miał paczkę znajomych składającą się z czterech, pięciu osób i to byli wasi najlepsi kumple. Z resztą osób było tak, że albo byli to dla was ludzie „no w porządku, fajnie, jesteśmy znajomymi, jesteśmy dobrymi kumplami i pomagamy sobie nawzajem”, albo zgrzytało i iskrzyło między wami. W Google też tak bywa. Niemniej, pomimo tego, że są różne napięcia pomiędzy ludźmi, liczy się jakość pracy i to tak naprawdę stanowi klucz waszego jestestwa. Na pewno znajdziecie zespół, w którym będziecie mieli super energię, będzie ogień, będzie po prostu tak wrzało, że aż będzie miło wracać.
Jest taka szansa, że zdarzy się, że traficie do zespołu, w którym będziecie się czuli bardzo niepewnie, będziecie czuli, że jesteście na grząskim gruncie. Tak się zdarza. Czasami jest tak w związku z tym, że jest to dla was zupełnie obce terytorium. Spotykacie się z danym zagadnieniem po raz pierwszy i to nie dlatego, że zagadnienie jest przykładowo totalnie niezrozumiałe, tylko dlatego, że Google ma bardzo specyficzne problemy, z którymi się zmaga.
W ubiegłym tygodniu opublikowaliśmy pierwszą część rozmowy z Tomkiem. Zobaczcie, jak wyglądały jego początki w świecie IT.
Już teraz zapraszamy na kolejną edycję live streamów z polskimi programistami na świecie! Porozmawiamy z Polakami, którzy pracują w Netfliksie, Facebooku, Wikipedii oraz w Discourse. W grudniu czekają nas aż dwie rozmowy!