Как я учился на инженера данных с нуля и что получил после 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, базы данных и десятки незнакомых технологий и думает: «Я вообще когда-нибудь это пойму?» - мой ответ такой:
Да, поймёшь.
Но придётся много раз почувствовать, что ничего не понимаешь.
И это, пожалуй, нормальная часть пути.