Как я учился на инженера данных с нуля и что получил после 11 месяцев обучения

Ещё относительно недавно я практически ничего не знал о Data Engineering. Если сказать проще - я представлял, что где-то существуют базы данных, какие-то серверы и программы, которые эти данные обрабатывают, но что именно делает инженер данных и как всё это связано между собой, понимал довольно поверхностно.

При этом мне хотелось перейти в IT и найти направление, в котором было бы интересно развиваться не несколько месяцев, а действительно строить дальнейшую карьеру. Так я и пришёл к Data Engineering.

Выбрал курс «Инженер данных с нуля» от Яндекс Практикума. На момент начала обучения у меня не было коммерческого опыта в Data Engineering, как и в IT в целом, поэтому для меня было важно найти не просто набор видеоуроков, а программу, которая проведёт от базовых вещей до более сложных инструментов и даст возможность постоянно практиковаться.

Почему именно Data Engineering

Меня привлекло то, что Data Engineering находится где-то на пересечении программирования, баз данных и инфраструктуры.

Здесь недостаточно просто написать несколько строк кода. Нужно понимать, откуда приходят данные, как их хранить, как обрабатывать, как перемещать между системами и как сделать так, чтобы весь этот процесс работал стабильно.

При этом на старте всё это выглядит довольно пугающе.

Когда впервые сталкиваешься с SQL, Python, PostgreSQL, ETL, хранилищами данных, Airflow, Kafka и другими технологиями, легко почувствовать, что перед тобой огромная гора информации.

И именно поэтому мне было важно обучение с последовательной программой.

Как проходило обучение

Курс построен по принципу спринтов: сначала изучаешь теорию, затем выполняешь практические задания и постепенно переходишь к проектам. В актуальной программе курс рассчитан примерно на 11 месяцев, а обучение включает около 200 часов теории и 340 часов практики.

Начинается всё достаточно спокойно.

Сначала изучаешь Python, базовые конструкции языка, коллекции, циклы, затем переходишь к более сложным темам, объектно-ориентированному программированию, HTTP и алгоритмам.

После этого начинается SQL и работа с базами данных.

И вот здесь для меня началась одна из самых интересных частей обучения.

Постепенно от простых запросов переходишь к JOIN, подзапросам, CTE, оконным функциям, транзакциям, оптимизации и другим вещам, которые уже гораздо ближе к реальным рабочим задачам.

Дальше появляется непосредственно Data Engineering: хранилища данных, витрины, ETL-процессы, Airflow, качество данных, многослойные DWH, Data Lake, Spark, Kafka, потоковая обработка и облачные технологии. Эти темы также входят в текущую программу курса.

Отдельный плюс - практически после каждого крупного блока остаётся проект.

Например, в процессе обучения можно собрать базу данных, поработать с хранилищем, реализовать ETL-пайплайн, разобраться с потоковой обработкой данных и в итоге собрать более крупный проект.

Для меня это оказалось намного полезнее, чем просто смотреть лекции.

Самое сложное - не технологии

Наверное, самое большое заблуждение новичка заключается в том, что главная проблема - запомнить синтаксис Python или SQL.

На самом деле сложнее другое - научиться самостоятельно решать задачу.

Пока смотришь разбор какого-нибудь алгоритма или выполняешь задание вместе с преподавателем, всё может казаться понятным. Ты видишь код, понимаешь логику, можешь пройтись по нему в дебаггере.

Но потом появляется новая задача, где изменились условия, названия таблиц или вообще немного поменялась ситуация, и внезапно оказывается, что написать решение самостоятельно уже гораздо сложнее.

С этим я сталкивался неоднократно.

И, наверное, именно поэтому практика на курсе для меня оказалась одной из самых ценных частей обучения. Она заставляет не просто узнать, как работает технология, а попробовать самостоятельно применить её.

Конечно, иногда это раздражает.

Бывает, что на задачу, которая на первый взгляд кажется простой, уходит несколько часов. Бывает, что приходится перечитывать теорию, искать информацию самостоятельно и возвращаться к уже пройденным темам.

Но в какой-то момент замечаешь интересную вещь: то, что раньше казалось совершенно непонятным, постепенно становится знакомым.

Легко ли было?

Нет.

И я бы не советовал воспринимать курс как способ получить новую профессию, практически ничего не делая самостоятельно.

Нагрузка действительно высокая. В моём отзыве после окончания обучения я отдельно отмечал, что большим плюсом курса была практика, но при этом некоторые темы требовали дополнительного времени и самостоятельного изучения.

Иногда ожидания от задания и реальное время на его выполнение сильно расходятся.

Думаешь: «Ну здесь минут на двадцать».

Проходит два часа.

И ты всё ещё сидишь и пытаешься понять, почему запрос возвращает не те строки.

Но именно такие моменты, как мне кажется, и формируют настоящий навык.

Если просто прочитать правильный ответ, можно запомнить его на какое-то время. Если самостоятельно несколько раз ошибиться, найти причину и исправить её - вероятность действительно разобраться намного выше.

Что изменилось за время обучения

Главное изменение для меня - я начал гораздо лучше понимать, как устроена работа с данными в целом.

Раньше Python, SQL, базы данных и различные инструменты существовали в голове как отдельные вещи.

После обучения появилась более целостная картина.

Я понимаю, зачем нужен ETL, как данные могут проходить через разные слои хранилища, зачем нужны витрины, как проектировать DWH и каким образом различные инструменты могут связываться между собой.

Конечно, я не считаю, что после курса можно остановиться и сказать: «Всё, я теперь полностью готов к любой рабочей задаче».

Наоборот.

После обучения становится гораздо понятнее, сколько ещё предстоит изучить.

Но это уже совершенно другое ощущение. Ты не стоишь перед неизвестной стеной технологий, а понимаешь, в какую сторону двигаться дальше.

А что с портфолио?

Ещё один важный результат - проекты.

На курсе постепенно собирается портфолио: от первых относительно простых задач до более серьёзных проектов, связанных с базами данных, хранилищами, ETL и обработкой данных. В текущей программе заявлено 13 проектов в базовом тарифе.

Для человека без коммерческого опыта это особенно важно.

Конечно, учебный проект не превращается автоматически в коммерческий опыт. Работодатель прекрасно понимает разницу.

Но на собеседовании уже можно не просто сказать: «Я изучал PostgreSQL и Airflow», а показать, что именно ты с ними делал, какие проблемы возникали и как ты их решал.

Для меня это гораздо ценнее строчки со списком технологий в резюме.

Стоило ли оно того?

Если коротко - для меня да.

Но я бы не сказал, что Яндекс Практикум сделал всю работу за меня.

Курс дал структуру, материалы, практику, проекты и поддержку. Но значительная часть результата зависит от самого студента.

Если относиться к обучению как к сериалу, который нужно просто досмотреть до конца, скорее всего, большого результата не будет.

Если же воспринимать каждое задание как возможность самостоятельно разобраться в очередной проблеме, результат будет совсем другим.

Я закончил курс с хорошей базой по Data Engineering, практикой работы с основными инструментами и проектами, которые можно обсуждать с потенциальным работодателем.

И, пожалуй, самое главное - у меня появилось понимание того, чем я хочу заниматься дальше.

Поэтому если кто-то сейчас находится примерно в той же точке, в которой я был в начале обучения - смотрит на Python, SQL, базы данных и десятки незнакомых технологий и думает: «Я вообще когда-нибудь это пойму?» - мой ответ такой:

Да, поймёшь.

Но придётся много раз почувствовать, что ничего не понимаешь.

И это, пожалуй, нормальная часть пути.

11