Инженер данных

Специалист по разработке и поддержке технических решений в области обработки данных. До уровня Senior такой инженер концентрируется на проектировании и настройке инфраструктуры, программной реализации и архитектуре данных. Более опытные сотрудники также работают с бизнес-процессами. Инженер данных — неформализованная специальность, поэтому в рамках этой позиции можно иметь разный профиль.

Hard

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

Необходимые навыки

Soft

Языки программирования общего назначения (C, C++, Python, GoLang, Java, Scala, Kotlin). Понимание практических аспектов разработки кода, тестирования и версионирования.
Теории алгоритмов, баз данных, основы реляционных баз, моделирование данных, язык программирования SQL.
Распределенные системы, параллельные вычисления, математический аппарат.
Английский язык для понимания технической документации.
Транзакционные (Oracle, MySQL, MS SQL Server, PostreSQL) и аналитические СУБД (Vertica, Exadata, Greenplum, Teradata, SAP Hana, Exasol).

Файловые хранилища, форматы и движки обработки (Hadoop, S3, Spark, Hive, Impala, Presto, Parquet, ORC, AVRO, JSON, CSV).
Критическое мышление. Необходимо научиться сомневаться в любых не обоснованных фактами вещах, даже заявленных руководством.
Навык командной работы. Важно уметь взаимодействовать с другими специалистами и вовлекать их в решение задач.
Грамотная коммуникация. Преуспеть в профессии поможет способность давать и получать обратную связь, открыто обсуждать слабые стороны и непонятные вещи и искать компромиссы.
Эмоциональный интеллект. Нужно понимать чужие переживания, мотивацию и состояния, чтобы эффективно и слаженно работать.
Key-value и документарное хранение (Cassandra, Elasticsearch, ScyllaDB, Redis, MongoDB).
Виртуализация (Apache Beam, Dremio).
Технологии обработки, транспортировки и оркестрации (Apache Nifi, Apache Kafka, Apache Airflow, Spark, и инструменты Enterprise-класса).
Вспомогательные технологии мониторинга (Prometheus, Grafana, Kibana, Elasticsearch)
Контейнеризация и оркестрация контейнеров (Docker, Kubernetes, OpenShift, Rancher).
Автоматизация поставки и инфраструктура (Gitlab, github, CI/CD, Ansible, Terraform).
Знание принципиальных архитектур и подходов к моделированию данных (3NF, Dimensional modeling, Data Vault, Anchor Modeling, Data Lake).
Профессиональное творчество. Выход за рамки привычных решений и способность к экспериментам помогут справиться с нетривиальными задачами, в которых присутствует высокий уровень неопределенности.
Усидчивость и внимательность к деталям. Кропотливое прописывание кода и выстраивание сложных процессов требуют умения фокусироваться и глубоко погружаться в работу.
Самообучение и насмотренность. Нужно следить за появлением новых практик и методик и быть готовым осваивать незнакомые инструменты и технологии.
В зависимости от требований конкретной компании порог для входа в профессию может варьироваться. Из-за высокой потребности в таких кадрах работодатели готовы нанимать людей даже с пробелами в фундаментальных дисциплинах, но со знанием инструментов.

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

Где и сколько учиться

«Высоконагруженные приложения. Программирование, масштабирование, поддержка», Мартин Клеппман. 2018.

В книге вы найдёте ключевые принципы, алгоритмы и компромиссы, необходимые для создания высоконагруженных систем для работы с данными. Материал разъясняется на примере популярных программных пакетов и фреймворков. Для чтения нужно знать SQL на базовом уровне и понимать, как работают базы данных.

Полезные книги

The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling, Ralph Kimball, Margy Ross. Третье издание, 2013.

Ставшая классической книга по многомерному моделированию для хранения данных и бизнес-аналитики. Одно из наиболее авторитетных руководств в этой области.
The Data Science Design Manual, Steven S. Skiena. 2017.

Увлекательный и чётко написанный справочник. Книга обязательна к прочтению для тех, кто хочет погрузиться в науку о данных. Авторы рассказывают, как стать хорошим специалистом в этой области и какие навыки нужны для этого.
Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement. Luc Perkins, Eric Redmond, Jim Wilson. 2018.

Авторы рассматривают семь различных баз данных. Например, Postgres среди реляционных, MongoDB для документации, Neo4J для графов. Книга даст глубокое понимание различных моделей баз данных и их применимости.

Полезные сайты и ресурсы

Митап DE or DIE, сделанный дата-инженерами для профильных специалистов. Здесь можно найти анонсы мероприятий, записи и презентации докладов прошлых лет.
Статья «Data Engineer: учебное пособие для прохождения собеседования» включает в себя самые распространённые вопросы и задачи, которые инженеры данных получают во время отбора в компании.
Data Engineering — сообщество на Reddit, где обсуждают отрасль дата-инжиниринга и делятся новостями.

Блоги и подкасты

DataEng — Telegram-канал о Data Engineering, где собрана информация по инфраструктурам для хранения, обработке и эффективному анализу данных.
The Data Engineering Podcast — подкаст об инструментах, кейсах и задачах из будней дата-инженеров.
Theseattledataguy — блог, в котором сотрудники консалтингового агентства делятся опытом проектирования, аналитики и моделирования данных, интеграции решений и машинного обучения. Также они рассказывают о новых инструментах и принципах создания дата-стратегий компаний.

Бесплатные курсы

«Основы инженерии данных» — курс на Coursera от IBM, который поможет разобраться с фундаментальными понятиями для карьеры в инженерии данных.
«Алгоритмы: теория и практика. Методы» — курс от Stepik, где разбирают основные алгоритмические методы: жадные алгоритмы, «разделяй и властвуй», динамическое программирование. Также вы узнаете, как их реализуют на языках C++, Java и Python
Intro to SQL: Querying and managing data — базовый курс, который поможет понять, как использовать SQL для хранения, запроса и обработки данных.