Enter your text here...
Data Scientist - na styku nauk matematycznych i programowania
Początki i Edukacja
Jak wyglądały Twoje początki w zawodzie i dlaczego akurat temat Data Science był dla Ciebie interesujący?
Rozpoczynając studia matematyczne, wiedziałem, że w przyszłości chciałbym łączyć zdobytą wiedzę z rodzącą się we mnie pasją do programowania. W pierwszych latach próbowałem różnych tematów - zajmowałem się widzeniem komputerowym, symulacjami zjawisk fizycznych, aż w końcu trafiłem na projekt, w którym analizowałem dane medyczne. Temat algorytmów uczenia maszynowego wydał mi się wtedy na tyle ciekawy, że nie przestałem zgłębiać go do dzisiaj.
Skąd najlepiej czerpać wiedzę jako Data Scientist; zarówno dla tych osób, które zaczynaja swoja przygode w tej branży, jak i tych już nieco bardziej zaawansowanych?
Dużo zależy od backgroundu, jaki się posiada. Sam, kiedy zaczynałem interesować się uczeniem maszynowym, miałem już za sobą kilka lat studiów matematycznych i jakieś doświadczenie programistyczne. To ważne, ponieważ bez takiej wiedzy bardzo ciężko jest zrozumieć metody uczenia maszynowego i je wykorzystywać.
Przygotowując się do pracy jako Data Scientist w pierwszej kolejności należałoby opanować przynajmniej jeden język programowania (najlepiej R albo Python) oraz podstawy algebry liniowej, teorii prawdopodobieństwa i statystykę. Dalej jest już trochę łatwiej.
Bardzo dobrymi książkami wprowadzającymi w obszerny świat metod uczenia maszynowego są “Introduction to Statistical Learning” i “The Elements of Statistical Learning”.
W późniejszym etapie warto zacząć interesować się konferencjami studenckimi/naukowymi i przeglądać najważniejsze artykuły naukowe, aby zawsze mieć świadomość istnienia nowych metod pozwalających uzyskiwać najlepsze wyniki.
Pomocny może być również udział w hackathonach lub innych konkursach, w których poza zdobywaniem nowych umiejętności i uczeniem się, jak być skutecznym, można przyjrzeć się rozwiązaniom innych uczestników.
W jaki sposób szukałeś swojej pierwszej pracy i w jaki sposób trafiłeś do PushPushGo?
Pierwszą pracę jako Junior Data Scientist znalazłem, będąc jeszcze na studiach.
Na jednej z konferencji usłyszałem o metodzie, która wydała mi się ciekawa, więc po prelekcji poszedłem dopytać mówcę o kilka rzeczy, których nie zrozumiałem. W rozmowie jakoś wyszło, że z chęcią zdobyłbym trochę doświadczenia i miesiąc później rozpocząłem pracę.
Dostać się do PushPushGo było już nieco trudniej. Ogłoszenie znalazłem w internecie i chociaż nie wyróżniało się niczym specjalnym, to spełniało moje wymagania, jakie stawiałem przyszłej pracy. Potem były zadanka i rozmowa z Pauliną i Mateuszem. To właśnie po tej rozmowie poczułem, że to miejsce dla mnie.
Praca i Rozwój
Kiedy Twoim zdaniem dla firmy technologicznej przychodzi moment, kiedy musi sobie ona założyć, że potrzebny jej jest Data Scientist?
Kiedyś myślałem, że ten moment następuje, kiedy firma posiada bazę danych, którą chciałaby lepiej wykorzystać. Dzisiaj myślę raczej, że jest on potrzebny znacznie wcześniej. Wynika to z faktu, że deweloperzy często tworzą bazy danych, kierując się zapewnieniem konkretnych funkcjonalności, a nie myśleniem w kategoriach informacji i jej potencjału.
Jakie Twoim zdaniem kluczowe KPI powinny być mierzone w pracy Data Scientist?
Temat KPI w Data Science jest trudny. Z jednej strony chciałoby się używać tych samych KPI, co developerzy, ale specyfika pracy nad modelami często na to nie pozwala. Wynika to z faktu, że przy budowaniu modeli zazwyczaj próbuje się wielu rozwiązań, z których ostatecznie wybiera się tylko jedno - najlepsze.
W kodzie nie pozostaje ślad po pozostałych próbach, ale nie można powiedzieć, że nie były one potrzebne, ponieważ to one pozwoliły nam uzyskać końcowy wynik.
Trafniejsze byłoby pewnie mierzenie liczby eksperymentów, chociaż przeprowadzanie eksperymentów to tylko jeden z wielu etapów w projektach uczenia maszynowego.
Mierzenie produktywności jest zatem dużym wyzwaniem, ale brak KPI niesie ze sobą spore utrudnienia. Z jednej strony, bez miar efektywności, zespół data science musi ciągle udowadniać swoją przydatność dla firmy. Z drugiej natomiast, taki zespół może przeznaczać zbyt dużo czasu na poszukiwanie lepszych modeli czy przygotowywanie danych, przez co realizowany projekt uzyska znacznie niższe ROI niż zakładane.
Wierzę, że nie jesteśmy jednak bezsilni. Mierzenie efektywności w średniej i długiej perspektywie jest jak najbardziej wykonalne w projekcie, który został wcześniej prawidłowo zaplanowany. Wskaźniki takie jak liczba zakończonych etapów w projektach, liczba wdrożeń, a w długiej perspektywie korzyści finansowe dla firmy, to niektóre ze wskaźników, które warto obserwować.
Jak mierzysz efekty swojej pracy, aby uzyskać informacje, że jest ona efektywna zarówno dla Ciebie jak i dla firmy?
Cały proces zaczyna się jeszcze przy wyborze projektów do realizacji. Robię, co mogę, żeby nie rozpoczynać projektów, które nie będą miały ostatecznie znaczenia dla PushPushGo albo ukończenie ich graniczy z cudem.
Zdarza się, że projektu, mimo usilnych starań, nie udaje się ukończyć. Wiele projektów jest obarczonych takim ryzykiem i nie ma co oczekiwać, że 100 procent z nich przyniesie wymierne korzyści dla firmy.
Panuje powszechne przeświadczenie, że skille techniczne są ważniejsze od umiejętności miękkich w działach IT. Które z nich uważasz, za ważniejsze w swojej pracy? Określiłbyś siebie jako osobę stricte techniczną czy może wręcz przeciwnie?
Wydaje mi się, że wśród osób pracujących z danymi nikt nie kwestionuje potrzeby posiadania rozwiniętych umiejętności miękkich. Prawda jest jednak taka, że wszystko zależy od wielkości zespołu i ustalonego podziału obowiązków.
Inne wymagania będzie się stawiało komuś, kto tworzy jednoosobowy zespół i musi się komunikować z wieloma osobami oraz przedstawiać publicznie swoje wyniki, a zupełnie inne osobie odpowiedzialnej tylko za optymalizację modeli czy ich wdrażanie.
Techniczna wiedza będzie potrzebna zawsze -- umiejętności miękkie mogą być równie ważne, ale nie zawsze muszą takie być.
Co na co dzień czytasz, aby rozwijać swoje umiejętności odnośnie pracy?
Wydaje mi się, że stosunkowo niewiele czasu poświęcam na ‘losowe’ błądzenie po artykułach branżowych. Najwięcej czasu ostatnio poświęcam na rozwój umiejętności które z jakiegoś powodu wcześniej zaniedbałem albo przeoczyłem. Jest jeszcze tego całkiem sporo i ciągle pojawiają się nowe tematy.
Z jakich narzędzi korzystasz w swojej pracy?
Komunikacja, zarządzanie projektem czy wersjonowanie kodu zostało na pewno już nieraz opisane w wywiadach z innymi osobami z PushPushGo, więc skupię się na narzędziach charakterystycznych dla analizy danych i modelowania.
Kod pisany jest w dwóch językach: R i Python. R bardzo dobrze sprawdza się do zadań analitycznych. Testowanie hipotez jest często szybsze i wygodniejsze niż w Pythonie. Dużym plusem R’a jest bardzo dobrze przygotowana biblioteka do dashboardów - shiny. Nowe i bardziej złożone programy pisane są natomiast w Pythonie.
Sercem data science są dane. W PushPushGo na potrzeby analityczne wykorzystujemy przede wszystkim mongodb. Przy pracy z mongodb korzystam z robo3t i metabase.
Pierwsze narzędzie wykorzystuję przede wszystkim do prototypowania złożonych zapytań, natomiast w drugim przygotowujemy parametryzowane zapytania dla innych działów i dashboardy.
Co oceniasz jako największy sukces w dotychczasowej pracy/ jakie było największe wyzwanie i jak udało Ci się z nim poradzić?
Nie mam osobistych sukcesów. Nad każdym projektem, w jaki byłem zaangażowany, pracowały również inne osoby, czasem na długo zanim dołączyłem do PushPushGo. Niemniej bardzo cieszy mnie sukces, jaki z Pauliną odnosimy w budowaniu zaufania do danych.
Obecnie większość (jeżeli nie wszyscy) pracowników PushPushGo ma dostęp do statystyk, które pomagają im wykonywać swoje obowiązki.
Dodatkowo zbudowaliśmy system, który regularnie skanuje naszą bazę w poszukiwaniu anomalii i niespójności. W ten sposób udaje nam się utrzymywać jakość danych w bazie na wysokim poziomie. Przekłada się to nie tylko na większe zaufanie do danych wewnątrz PushPushGo, ale również sprawia, że stajemy się bardziej wiarygodni w oczach naszych klientów.
Jakie są Twoje hacki produktywności?
Kiedyś dużo czasu poświęcałem na zastanawianie się nad pytaniem ‘i co powinienem zrobić teraz?’ i zajmowanie się rzeczami mało istotnymi w danym momencie. Jakiś czas temu przygotowałem sobie szablon planu dnia, który codziennie rano wypełniam zadaniami na konkretny dzień.
Pierwsze 30 minut poświęcam na przeczytanie wiadomości na slacku, mailu, discoursie i zaplanowanie, które taski będę wykonywał w każdym z bloków przeznaczonych na pisanie kodu.
Do komunikatorów wracam potem w trakcie standupu, lunchu i na koniec pracy -- starając się unikać zbędnego rozpraszania w trakcie pracy.
Jeżeli taski mają równe priorytety, to zaczynam zawsze od tych które są najtrudniejsze lub najbardziej przeze mnie nielubiane. Dzięki temu na koniec dnia, kiedy jest się już zmęczonym, zostają mi zadania niewymagające dużego skupienia i względnie przyjemne.
Najważniejsze w takim planie jest, aby był on elastyczny. Środowisko pracy data scientisty, jakkolwiek statycznie by nie wyglądało, bywa nieprzewidywalne. Tworząc plan, warto wziąć pod uwagę niespodziewane, często zdefiniowane dość abstrakcyjnie wydarzenia, które na ten plan mogą wpłynąć i przemyśleć sposób radzenia sobie z nimi.
Jakie widzisz trendy obecne oraz na przyszłość odnośnie tematu Data Science?
Specjalizacja. Z radością obserwuję coraz wyraźniejszy podział w zakresie obowiązków pomiędzy analitykami, inżynierami danych, inżynierami uczenia maszynowego, architektami baz danych, MLOpsami czy specjalistami BI.
Wydaje mi się, że sam termin ‘Data Scientist’, jeżeli przetrwa, to w znaczeniu osoby, która potrafi trochę robić wszystko, co osoby na stanowiskach wymienionych powyżej, tylko gorzej.
Wierzę też, że będzie rosła świadomość tego, co modele ML potrafią robić i robią dobrze, a co jest poza ich zasięgiem (albo zasięgiem danych i zasobów które posiadamy).
W międzyczasie powszechne problemy doczekają się gotowych pipelinów dostępnych dla każdego developera. Już teraz ich nie brakuje. HuggingFace czy Spacy pozwalają rozwiązywać różne problemy z zakresu NLP w zaledwie kilku liniach kodu. Potem już tylko pozostanie nam poczekać na GPT-4 który sam za nas to wszystko napisze.