Od NVIDIA do Tesli i Google. Historia Marcina Sieńka
Największym wyzwaniem dla Tesli, a dokładniej dla projektu Autopilot, w którym prężnie działał nasz dzisiejszy rozmówca, pozostaje przemierzanie skrzyżowań, które mogą być dowolnie skomplikowane. − Spora część zespołu pracuje nad jakimś tego aspektem, o czym można było przekonać się podczas niedawnego eventu inwestorskiego. Osobiście pracowałem nad imitowaniem przez system uśrednianej trajektorii obranej przez kierowców, którzy wcześniej przemierzali dane skrzyżowanie − mówi Marcin Sieniek, Software Engineer.
Poniższa historia to zapis wielu doświadczeń, w wielu miejscach pracy. Marcin był stażystą NVIDIA, Google i Bloomberga, później był Lead Developerem w krakowskim software housie, współzałożycielem startupu, engineerem w Tesli, a teraz pracuje jako Software Engineer / Research Scientist w Google. Jak wyglądała jego ścieżka kariery?
Jeszcze w trakcie studiów byłeś mentorem na krakowskiej uczelni, współtworząc koło naukowe zorientowane na poznanie programowania obiektowego w Javie. Jak przebiegały zajęcia?
Pracowałem z bardzo zdolną młodzieżą licealną. Wraz z kolegą staraliśmy się pokazać programowanie w nieco bardziej praktycznej formie, niż algorytmiczne zadanka, które dominowały nauczanie programowania w szkole. Tak naprawdę nasze doświadczenie było wtedy tylko minimalnie większe niż kursantów, więc super, że ktoś w ogóle się pojawiał. Zajęcia odbywały się po godzinach, ale rutynowo przychodziło około 30 osób, w tym sporo dziewczyn, które zwykle niełatwo jest zainteresować informatyką…
Czego nauczyło Cię to doświadczenie?
Myślę, że to była pierwsza sytuacja, gdy uświadomiłem sobie jaka frajda płynie z dzielenia się wiedzą i z niejakiej odpowiedzialności, by “odpłacić do przodu” wiele dobrego, które mnie spotkało w procesie kształcenia i wczesnej kariery.
Co było najbardziej wartościową pomocą w okresie Twojej nauki?
Trafiłem na kilku świetnych nauczycieli, którzy zainwestowali sporo wysiłku w to, bym “wyszedł na ludzi”. Poza tym system stypendialny na pewno bardzo mi pomógł.
Podczas studiów poznałeś zapewne różne języki programowania. Który przypadł Tobie najbardziej do gustu i dlaczego?
Na studiach wybór języka programowania, w którym się wyspecjalizuję, wydawał się ważnym zagadnieniem. Ale prawda jest taka, że nie przewidzisz gdzie Twoja kariera Cię zaprowadzi i co najbardziej się przyda. Pamiętam gdy po trzecim roku studiów wypełniałem ankietę na temat jakiegoś przedmiotu związanego z sieciami komputerowymi, kodekami audiowizualnymi itd. Napisałem wtedy, że zajęcia były super prowadzone, ale ta wiedza jest totalnie nieprzydatna, gdyż – jak znaczna większość programistów wtedy w Krakowie – skończę zapewne programując stronki internetowe w Javie. Miesiąc później wylądowałem na praktyce w NVIDIA, gdzie moje pierwsze zadanie dotyczyło… przetestowania sprzętowego kodeka JPEG właśnie.
Później odbyłeś staż w londyńskim oddziale Bloomberga. Spożytkowałeś go na pracy z kodem, czy na byciu obserwatorem?
Praktyka w Bloombergu to był odlot. Wielu kolegów pracowało nad funkcjami terminala Bloomberg, ale ja większość lata spędziłem na “programowaniu” makr w Visual Basicu dla Excela. Z drugiej strony, niezależnie od swojego projektu byłem w stanie pomóc kilku pełnoetatowym pracownikom rozmaitych działów analitycznych, których poznałem w firmie, niejednokrotnie automatyzując tydzień ich pracy w dwie godziny. Wtedy chyba dopiero do mnie dotarło, jak wielkim lewarem wydajności jest technologia.
W ciągu następnego roku odbyłeś jeszcze dwa staże: trzy razy w NVIDIA i raz w Google. Czego dowiedziałeś się podczas tych piętnastu miesięcy nauki?
Na pewno tego, że inkrementalna wartość kolejnych staży szybko maleje. Ale był to super spędzony czas, świetna okazja do podróżowania, wiele niezapomnianych przygód z innymi praktykantami. Zawodowo lekcja, która zapadła mi w pamięć trafiła się, gdy – obstając przy swojej racji wszedłem w konflikt z jednym z recenzentów mojego kodu. Mój mentor doradził mi wtedy, abym “wybierał swoje bitwy mądrze” – niektóre rzeczy warto odpuścić, nawet gdy ma się rację, zwłaszcza, gdy koszt angażowania się w nie przewyższa potencjalną korzyść.
Pierwszą pracę “na etacie” znalazłeś w Pixellate – krakowskim software housie. To właśnie w tej firmie pierwszy raz zrealizowałeś projekt od zera?
Pixellate było software housem kolegi, który wyruszał właśnie w podróż dookoła świata i potrzebował kogoś w terenie, kto upewni się, że klienci będą dobrze obsłużeni. Nadzorowałem tam kilka projektów na wczesnym etapie realizacji. Jeden z nich okazał się sporym sukcesem i ostatecznie przejął nasz software house za pieniądze pozyskane od inwestorów.
W tzw. “międzyczasie” tworzyłeś swój startup – MailGrupowy.pl. W jakiej technologii powstał i dlaczego w tej?
Wybór technologii był dość ciekawy. W przypadku startupu, zależało mi na szybkiej weryfikacji pomysłu. Początkowo implementowałem wszystko sam, więc potrzebowałem podejścia, które zminimalizuje ilość potrzebnej pracy. Dlatego znalazłem jakiś stary, porzucony projekt open source’owego klienta webowego poczty elektronicznej, który napisany był w Pythonie – niestety sprzed ery frameworków typu Django. Sporo wysiłku poszło później w “sklejanie” starych bibliotek z nowszymi frameworkami, ale myślę, że to była dobra decyzja.
Ile czasu zajmowała Ci praca nad usprawnianiem go?
Wystartowałem projekt w 2011 roku, firma powstała dopiero dwa lata później, gdy pozyskaliśmy finansowanie. Myślę, że product-market fit osiągnęliśmy po około roku pracy.
Uważasz, że każdy developer powinien poznać doświadczenie tworzenia własnego produktu od zera? Dlaczego?
W moim odczuciu, potężne siły oddziałują na każdego z nas codziennie, skłaniając do coraz głębszej specjalizacji. W krótkim terminie specjalizacja daje szybkie sukcesy. Ale uważam, że praca nad projektem na wczesnym etapie – czy to własnym, czy w cudzym startupie, czy nawet w korporacji – pozwala wyjść nieco z tego mindsetu specjalisty i odnaleźć w sobie zaradnego inżyniera od wszystkiego. Początkowo ogrom możliwości przytłacza, ale wraz z pierwszymi sukcesami człowiek nabiera potężnego kopa do pewności siebie jako osoby, której niestraszne są technologiczne problemy.
Rozwijałeś swój startup, pracowałeś w Pixellate i robiłeś doktorat. Wszystko w tym samym czasie, jak udało Ci się pogodzić te wszystkie obowiązki?
To były naprawdę gorące lata. Zwykle wstawałem o 6 rano, programowałem swój startup do 9, spędzałem kilka godzin na uczelni, w między czasie zdalnie nadzorując projekty innych w pracy i w startupie. Wieczorami pracowałem zwykle nad jakąś publikacją do doktoratu, a w wolnym czasie grałem w swoim zespole rockowym. Sypiałem 4-6 godzin. Jakoś udało się to spiąć, gdyż moje prace na etacie nie były wtedy przesadnie wymagające, do doktoratu sporą część materiału przygotowałem jeszcze w trakcie studiów magisterskich, a głównym focusem był startup, w którym wspierali mnie świetni techniczni współzałożyciele. Pamiętam, że sporo dyscypliny wymagała sama organizacja pracy tak, aby być możliwie najbardziej wydajnym.
Ostatecznie myślę, że taki szaleńczy tryb życia opłacił mi się, ale niekoniecznie polecam go innym. Z perspektywy czasu, zacząłem cenić inne aspekty życia i teraz maksymalizowanie wydajności pracy czy uzyskanych w trakcie studiów pensji wydaje mi się niemal szkodliwe. Również do robienia doktoratu trzeba mieć naprawdę dobry powód. Dla większości ludzi zainteresowanych pracą w przemyśle, doktorat w praktyce nie daje prawie żadnej przewagi. Teraz pewnie zwróciłbym więcej uwagi na zdrowie (żywienie i sen) oraz bardziej zbalansowaną działalność zawodową. Z drugiej strony jako młody ambitny człowiek nieraz nie wie się ile wysiłku okaże się wystarczające dla zapewniania sobie pożądanego stylu życia i pewnie lepiej przestrzelić niż przyłożyć się zbyt mało.
Mamy rok 2014, kiedy to dostałeś się do krakowskiego oddziału Google’a. Czym zajmowałeś się na stanowisku Software Engineera?
Tym czym większość świeżo zrekrutowanych pracowników korporacji – programowaniem jakichś zapomnianych trybików w wielkiej maszynie sprzedawania reklam. Miałem przy tym dużo szczęścia trafić na świetnych ludzi, od których nauczyłem się podstaw uczenia maszynowego – techniki, które leży u podstaw aktualnie trwającej rewolucji AI.
Po zamknięciu biura przeniosłeś się do Irvine. Dlaczego wybrałeś to miejsce, a może miejsce wybrało Ciebie?
Wielu moich przyjaciół i znajomych wybrało się w bardziej popularne kierunki – do Warszawy, Zurychu, Nowego Jorku lub Doliny Krzemowej. Polubiłem swój projekt, a ten przenosił się właśnie w okolice Los Angeles. Doszedłem do wniosku, że jeśli mam zamieszkać z dala od domu, mogę przynajmniej wybrać miejsce, które będzie dla mnie optymalne pod względem jakości życia. Nowy Jork i Dolina Krzemowa wydawały się nieco zbyt zabiegane, ale Południowa Kalifornia brzmiała jak wymarzone miejsce. O tym jak każdy z nas może nieco bardziej świadomie odnaleźć swoje miejsce na ziemi (niekoniecznie jedno), piszę zresztą w niedawnym poście na swoim blogu expat-pozytywnie.pl.
Jak wyglądają koszty życia w tym miejscu?
Hrabstwo Pomarańczy, w którym leży Irvine jest jednym z najdroższych miejsc w USA. Wynajem dwupokojowego mieszkania to ok. $2200/mc, tygodniowe zakupy w markecie dla dwóch osób to ok. $250, zaś obiad w restauracji dla dwojga to $30-100. Z drugiej strony czynsze wciąż są dużo niższe niż w Dolinie Krzemowej.
Myślę, że Irvine to mało znany kierunek do relokacji. Co Cię zaskoczyło w tym mieście?
Irvine jest dość unikalne, gdyż jest miastem w całości zaplanowanym i w dużej części posiadanym na własność przez rodzinę Irvine’ów. To sprawia, że jest bardzo estetyczne, ale niekiedy ma nieco sztuczny vibe. Na szczęście granice z sąsiednimi miasteczkami są bardzo płynne, więc kilka minut jazdy pozwala nam dotrzeć do Huntington Beach, o którym Offspring śpiewa w swoich piosenkach, luksusowego Newport Beach, czy bardziej wyluzowanej i zróżnicowanej Costa Mesy.
Czym zajmowałeś się wtedy w Google?
Pozostanie w tym samym projekcie okazało się dobrym wyborem, gdyż rok po przeprowadzce prowadziłem już siedmioosobowy zespół specjalizujący się w wykorzystaniu sztucznej inteligencji do sprzedaży reklam Google.
Jak wyglądała Twoja ścieżka rozwoju w tej firmie?
Korporacje jak Google mają dość zdefiniowaną ścieżkę kariery, przynajmniej jeśli chodzi o awanse na coraz wyższe stanowiska inżynierskie. W miarę dostarczania coraz większych projektów oraz oddziaływania na coraz większą grupę mniej doświadczonych inżynierów, rośnie nie tylko wynagrodzenie, ale i dostęp do jeszcze lepszych projektów. Niedocenianą cechą dużych korporacji jest właśnie możliwość przenoszenia się w obrębie firmy do bardziej liczących się organizacji, po tym gdy już dowiodło się swojej wartości w pierwszym projekcie.
Takim ciekawym projektem na pewno był Google Brain, do którego dołączyłeś po 2,5 roku – przeprowadzając się do Doliny Krzemowej. Opowiedz o tym projekcie i Twoim udziale w nim.
To stosunkowo nowe przedsięwzięcie, polegające na zaaplikowaniu doświadczeń Google w zakresie sztucznej inteligencji do najtrudniejszych problemów, z którymi boryka się medycyna. Przy współpracy z laboratoriami Deep Mind oraz kilkoma szpitalami i uniwersytetami, zespół przeze mnie współzałożony zbudował sztuczną inteligencję, która pozwala wykryć raka piersi na podstawie mammogramu z dokładnością lepszą, niż ta którą gwarantują amerykańscy i brytyjscy radiologowie.
Ta innowacja ma potencjał zwiększenia zasięgu programów screeningowych w krajach, gdzie dotychczas były one finansowo nieefektywne, potencjalnie chroniąc tysiące kobiet przed tym drugim najbardziej zabójczym rodzajem raka. Nasze wyniki znalazły zainteresowanie środowiska naukowego (artykuł jest aktualnie w recenzji do czasopisma Nature), a niektóre techniki są aktualnie przedmiotem postępowania patentowego.
W lutym tego roku rozpocząłeś pracę w Tesli. Jak wyglądał proces rekrutacji do tej firmy?
Nie szukałem wtedy pracy, rekruterka Tesli odezwała się do mnie na LinkedInie. Proces rekrutacji był dość ciekawy i składał się z zadania programistycznego do wykonania w domu (dość zaawansowane algorytmy geometryczne), prezentacji jednego z dotychczasowych projektów, rozmowy telefonicznej z dyrektorem i chyba z 5 rozmów technicznych na miejscu, głównie wokół uczenia maszynowego.
Czym zajmujesz się w Autopilocie?
Dużą strategiczną przewagą Tesli jest fakt posiadania na drodze już ponad pół miliona samochodów, spośród których większość – choć aktualnie kierowana przez właścicieli – dysponuje zestawem sensorów potrzebnym do autonomicznego poruszania się. Moją rolą w tym zespole jest mining danych telemetrycznych zgromadzonych przez firmę, celem “nauczenia” samochodu samodzielnego poruszania się. Jeden z projektów, który dostarczyłem, został wytłumaczony przez Andreja Karpathy’ego, dyrektora AI w Tesli w tym fragmencie video z Tesla Autonomy Day.
Jak wygląda praca nad tym projektem? Na jakim etapie jego rozwoju dołączyłeś do niego?
Autopilot jest właśnie w fazie przejściowej, gdzie działa już całkiem dobrze na (amerykańskich) autostradach, więc duża część uwagi zespołu skierowana jest na autonomiczną jazdę po mieście. Zespół pracuje proaktywnie (realizując kolejne funkcje z roadmapy), ale również reaktywnie: ilekroć któryś z kierowców dotychczas sprzedanych samochodów przejmuje od Autopilota kontrolę i robi coś innego niż samochód sam planował dokonać, taki scenariusz jest dokładnie diagnozowany. Zespół próbuje wtedy uogólnić rozwiązanie, które obejmie również podobne scenariusze w przyszłości, po czym odpowiedni podzespół implementuje usprawnienie. Następnie taki kod zostaje wysłany do naszych kierowców testowych (niekiedy również na samochody Elona!), później do klientów, którzy uczestniczą w beta-testach, aż wreszcie do pozostałych klientów.
Co było najtrudniejszym zadaniem w Tesli?
Największym bodaj wyzwaniem pozostaje przemierzanie skrzyżowań, które mogą być dowolnie skomplikowane. Spora część zespołu pracuje nad jakimś tego aspektem, o czym można się było przekonać podczas niedawnego eventu inwestorskiego. Osobiście pracuję nad imitowaniem przez system uśrednianej trajektorii obranej przez kierowców, którzy wcześniej przemierzali dane skrzyżowanie.
Jaki masz plan na siebie? Czym chcesz się zajmować w ciągu najbliższych lat?
Jak dotychczas, będę poszukiwał najtrudniejszych wyzwań technologicznych, gdzie moje umiejętności mogą posłużyć do uzyskania lepszych wyników, skupiając się na tych problemach, których rozwiązanie ma wartość dla ludzi, a nie tylko dla firmy. Poza etatem zajmuję się hobbystycznie inwestowaniem na rynkach finansowych, w nieruchomości oraz startupy w Polsce, a swoją drogę do niezależności finansowej dokumentuję – w formie poradnika – na blogu expat-pozytywnie.pl, do którego lektury zapraszam.
Marcin Sieniek. Obronił doktorat na AGH z informatyki i równocześnie licencjat z zarządzania na Uniwersytecie Ekonomicznym w Krakowie. W trakcie studiów założył startup – MailGrupowy.pl oraz pomagał koledze – właścicielowi lokalnego software house’u – jako kierownik projektów, zaś w wakacje odbył praktyki zagraniczne kolejno w Bloombergu, NVIDII (3x) i Google. Po ukończeniu doktoratu, po krótkim epizodzie w krakowskim Google, przeniósł się wraz z projektem do Irvine (na południe od Los Angeles), gdzie prowadził 7-osobowy zespół zajmujący się modelowaniem leadów dla działu sprzedaży, a następnie do Doliny Krzemowej, gdzie zajmował się użyciem sztucznej inteligencji w diagnozie raka piersi. Po krótkiej przygodzie w zespole Autopilota w Tesli, wylądował z powrotem w Google, gdzie zajmuje się teraz użyciem uczenia maszynowego w USG ciąży.