Kim są inżynierowie danych i jak można nimi zostać?

Witaj ponownie! Tytuł artykułu mówi sam za siebie. W przeddzień rozpoczęcia kursu Data Engineer proponujemy przyjrzeć się temu, kim są inżynierowie danych. W artykule znajduje się wiele przydatnych linków. Życzymy miłej lektury.

Kim są inżynierowie danych i jak można nimi zostać?

Prosty przewodnik po tym, jak złapać falę inżynierii danych i nie dać się wciągnąć w otchłań.

Stwarza wrażenie, że w dzisiejszych czasach każdy chce zostać naukowcem danych (Data Scientist). Ale co z inżynierią danych (Data Engineering)? W istocie jest to swoisty hybryd analityka danych i naukowca danych; inżynier danych zazwyczaj odpowiada za zarządzanie procesami pracy, kanałami przetwarzania i procesami ETL.Z uwagi na znaczenie tych funkcji, obecnie to kolejny popularny żargon zawodowy, który zyskuje na znaczeniu.

Wysokie wynagrodzenie i ogromne zapotrzebowanie to tylko niewielka część tego, co czyni tę pracę niezwykle atrakcyjną! Jeśli chcesz dołączyć do grona bohaterów, nigdy nie jest za późno, aby zacząć się uczyć. W tym poście zgromadziłem wszystkie niezbędne informacje, aby pomóc Ci stawiać pierwsze kroki.

Zacznijmy zatem!

Czym jest inżynieria danych?

Szczerze mówiąc, nie ma lepszego wyjaśnienia niż to:

„Naukowiec może odkryć nową gwiazdę, ale nie może jej stworzyć. Będzie musiał poprosić inżyniera, aby to zrobił.”

– Gordon Lindsay Glegg

Tak więc rola inżyniera danych jest dość istotna.

Z nazwy wynika, że inżynieria danych dotyczy danych, a konkretnie ich dostarczania, przechowywania i przetwarzania. Odpowiednio, głównym zadaniem inżynierów jest zapewnienie niezawodnej infrastruktury dla danych. Jeśli spojrzymy na hierarchię potrzeb sztucznej inteligencji, inżynieria danych zajmuje pierwsze 2–3 etapy: zbieranie, przenoszenie i przechowywanie, przygotowanie danych.

Kim są inżynierowie danych i jak można nimi zostać?

Czym zajmuje się inżynier danych?

Wraz z pojawieniem się big data zakres odpowiedzialności tym ekspertów gwałtownie się zmienił. Jeśli wcześniej pisali oni duże zapytania SQL i przesyłali dane przy użyciu takich narzędzi jak Informatica ETL, Pentaho ETL, Talend, to teraz wymagania wobec inżynierów danych wzrosły.

Większość firm z ofertami pracy na stanowisko inżyniera danych stawia następujące wymagania:

  • Doskonała znajomość SQL i Pythona.
  • Doświadczenie w pracy z platformami chmurowymi, w szczególności Amazon Web Services.
  • Preferowana znajomość Javy/Scala.
  • Dobre zrozumienie baz danych SQL i NoSQL (modelowanie danych, przechowywanie danych).

Pamiętaj, to tylko najważniejsze informacje. Z tej listy można założyć, że inżynierowie danych są specjalistami w zakresie tworzenia oprogramowania i backendu.
Na przykład, jeśli firma zaczyna generować duże ilości danych z różnych źródeł, twoim zadaniem jako inżyniera danych jest zorganizowanie zbierania informacji, ich przetwarzania i przechowywania.

Lista narzędzi używanych w tym przypadku może się różnić, wszystko zależy od objętości tych danych, szybkości ich przybywania i różnorodności. Większość firm w ogóle nie boryka się z wielkimi danymi, dlatego jako centralne miejsce przechowywania, tak zwane repozytorium danych, można użyć bazy danych SQL (PostgreSQL, MySQL itp.) z niewielkim zestawem skryptów, które kierują dane do repozytorium.

Giganci IT, tacy jak Google, Amazon, Facebook czy Dropbox, stawiają wyższe wymagania: znajomość Pythona, Javy lub Scali.

  • Doświadczenie w pracy z dużymi danymi: Hadoop, Spark, Kafka.
  • Znajomość algorytmów i struktur danych.
  • Zrozumienie podstaw systemów rozproszonych.
  • Doświadczenie z narzędziami do wizualizacji danych, takimi jak Tableau czy ElasticSearch, będzie dużym plusem.

Czyli zauważalne jest wyraźne przesunięcie w stronę wielkich danych, a konkretnie ich przetwarzania w warunkach dużego obciążenia. Firmy te mają zwiększone wymagania dotyczące niezawodności systemu.

Inżynierowie danych vs. naukowcy danych

Kim są inżynierowie danych i jak można nimi zostać?
Dobrze, to było proste i zabawne porównanie (nic osobistego), ale w rzeczywistości jest to znacznie bardziej skomplikowane.

Po pierwsze, musisz wiedzieć, że istnieje sporo niejasności w rozgraniczeniu ról i umiejętności naukowca danych i inżyniera danych. To znaczy, możesz łatwo być zdezorientowany tym, jakie umiejętności są potrzebne, aby być skutecznym inżynierem danych. Oczywiście istnieją pewne umiejętności, które pokrywają obie role. Ale jest również całkiem sporo diametralnie przeciwnych umiejętności.

Nauka o danych to poważna sprawa, ale zmierzamy w kierunku świata z funkcjonalną nauką o danych, gdzie praktycy są w stanie robić swoją własną analitykę. Aby wykorzystać potoki danych i zintegrowane struktury danych, potrzebujesz inżynierów danych, a nie naukowców.

Czy inżynier danych jest bardziej poszukiwany niż naukowiec danych?

— Tak, ponieważ zanim będziesz mógł przygotować ciasto marchewkowe, musisz najpierw zebrać, oczyścić i zapasować marchewki!

Inżynier danych zna się na programowaniu lepiej niż każdy data scientist, ale gdy przychodzi do statystyki, jest zupełnie odwrotnie.

Ale oto zaleta inżyniera danych:

bez niego/niej wartość modelu prototypowego, który najczęściej składa się z fragmentu kodu o niskiej jakości w pliku Python, uzyskanego od data scientist i w jakiś sposób dającego wynik, zmierza do zera.

Bez inżyniera danych ten kod nigdy nie stanie się projektem, a żaden problem biznesowy nie zostanie skutecznie rozwiązany. Inżynier danych stara się przekształcić to wszystko w produkt.

Podstawowe informacje, które powinien znać inżynier danych

Kim są inżynierowie danych i jak można nimi zostać?

Więc jeśli ta praca budzi w tobie entuzjazm i jesteś gotowy do nauki — możesz opanować wszystkie niezbędne umiejętności i stać się prawdziwą gwiazdą rocka w dziedzinie rozwoju danych. I tak, możesz to zrobić nawet bez umiejętności programowania czy innych wiedzy technicznej. Jest to trudne, ale możliwe!

Jakie są pierwsze kroki?

Musisz mieć ogólne pojęcie o tym, co jest co.

Przede wszystkim inżynieria danych odnosi się do informatyki. Konkretnie — musisz rozumieć efektywne algorytmy i struktury danych. Po drugie, ponieważ inżynierowie danych pracują z danymi, muszą znać zasady działania baz danych oraz struktur leżących u ich podstaw.

Na przykład, standardowe bazy danych SQL oparte na drzewach B bazują na strukturze danych B-Tree, a także w nowoczesnych rozproszonych repozytoriach, LSM-Tree i innych modyfikacjach tabel haszujących.

* Te kroki są oparte na wspaniałym artykule Adila Hashtamova. Więc jeśli znasz rosyjski, wesprzyj tego autora i przeczytaj jego post.

1. Algorytmy i struktury danych

Użycie odpowiedniej struktury danych może znacznie poprawić wydajność algorytmu. W idealnym świecie wszyscy powinniśmy uczyć się struktur danych i algorytmów w naszych szkołach, ale rzadko jest to poruszane. W każdym razie, nigdy nie jest za późno, aby się zapoznać.
Oto moje ulubione darmowe kursy do nauki struktur danych i algorytmów:

Plus nie zapominaj o klasycznej pracy nad algorytmami Thomasa Cormena — Wprowadzenie do algorytmów. To idealny podręcznik, gdy potrzebujesz odświeżyć swoją pamięć.

  • Aby poprawić swoje umiejętności, korzystaj z Leetcode.

Możesz również zanurzyć się w świat baz danych za pomocą niesamowitych filmów Uniwersytetu Carnegie Mellon na YouTube:

2. Nauka SQL

Całe nasze życie to dane. Aby wydobyć te dane z bazy danych, musisz 'rozmawiać' z nimi w jednym języku.

SQL (Structured Query Language — język zapytań strukturalnych) to język komunikacji w dziedzinie danych. Cokolwiek ktoś mówi, SQL istniał, istnieje i będzie istnieć przez długi czas.

Jeśli długo pracowałeś w programowaniu, prawdopodobnie zauważyłeś, że pogłoski o rychłej śmierci SQL pojawiają się co jakiś czas. Język został stworzony na początku lat 70. i wciąż cieszy się ogromną popularnością wśród analityków, programistów i po prostu entuzjastów.
Bez znajomości SQL, inżynieria danych staje się praktycznie niemożliwa, ponieważ nieuchronnie musisz tworzyć zapytania do wydobywania danych. Wszystkie nowoczesne hurtownie danych wspierają SQL:

  • Amazon Redshift
  • HP Vertica
  • Oracle
  • SQL Server

… i wiele innych.

Aby analizować dużą warstwę danych przechowywanych w rozproszonych systemach, takich jak HDFS, wynaleziono mechanizmy SQL: Apache Hive, Impala itd. Widzisz, on nie zamierza nigdzie odchodzić.

Jak nauczyć się SQL? Po prostu praktykuj.

W tym celu poleciłbym zapoznać się z doskonałym podręcznikiem, który, nawiasem mówiąc, jest darmowy, od Mode Analytics.

  1. Średni poziom SQL
  2. Łączenie danych w SQL

Cechą charakterystyczną tych kursów jest interaktywne środowisko, w którym możesz pisać i wykonywać zapytania SQL bezpośrednio w przeglądarce. Zasób Modern SQL będzie przydatny. I możesz zastosować tę wiedzę w zadaniach Leetcode w sekcji Bazy danych.

3. Programowanie w Pythonie i Javie/Scali

Dlaczego warto uczyć się języka programowania Python, już opisałem w artykule Python vs R. Wybór najlepszego narzędzia do AI, ML i Data Science. Jeśli chodzi o Javę i Scalę, większość narzędzi do przechowywania i przetwarzania ogromnych ilości danych została napisana w tych językach. Na przykład:

  • Apache Kafka (Scala)
  • Hadoop, HDFS (Java)
  • Apache Spark (Scala)
  • Apache Cassandra (Java)
  • HBase (Java)
  • Apache Hive (Java)

Aby zrozumieć, jak działają te narzędzia, musisz znać języki, w których są napisane. Paradygmat funkcyjny Scali pozwala efektywnie rozwiązywać problemy związane z równoległym przetwarzaniem danych. Python, niestety, nie może się pochwalić prędkością i równoległym przetwarzaniem. W każdym razie, znajomość kilku języków i paradygmatów programowania dobrze wpływa na wszechstronność podejść do rozwiązywania problemów.

Aby zanurzyć się w języku Scala, możesz przeczytać Programowanie w Scali od autora języka. Również firma Twitter opublikowała dobre wprowadzenie — Scala School.

Jeśli chodzi o Pythona, uważam, że Fluent Python jest najlepszą książką na średnim poziomie.

4. Narzędzia do pracy z danymi wielkich rozmiarów

Oto lista najpopularniejszych narzędzi w świecie dużych danych:

  • Apache Spark
  • Apache Kafka
  • Apache Hadoop (HDFS, HBase, Hive)
  • Apache Cassandra

Więcej informacji na temat budowania dużych bloków danych można znaleźć w tej niesamowitej interaktywnej przestrzeni. Najbardziej popularne narzędzia to Spark i Kafka. Naprawdę warto je poznać, najlepiej zrozumieć, jak działają od środka. Jay Kreps (współautor Kafki) w 2013 roku opublikował monumentalną pracę The Log: co każdy programista powinien wiedzieć o abstrakcji łączenia danych w czasie rzeczywistym, nawiasem mówiąc, główne pomysły z tej pracy zostały wykorzystane do stworzenia Apache Kafka.

5. Platformy chmurowe

Kim są inżynierowie danych i jak można nimi zostać?

Znajomość przynajmniej jednej platformy chmurowej znajduje się na liście podstawowych wymagań dla kandydatów na stanowisko inżyniera danych. Pracodawcy preferują Amazon Web Services, na drugim miejscu jest platforma chmurowa Google, a na trzecim Microsoft Azure.

Musisz mieć dobrą orientację w Amazon EC2, AWS Lambda, Amazon S3, DynamoDB.

6. Systemy rozproszone

Praca z dużymi danymi wiąże się z posiadaniem klastrów niezależnie działających komputerów, których komunikacja odbywa się przez sieć. Im większy klaster, tym większe prawdopodobieństwo awarii jego węzłów. Aby stać się ekspertem w dziedzinie danych, musisz zgłębić problemy i istniejące rozwiązania systemów rozproszonych. Ta dziedzina jest stara i skomplikowana.

Andrew Tanenbaum jest uważany za pioniera w tej dziedzinie. Dla tych, którzy nie boją się teorii, polecam jego książkę „Systemy rozproszone”, na początku może się wydawać trudna, ale naprawdę pomoże ci doskonalić swoje umiejętności.

Uważam, że „Projektowanie aplikacji z intensywnym wykorzystaniem danych” autorstwa Martina Kleppmanna jest najlepszą książką wprowadzającą. Przy okazji, Martin ma świetny blog. Jego praca pomoże usystematyzować wiedzę na temat budowania nowoczesnej infrastruktury do przechowywania i przetwarzania dużych danych.
Dla tych, którzy lubią oglądać filmy, na YouTube jest kurs Systemy komputerowe rozproszone.

7. Potoki danych

Kim są inżynierowie danych i jak można nimi zostać?

Potoki danych to coś, bez czego nie możesz żyć jako inżynier danych.

Większość czasu inżynier danych buduje tzw. potok danych, to znaczy tworzy proces dostarczania danych z jednego miejsca do drugiego. Mogą to być scenariusze użytkownika, które łączą się z API zewnętrznego serwisu lub wykonują zapytania SQL, uzupełniają dane i umieszczają je w scentralizowanym magazynie (hurtowni danych) lub w magazynie danych nieustrukturyzowanych (jeziorze danych).

Podsumowując: podstawowa lista kontrolna inżyniera danych

Kim są inżynierowie danych i jak można nimi zostać?

Podsumujmy — potrzebne jest dobre zrozumienie następujących kwestii:

  • Systemy informacyjne;
  • Inżynieria oprogramowania (Agile, DevOps, techniki projektowania, SOA);
  • Systemy rozproszone i programowanie równoległe;
  • Podstawy baz danych — planowanie, projektowanie, eksploatacja i rozwiązywanie problemów;
  • Projektowanie eksperymentów — testy A/B do udowadniania koncepcji, określania niezawodności, wydajności systemów, a także do opracowywania niezawodnych ścieżek do szybkiego dostarczania dobrych rozwiązań.

To tylko kilka wymagań, aby zostać inżynierem danych, dlatego zbadaj i zrozum systemy danych, systemy informacyjne, ciągłe dostarczanie/ wdrażanie/ integrację, języki programowania oraz inne tematy związane z informatyką (nie w każdej dziedzinie).

I na koniec, ostatnia, ale bardzo ważna rzecz, którą chcę powiedzieć.

Droga do kariery w inżynierii danych nie jest tak łatwa, jak może się wydawać. Nie wybacza, frustruje i musisz być na to gotowy. Niektóre momenty w tej podróży mogą skłonić cię do rezygnacji. Ale to prawdziwa praca i proces nauki.

Po prostu nie koloryzuj go od samego początku. Cały sens podróży polega na tym, aby nauczyć się jak najwięcej i być gotowym na nowe wyzwania.
Oto świetny obrazek, na który natrafiłem, który dobrze ilustruje ten moment:

Kim są inżynierowie danych i jak można nimi zostać?

I tak, nie zapomnij unikać wypalenia zawodowego i odpoczywać. To również jest bardzo ważne. Powodzenia!

Jak podobała wam się artykuł, przyjaciele? Zapraszamy na bezpłatnym webinarze, który odbędzie się już dziś o 20:00. W ramach webinaru omówimy, jak zbudować efektywny i skalowalny system przetwarzania danych dla małej firmy lub startupu przy minimalnych kosztach. Jako praktyka zapoznamy się z narzędziami przetwarzania danych Google Cloud. Do zobaczenia!

Źródło: habr.com

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster