В прошлом посте я описал навыки, которые необходимы для входа в профессию в работе с данными человеку, который начал свой путь с 0. Также я предоставил ссылки на полезные ресурсы по их освоению.
Пост закончился тем, что после освоения базовых навыков, можно углубляться в одно из 5 направлений и развиваться в нём.
Поэтому, с этого поста я начну писать о навыках, которые нужны в этих направлениях и так же приложу ссылки на полезные курсы, статьи и видео. И начнём мы с направления Data Engineering - моего любимого направления, в котором я развиваюсь сам)
Ок, мы разобрались с экселькой, базами данных, SQL и научились на достаточном уровне пользоваться одним из BI-инструментов. Что учить дальше и в каком порядке, чтобы стать инженером данных? Вот мой список:
1.
Принципы ETL/ELT, основные форматы файлов (csv, xlsx, xml, json), архитектура "клиент-сервер", web-технологии (REST API, webhook).
Речь здесь идёт больше о понимании технологий, а не конкретных инструментах. Но для понимания принципов ETL/ELT вы можете установить какой-нибудь ETL-инструмент себе на компьютер (например, Pentaho Data Integration) и попробовать построить относительно простые data-пайплайны.
Лично я сразу пробовал строить ETL-процесс с использованием Python и SQL, но когда я только начинал разбираться в data-инжиниринге, я не знал о ETL-инструментах с графическим интерфейсом:)
Но, если вы никогда не программировали, то такие инструменты будут хорошим вариантом для изучения главного процесса, за который отвечают инженеры данных.
Более того, в готовых ETL-инструментах уже есть встроенные средства для ETL-подсистем. С языком программирования внедрять и использовать ETL-подсистемы сложнее и дольше, поэтому и понять все аспекты ETL получится не так быстро, как с GUI.
В принципе, вы можете даже посмотреть вакансии ETL-разработчиков. Их не так много, как вакансий на data-инженеров, но они есть, и вы можете уже получить реальный опыт построения ETL-процессов в компании.
Полезные ресурсы для изучения:
Модуль про ETL от Data Learn
Что такое REST API
Что такое вебхуки
2.
Python. После того, как вы поняли принципы ETL, изучили самые распространённые форматы файлов, с которыми работают инженеры данных и изучили базовые web-технологии, пора учиться строить data-пайплайны с использованием языков программирования.
Конечно, ETL-процессы можно строить и с использованием инструментов с графическим интерфейсом. Но если посмотреть на рынок труда, то в любой вакансии на data-инженера вы увидите как must have Python, Java или Scala. Поэтому, если хотите иметь больше возможностей и зарабатывать больше в этой сфере, нужно знать, как строить ETL с использованием кода.
Моё мнение - код придаёт больше гибкости решению и даёт больше возможностей в плане повышения качества (если вы умело программируете). По моему опыту также скажу, что, используя код, можно снизить стоимость поддержки всей аналитической инфраструктуры в несколько раз.
Также я часто в других каналах вижу вопросы по типу "Нужно учить только Python или Java/Scala?", "Почему учить Python, а не Java/Scala?" и т.д. Мой ответ: если у вас не было до этого опыта программирования, учите Python и только его. Точно не нужно распыляться на несколько языков. Python проще в освоении за счёт своей простоты синтаксиса и хорошей читабельности чужого кода. И он встречается как требование в большинстве вакансий. Да, Java и Scala быстрее в плане производительности самого кода (за счёт компиляции в машинный код), но не так много систем, где необходима наивысшая производительность кода. Да и с нынешними возможностями "железа" и облачными технологиями, имеет смысл больше уделять производительности труда инженеров, а не кода. Python как раз отлично подходит для этой цели.
Даже если вам не хватает возможностей Python, есть Spark (PySpark), который, кстати, спроектирован на Scala.
Вакансии с Java и Scala - это хороший вариант для опытных back-end разработчиков, у которых был опыт работы на этих языках и которые хотят переквалифицироваться в data-инженеров.
Процесс изучения Python рекомендую построить следующим образом: