Rynek analityki danych, szczególnie tej “wielkogabarytowej” jest jeszcze dość młodą działką w IT. Jest to też coraz bardziej strategiczny rynek dla wielu firm inwestujących w niego coraz większe pieniądze. Skutkiem tego rynek coraz szybciej się zmienia, powstaje coraz więcej narzędzi mających zaspokoić rosnące potrzeby firm oraz wzrasta także zapotrzebowanie na specjalistów potrafiących z nich korzystać, co w IT wcale nie jest takie proste, o czym wie każdy kto ma kontakt z tą branżą. Pojawia się zatem pytanie, co należy umieć by zacząć swoją pracę z analityką danych. W artykule skupimy się na jednym z częściej poszukiwanych specjalistów, czyli inżynierem danych (data engineer).
Naucz się programować
Na pierwszym miejscu, dość nietypowo w stosunku do większości poradników w internecie, wskażę umiejętność programowania. Oczywiście od lat mówi się, że programista zostanie zastąpiony przez wyspecjalizowane algorytmy które będą generować same kod na życzenie biznesu, ale nadal umiejętność programowania, jest jedną z podstawowych które musi zdobyć inżynier danych. Najbardziej podstawowym i powszechnym językiem “programowania” jest oczywiście SQL. W świecie analizy danych jego rola jest dużo większa niż komuś z innego obszaru IT mogłoby się wydawać, gdyż poza standardowym i popularnym zastosowaniem do komunikacji z bazami danych, także tymi NoSQL powszechnie używanymi tutaj, jest on także używany to pracy z takimi narzędziami jak np. Hive, Presto, Trino, Spark, Flink czy Kafka (ksqlDB).
Dodatkowo warto znać przynajmniej jeden z języków programowania ogólnego zastosowania. Wśród osób zajmujących się data science lub uczeniem maszynowym króluje oczywiście język Python jeśli chodzi o popularność, jednak inżynierowie danych bardzo często sięgają także po język Scala oraz Java. Oczywiście można spotkać oferty wymagające znajomości innych języków jak choćby Go, R, C++, Kotlin, Groovy, C# czy JavaScript ale zdecydowanie najpopularniejszymi są Python, Scala oraz Java.
Niestety poznanie składni języka to zdecydowanie za mało. By zostać programistą należy jeszcze mieć wiedzę o takich aspektach wytwarzania kodu jak algorytmy i struktury danych, czysty kod, wzorce projektowe czy testowanie kodu. Niezwykle przydatna będzie też znajomość jakiegoś środowiska programistycznego (np. IntelliJ IDEA, PyCharm, Visual Studio Code), notebooków data science (np. Jupyter, Zeppelin) czy umiejętność korzystania z systemu kontroli wersji (np. Git).
Poznaj swoje narzędzia
Inżynierowie danych w swojej pracy korzystają z wielu narzędzi ułatwiających pracę z danymi, dlatego ich poznanie jest bardzo ważne i cenne dla pracodawców. Patrząc na rozwój tych narzędzi, można zauważyć pewne ery rozkwitania i popularyzacji różnych narzędzi. Wszystko zaczęło się od rozwiązania jakim jest Apache Hadoop który do dzisiaj jest podstawą większości platform Big Data (mam tutaj na myśli komponenty HDFS i YARN). Drugim narzędziem które zdobyło rynek jest Apache Spark, jest to najprawdopodobniej najczęściej wymieniana technologia w ofertach dla inżynierów Big Data. Po erze przetwarzania wsadowego (batch) przyszła kolej na rozwój narzędzi przetwarzania strumieniowego i tak na dobre zagościła w ofertach pracy Apache Kafka a niedługo później coraz częściej firmy zaczęły poszukiwać inżynierów znających także Apache Flink. W ostatnim czasie do narzędzi wiodących prym w ofertach pracy dołączył także Apache Airflow. Znając te 5 narzędzi, będziemy mogli złożyć CV na większość ofert inżyniera danych.
Chcąc swobodnie poruszać się w obszarze danych, należy dobrze poznać także narzędzia w których te dane będą się znajdować. Oczywiście podstawowym miejscem składowania naszych dużych zbiorów danych będzie w większości przypadkach Data Lake (np. HDFS, Amazon S3, Google Cloud Storage, Azure Data Lake). Coraz częściej rozszerza się możliwości jezior danych wykorzystując rozwiązania takie jak Apache Iceberg, Delta Lake lub Apache Hudi. Praktycznie każda większa firma będzie korzystać także z hurtowni danych, dlatego znajomość tego typu narzędzi może się okazać dużym plusem dla naszego przyszłego pracodawcy. Skoro najpopularniejszym językiem w IT jest od dawna język SQL, nie sposób zapomnieć o bazach danych, zarówno tych klasycznych, relacyjnych jak również rozwiązań NoSQL jak Cassandra, HBase, Redis czy MongoDB.
Chmura obliczeniowa to przyszłość
Adopcja chmury w Polsce stawia nas niestety w końcówce wszelkich europejskich rankingów, jednak większość specjalistów uważa, że dogonienie zagranicznych rynków to tylko kwestia czasu, zaś znajomość chmury publicznej to obecnie jedna z najczęściej poszukiwanych umiejętności na rynku pracy. Oczywiście trzeba się liczyć z tym, że pracując dla polskiej firmy, nasz kontakt z chmurą będzie jeszcze dość ograniczony, jednak tempo rozwoju rozwiązań chmurowych i mnogość dostępnych tam narzędzi sprawia, że im wcześniej poznamy możliwości chmury publicznej tym łatwiej nam będzie znaleźć wymarzoną posadę w przyszłości.
Trzeba tutaj zaznaczyć, że w chmurze spotkamy zarówno rozwiązania dobrze nam znane z platform onpremise jak Spark, Kafka czy Airflow które będą przez dostawców dostosowane do pracy w środowisku chmury publicznej, oraz także spotkamy tutaj konkurencyjne natywne narzędzia jak np. zamiast HDFS będziemy budować nasze jezioro danych w oparciu o Amazon S3, Google Cloud Storage lub Azure Data Lake zaś zamiast Kafki będziemy mogli wybrać Amazon Kinesis lub Google Pub/Sub. Należy tutaj wspomnieć także, że oprócz rozwiązań od czołowych dostawców takich jak Amazon Web Services, Google Cloud Platform lub Microsoft Azure coraz częściej firmy sięgają po rozwiązania firm trzecich dostępnych w chmurze publicznej jak np. Snowflake lub Databricks Unified Data Analytics Platform (obydwa narzędzia dostępne są w chmurze AWS, GCP oraz Azure).
Konteneryzacja to już codzienność
Przez długi czas konteneryzacja była kojarzona z dostarczaniem aplikacji, np. mikroserwisów. Od jakiegoś czasu jednak dla wielu firm kontenery to podstawa działania, zaś Docker i Kubernetes stały się bardziej strategicznym środowiskiem niż maszyny wirtualne. Coraz częściej słyszy się, że firmy migrują swoje platformy Big Data w części lub całości na Kubernetes. Oczywiście dzieje się to dzięki temu, że twórcy popularnych rozwiazań Big Data jak Spark, Flink lub Kafka Streams wspierają takie wdrażanie. Także duzi dostawcy platform Big Data jak AWS lub Cloudera umożliwili pracę ze swoimi platformami Big Data zarówno w wersji opartej o klasyczne wdrożenie na maszyny wirtualne / fizyczne jak i w oparciu o Kubernetes.
Podsumowanie
Powyżej, w czterech akapitach, wymieniłem najważniejsze (oczywiście moim zdaniem) obszary w których powinien rozwijać się inżynier chcący swobodnie pracować z danymi. Oczywiście w ofertach pracy dla inżynierów danych będą pojawiać się także inne wymagania tutaj pominięte, jednak w mojej ocenie, obserwując rynek zarówno od strony ofert pracy jak i kierunku w jakie idą firmy w Polsce i na świecie, te cztery obszary są kluczowe.