Wiele flagowych funkcjonalności Spotify powstało jako oddolne projekty – Jan Stypka
Jan Stypka zanim znalazł pracę w Sztokholmie, starał się o pracę w CERNie. W ciągu dwóch lat wysłał ok. 6 aplikacji na różne programy stażowe i udało mu się dwa razy wyjechać do pracy w Szwajcarii. Niewiele mniej razy aplikował na wolne stanowiska w Spotify, gdzie do dziś pracuje na stanowisku Data Engineera. Jak wyglądał pierwszy dzień pracy w Spotify? I jak duży wpływ na rozwój produktu mają developerzy? Tego dowiecie się z rozmowy, którą dla Was przeprowadziliśmy.
Spis treści
Czym zajmowałeś się przed Spotify?
Pracowałem w CERNie w Szwajcarii. Aby tam się dostać, pobiłem chyba rekord w ilości zgłoszeń, ponieważ przez dwa lata wysłałem w sumie 6 czy 7 aplikacji. CERN prowadzi szereg różnych programów dla studentów – zarówno wakacyjnych, jak i dłuższych staży na 6-12 miesięcy. Mniej więcej w połowie moich studiów zainteresowałem się fizyką i stwierdziłem, że bardzo chciałbym tam pojechać. Jako że mieli kilka otwarć w ciągu roku, zaaplikowałem na wszystkie. Za pierwszym razem musiałem się trochę napocić żeby przygotować CV, napisać list motywacyjny itd., natomiast każdy kolejna rekrutacja była już łatwa, bo większość papierologii miałem już zrobioną. Pamiętam, że nawet ustawiłem sobie na telefonie przypomnienia co parę miesięcy – “Zaaplikuj do CERNu”.
Ostatecznie udało mi się wyjechać dwa razy – najpierw na letni staż, a później na cały rok. Co ciekawe, i w sumie nie tak zaskakujące, na miejscu dowiedziałem się że nikt moich listów motywacyjnych nawet nie czytał. Głównym czynnikiem decydującym o sukcesie rekrutacyjnym była liczba funduszy przeznaczonych na staże dla studentów, które zmieniały się z roku na rok. Oczywiście będąc kandydatem nie miałem o tym zielonego pojęcia – za każdym razem gdy byłem odrzucany, wydawało mi się, że moje CV nie jest wystarczająco dobre. To była lekcja, która utwierdziła mnie w przekonaniu, że rekrutacja to jest w dużej mierze totolotek.
Determinacja to słowo, które od razu skojarzyło mi się, gdy pierwszy raz opowiedziałeś mi o drodze do Spotify. Pamiętasz dokładnie, ile razy próbowałeś się dostać do tej firmy?
Zależy jak liczyć, ale powiedziałbym że ok. 3-4 razy. Już podczas studiów, aplikowałem do Spotify na letni staż oraz w celu współpracy w ramach mojej pracy magisterskiej.
Pracę pisałeś o Spotify? Dokładnie o czym?
Niestety, praca finalnie nie była związana ze Spotify tylko z CERNem, który zgodził się na współpracę. Pracowałem tam w sekcji zajmującej się otwartym dostępem do nauki – zarówno publikacji naukowych, jak i wszelkiego rodzaju danych, które były do tego wykorzystywane. Udało mi się namówić moich przełożonych na eksperymentalne wykorzystanie uczenia maszynowego do klasyfikacji tekstu (ang. multi-label classification) – chcieliśmy zautomatyzować proces przyporządkowywania publikacji naukowych do poszczególnych kategorii, którym zajmowali się dotychczas wysoko wykwalifikowani specjaliści.
Zaczęliśmy atakować problem prostymi metodami, natomiast jako, że to był rok 2015 i wszyscy wszędzie mówili o głębokim uczeniu maszynowym (ang. deep learning), to chcieliśmy spróbować i tego podejścia. Mieliśmy dostęp do setek tysięcy publikacji skrupulatnie pokategoryzowanych przez kuratorów przez ostatnie kilkadziesiąt lat – fantastyczny zbiór danych do wykorzystania do tego typu problemów.
Co ciekawe, mimo mojego braku doświadczenia z sieciami neuronowymi, głębokie uczenie pozwoliło nam uzyskać świetne wyniki. Jako że cała sekcja była poświęcona otwartej nauce, kod do naszego systemu udało nam się również upublicznić i udostępnić na GitHubie. Cieszy się on nawet niewielką popularnością – co jakiś czas dostaję zapytania od różnych ludzi i firm z całego świata, którzy próbują zastosować go do swoich problemów. Jest to zdecydowanie najbardziej użyteczna rzecz, którą udało mi się stworzyć podczas studiów I na pewno ta, z której jestem najbardziej dumny.
Wróćmy do samej rekrutacji do Spotify. Jak przebiegała?
Teoretycznie miałem szczęście, ponieważ moi znajomi spędzili w Spotify kilka miesięcy i udało mi się zdobyć od nich e-mail do jednej z tamtejszych rekruterek. Wysłałem jej sporo wiadomości, natomiast nigdy nie dostałem z powrotem żadnej odpowiedzi. Podobnie było ze zgłoszeniami na staże – wypełniłem jakieś formularze w internecie, natomiast moje aplikacje wydawały się lecieć donikąd.
Dopiero po ukończeniu studiów wszedłem na ich stronę i zacząłem przeglądać pozycje, na które wydawało mi się, że mógłbym się nadawać. Zaaplikowałem na trzy – pierwszą z miejsca odrzucili, ale już z drugą się udało.
Ogłoszenie zawierało raczej standardowe wymagania na dane stanowisko? Spotify podał widełki wynagrodzenia?
Ogłoszenie było bardzo ogólne, bez informacji o wynagrodzeniu ani o konkretnym projekcie. Spotify jest na tyle dużą firmą, że zwykle szuka pracowników o podobnym profilu do wielu zespołów jednocześnie, także publikuje bardzo ogólne ogłoszenia o pracę i przyporządkowywuje kandydatów do projektów na późniejszym etapie. Widełki również niezupełnie w tym przypadku miały sens, ponieważ to samo ogłoszenie odnosiło się zarówno do świeżych absolwentów, jak i doświadczonych deweloperów. Szczegóły oferty poznałem dopiero pod koniec procesu.
Jakie były najczęstsze powody odrzucenia Twojej kandydatury?
W niektórych przypadkach nie miałem wystarczających kwalifikacji, ale w większości wydaje mi się, że winny był zwykły bałagan. Firmy tej wielkości otrzymują dziesiątki tysięcy CV miesięcznie i wszystkie aplikacje rekruterzy przeglądają ręcznie. Współczynnik losowy jest bardzo wysoki. Pomijając moją udaną próbę, we wszystkich innych przypadkach nikt się nawet do mnie nie odezwał, więc zakładam, że moje CV po prostu ugrzęzło gdzieś po drodze. W średniej wielkości firmach, które nie mają do tego odpowiednich narzędzi i procesów, sytuacja może być jeszcze trudniejsza.
Może też szanse obniżało właśnie to, że aplikowałeś standardowo – przez oferty pracy, które wystawili?
Zwykle najlepiej jest być przez kogoś poleconym, natomiast nie znałem wtedy nikogo wewnątrz firmy. Moją jedyną szansą było dobijanie się przez oficjalne kanały i liczenie na łut szczęścia. Wychodziłem z założenia, że im więcej rzutów kostką, tym większa szansa na szóstkę – wysyłałem więc bardzo dużo aplikacji.
Jaką wizję Twojego stanowiska przedstawił rekruter?
Rekruter miał zaskakująco szczegółową wiedzę na temat mojego potencjalnego zespołu i potrafił mi dobrze wytłumaczyć czym miałem się zajmować. Grupa, do której mnie przypasowano specjalizowała się w A/B testingu i zajmowała się doradzaniem innym zespołom, w jaki sposób przeprowadzać eksperymenty i analizować ich wyniki.
Co zabawne, mimo że jego opis był w 100% zgodny z rzeczywistością, kiedy rozmawialiśmy, gdy dołączyłem do firmy pięć miesięcy później, sytuacja zupełnie się zmieniła. Zespół miał inny skład, inną nazwę i zmienioną misję – na szczęście jego charakter był ciągle ten sam, także mogłem się w nim odnaleźć. Po kolejnych kilku miesiącach zorientowałem się, że to norma – znowu wykonaliśmy pivot i zaczęliśmy pracować nad czymś innym, co akurat wtedy wydawało nam się najważniejsze. Prawie wszystkie zespoły w Spotify mają taki rytm.
Prawie wszystkie – reszta pracuje zazwyczaj cały czas nad jednym tematem?
Oczywiście są zespoły, których główne zadanie jest relatywnie niezmienne np. działy zajmujące się infrastrukturą. Natomiast nawet tam co jakiś czas wszystko potrafi stanąć na głowie. Tutaj doskonałym przykładem jest wejście w życie RODO albo nasza migracja do chmury Google – oba były wielomiesięcznymi projektami infrastrukturalnymi, które wywróciły harmonogram i strategię niejednego zespołu do góry nogami.
Cieszę się, że za którymś razem udało się dostać do Spotify. Powiedz, dlaczego zainteresowała Cię właśnie ta firma? Jest tyle innych miejsc pracy.
Spotify jest jedną z tych usług, do których przekonałem się stosunkowo późno, natomiast błyskawicznie zostałem wielkim fanem. O aplikacji desktopowej słyszałem od dłuższego czasu, natomiast zbyt rzadko słuchałem muzyki na laptopie żeby się tym bardziej zainteresować. Przełomowym momentem było dla mnie przejście na subskrypcję premium i porzucenie mojego starego odtwarzacza mp3 na rzecz telefonu ze Spotify. Różnica była gigantyczna. Wreszcie mogłem przestać wkładać mnóstwo wysiłku w organizację i synchronizację mojej kolekcji mp3 na komputerze – miałem z dnia na dzień dostęp do wszystkich ulubionych piosenek, skrupulatnie poukładanych w playlisty i całkiem niezłe rekomendacje muzyczne jako bonus. Co ciekawe, ciągle trzymam gdzieś te stare empetrójki na dysku jako pamiątkę, do której czasem z sentymentu zaglądam.
Natomiast decyzja o dołączeniu do Spotify miała oczywiście również szereg znacznie bardziej prozaicznych powodów. Wiedziałem, że nie chcę wyjeżdżać z Europy ani nigdzie gdzie trudno byłoby mi wracać do Krakowa. Sztokholm, gdzie znajduje się główna siedziba Spotify, jest pod tym względem bardzo wygodny. Zależało mi także na większej firmie, w której miałbym możliwość wyboru między wieloma projektami i możliwościach rozwoju w różnych kierunkach. Znana marka również pomaga, ponieważ przyciąga mnóstwo świetnych specjalistów z całego świata. Zdecydowanie najlepszą częścią mojej pracy jest codzienna interakcja z najwyższej klasy inżynierami, analitykami, designerami itd.
Jakie miałeś oczekiwania, a jak wyglądała rzeczywistość? Pamiętasz jak wyglądał pierwszy dzień pracy w Sztokholmie? Po jakim dniu zacząłeś pracę z kodem?
Oczywiście doskonale pamiętam pierwszy dzień. Mój menedżer miał spotkanie o tej samej godzinie, kiedy ja stawiłem się rano w biurze, więc z miejsca wrzucono mnie w kocioł i dołączyłem do niego żeby posiedzieć w kącie sali i spróbować złapać trochę kontekstu.
Pamiętam, że duże wrażenie sprawił na mnie format całego spotkania. W CERNie byłem przyzwyczajony do wąskich, bardzo technicznych rozmów między informatykami, natomiast to była dyskusja na temat pomysłów na nową wersję jednego z naszych produktów, w której brali udział zarówno inżynierowie, ale również designerzy, specjaliści od user researchu, produktu itd. Jako że wcześniej miałem do czynienia z systemami na bardzo głębokim backendzie o zastosowaniu głównie akademickim, to wszystko to było dla mnie nowe.
Kolejne dni zajmowałem się głównie instalowaniem i konfigurowaniem całego środowiska — to raczej mało ekscytująca część onboardingu. Spotify na szczęście korzysta głównie z otwartych i szeroko dostępnych narzędzi jak Slack, Google Calendar, GitHub Enterprise, także ta część była stosunkowo bezbolesna. Mniej więcej w połowie pierwszego tygodnia zacząłem przechodzić przez tutoriale, walczyć z kodem i zapoznawać się z wszystkimi systemami.
Pieczę nad Tobą sprawował mentor? Po jakim czasie mogłeś samodzielnie pracować, realizować zadania od przełożonych?
Tak, miałem przyporządkowanego mentora, natomiast w praktyce pomagało mi kilku kolegów z zespołu w zależności od tego, kto akurat miał chwilę wolnego czasu. Dołączyłem w momencie gdy migrowaliśmy niektóre nasze systemy do chmury Google przepisując je przy okazji na Scalę, także szybko dostałem własną część kodu do zmigrowania.
Mimo braku wcześniejszego doświadczenia ze Scalą, stosunkowo szybko byłem w stanie pisać proste systemy. Jako feature developer, ogromna część kodu jest od ciebie wyabstrahowana i twoim zadaniem jest głównie implementacja logiki biznesowej, co jest stosunkowo łatwe. Kod odpowiedzialny za kompilację, pakowanie w kontener, deployment, wykonywanie oraz monitorowanie Twojego systemu jest zazwyczaj zautomatyzowany i dostajesz to wszystko za darmo wykorzystując firmowe frameworki.
Wiele miesięcy natomiast zajęło mi zrozumienie jak działają te wszystkie systemy pod maską, które wykonują moją logikę biznesową. Będąc zupełnie szczerym, ciągle nie mam poczucia, że wiem co tam się tak naprawdę dzieje. Pracowanie na wysokim poziomie abstrakcji ma ogromne zalety jeśli chodzi o produktywność, natomiast utrudnia całościowe zrozumienie systemów od strony technicznej. A to niestety jest konieczne, gdy coś się zepsuje… a zawsze się w końcu psuje.
Wspomniałeś o tym, że do Spotify aplikowałeś, bo chciałeś rozwijać swoje umiejętności. W jaki sposób developer może rozwijać się w tej firmie?
Jeśli chodzi o rozwój poza godzinami pracy, to staram się pojawiać na okolicznych meetup-ach, również o tematyce innej niż technologia. W Sztokholmie jest z tym trochę trudniej ze względu na barierę językową oraz to że często jestem w rozjazdach, ale gdy tylko pojawia się coś interesującego to zazwyczaj staram się pojawić.
Większość zainteresowań zawodowych natomiast staram się rozwijać w ramach pracy. Podczas różnych projektów, nad którymi pracujemy, jest wiele okazji żeby wyjść poza swoją specjalizację i podszkolić się w innej dziedzinie np. web development albo mobile engineering. Głównie zajmuję się tematyką przetwarzania danych i uczenia maszynowego, ale na co dzień często muszę przyjmować rolę np. product managera albo analityka. W rzeczywistych projektach, nawet w dużych firmach, bardzo trudno ograniczać się tylko i wyłącznie do własnej specjalizacji.
Developerzy mają czas na własne projekty?
Wiele naszych flagowych funkcjonalności jak np. Discover Weekly powstało jako oddolne projekty, w związku z tym Spotify stara się gwarantować przestrzeń dla tego typu inicjatyw. Co roku jesienią mamy ogólnofirmowy HackWeek, gdzie wszyscy pracownicy przez tydzień mogą pracować nad dowolnie wybranymi projektami w spontanicznie organizowanych zespołach. Oprócz tego każdy zespół ma własne HackDays, które mają ten sam charakter, natomiast są rozsiane w krótszych odstępach przez cały rok.
Z racji tego jak trudno jest zatrudnić doświadczonych i wszechstronnych inżynierów, Spotify stara się umożliwić własnym pracownikom, jak najlepsze możliwości rozwoju. Każdy z nas może raz w roku wyjechać na zewnętrzną dowolnie wybraną konferencję, jeśli wpisuje się ona w zainteresowania i kierunek rozwoju – ja przykładowo w grudniu lecę do Montrealu na konferencję dotyczącą uczenia maszynowego. Oprócz tego co roku mamy Conference Week – tydzień wewnątrzfirmowych konferencji, gdzie wszyscy pracownicy z każdej z dziedzin zlatują się w jedno miejsce i wspólnie spędzają czas na prezentacjach oraz warsztatach. W tym roku na przykład odbyły się Backend Conference, Mobile Conference, Data Conference i wiele innych.
W dziedzinach, które Spotify uznaje za wyjątkowo ważne np. uczenie maszynowe, organizowane są dodatkowo cykliczne tygodniowe kursy, na które dołączyć może każdy inżynier, który chciałby rozwinąć się w tym kierunku. Kursy te są organizowane przez pracowników dla pracowników, także są również doskonałą okazją, aby poznać inżynierów z innych departamentów i wymienić wspólne doświadczenia. Ja w tym roku miałem okazję pomagać przy organizacji kursu skupiającego się na przetwarzaniu danych, natomiast sam niecierpliwie czekam żeby zapisać się na kurs mobile engineering, aby wreszcie nauczyć się podstaw Androida.
Kursy i konferencje są doskonałą okazją żeby poszerzyć wiedzę teoretyczną, natomiast kluczowym elementem jest zastosowanie jej w praktyce. Jeśli u kogoś w zespole nie ma okazji do wykorzystania swoich umiejętności, mamy w firmie koncepcję tzw. embeddings, gdzie tymczasowo pracownicy mogą przenieść się do innych zespołów, aby pracować nad wybranym projektem. Dzięki temu każdy ma okazję spróbować pracy w innym środowisku lub przy użyciu innych technologii.
Rzeczywiście Spotify mocno dba o rozwój pracowników – dzięki temu efektywniej pracujecie. Konkurencja pewnie często próbuje wyciągnąć Was, byście pracowali w innym miejscu. Jak dużo w ciągu tygodnia dostajesz takich propozycji? Co z nimi robisz i czy przełożeni wiedzą o tym, że dostajesz oferty od innych firm?
Z pewnością wiedzą, ponieważ prawdopodobnie sami dostają ich co najmniej tyle co my. Szczerze mówiąc, nie rozmawiamy za dużo na ten temat. Mamy duże szczęście, że obecnie sytuacja na rynku jest bardzo korzystna dla programistów i możemy łatwo próbować sił w różnych firmach. Dzięki temu mamy swobodę wyboru projektów, na których nam tak naprawdę zależy, co w moim odczuciu jest sporym przywilejem. Na oferty pracy póki co staram się uprzejmie odmawiać i pozostawać w kontakcie na przyszłość.
Jak myślisz, jaką kluczową cechę musi posiadać każdy developer, by pracować w takiej firmie jak Spotify?
Od jakiegoś czasu biorę udział w przeprowadzaniu rozmów kwalifikacyjnych do Spotify i to pytanie zawsze wraca jak bumerang. Rekrutacja to szalenie trudny temat i mój pogląd na ten problem ciągle ewoluuje, ale w tym momencie wymieniłbym dwie cechy.
Po pierwsze – autonomia. W pracy każdy ma dostęp do wszystkich możliwych narzędzi, danych i zasobów, które potrzebne mu są do pracy. Firma pełna jest również specjalistów, których zawsze można poprosić o pomoc i opinię na jakikolwiek temat. Od każdego pracownika wymagana jest natomiast samodzielność i umiejętność poruszania się w takim środowisku. Normalne i spodziewane jest napotkanie przeszkód oraz częsta konieczność wkroczenia na terytorium, o którym nie ma się pojęcia, natomiast każdy powinien umieć sobie radzić w takich sytuacjach – wiedzieć kiedy i kogo poprosić o pomoc, kiedy zmienić strategię albo po prostu zrezygnować. Nikt nie lubi pracować z ludźmi, których trzeba prowadzić za rękę.
Drugą cechą, pewnie dość sztampową, jest coś co po angielsku nazywa się growth mindset. Tak jak wspominałem, większość zespołów ma bardzo dynamiczną strategię i nierzadko co kilka miesięcy zmienia swój kurs o 180 stopni. Wymaga to od pracowników elastyczności, chęci nauki nowych rzeczy i umiejętności dostosowywania się do zmieniających się warunków. Ponadto, każdy pracownik zazwyczaj jest ekspertem tylko w jednej dziedzinie i musi umieć podporządkowywać oraz uczyć się od innych w problemach z ich specjalizacji. Bez tych cech, współpraca w interdyscyplinarnych zespołach jest szalenie trudna.