Инженеры данных набирают популярность в последние 10 лет, но чем именно занимаются инженеры данных? По моему опыту, инженеры данных носят много шляп и часто находятся в середине треугольника бизнес-аналитики, разработки программного обеспечения и науки о данных. Одна из основных ролей инженера данных — сотрудничать с нижестоящими командами, такими как бизнес-аналитика и наука о данных, чтобы понять потребности бизнеса в данных и создать интеграцию данных для предоставления этих данных. Другая роль может заключаться в партнерстве с инженерами-программистами для использования данных приложений; типично для новых усилий по разработке программного обеспечения или проектов «от 0 до 1». Data Engineers часто прячутся в тени; мониторинг информационных панелей качества данных, прослушивание инженерных спринтов и прослушивание аналитических совещаний. Хороший Data Engineer — это тот, о ком вы не часто думаете; ваши данные поступают в соответствии с SLA, значения чистые и полезные, и вы всегда можете найти новые данные при любых запусках производства. Из-за этого Data Engineering не такая привлекательная профессия, как Data Scientist, но Data Scientist не может создавать ценности без Data Engineers, которые снабжают их свежими и чистыми данными. Во многих небольших организациях это типично для инженеров-программистов, инженеров-аналитиков и редко; Специалисты по данным выполняют работу инженеров по данным.

Инженеры данных используют такие инструменты, как Java, для создания API, Python для написания распределенных конвейеров ETL и SQL для доступа к данным в исходных системах и перемещения их в целевые местоположения. Инженеры данных — это эксперты по логистике в области данных.

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

Недавно я провел обширное исследование, чтобы проанализировать более 1000 вакансий, чтобы ответить на этот вопрос. Поскольку инженеры данных затрагивают множество технических областей, их навыки разнообразны. Общей нитью являются языки программирования: SQL, Python и иногда Java очень заметны. Общие инструменты для инженеров данных включают PySpark для распределенной обработки данных, базы данных, такие как Redshift или Azure, и технологии потоковой передачи данных, такие как Kafka или Flink. При установлении этих базовых технологий потребности часто могут смещаться в одном или нескольких направлениях. Некоторым компаниям нравится видеть инженеров данных, вооруженных инструментами визуализации данных, такими как Tableau или PowerBI. Многие другие компании предпочитают, чтобы инженеры данных хорошо разбирались в развертывании программного обеспечения и использовании таких инструментов, как Docker и Glue.

Эти технологии являются важной базой для современного инженера данных, но навыки межличностного общения редко упоминаются и являются важным компонентом успешных инженеров данных. Data Engineer должен быть опытным коммуникатором, поскольку мой опыт показывает, что мы часто зажаты между разными командами с разными потребностями. Мы можем формировать требования от команды инженеров бизнес-аналитики и преобразовывать их в требования для инженеров-программистов. Способность умело ориентироваться в этих конкурирующих потребностях, устранять двусмысленность в коммуникациях и предоставлять конвейеры данных, которые удовлетворяют межфункциональным требованиям, — это проблемы, с которыми обычно приходится сталкиваться. Помимо общения, инженеры данных никогда не должны стоять на месте. Технологии развиваются стремительно, а инструменты, актуальные сегодня, не были так популярны еще 5 лет назад. Поскольку инструменты быстро развиваются, инженеры данных должны развиваться.

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

Один день из жизни инженера данных в Кремниевой долине

8:00

Мой день начинается с бельгийских вафель; это секретный соус к успеху. Свежая клубника и чашка кофе делают жизнь стоящей.

Я вхожу в систему, чтобы проверить свою электронную почту, надеясь, что я не получил никаких уведомлений по электронной почте о сбоях конвейера. Неизбежно, у меня есть, и это, вероятно, самый высокий приоритет, чтобы решить, прежде чем делать что-либо еще. Честно говоря, это может варьироваться от 15-минутного исправления до целого дня поиска ошибок. Мое личное правило таково: я хочу найти неисправный конвейер раньше, чем бизнес. Если бизнес забудет, что я существую, это был еще один успешный день. Не поймите меня неправильно — я люблю сотрудничать, но я бы предпочел говорить о новых разработках, а не о неудачном конвейере.

9:00

Надеюсь, я смог быстро отвечать на электронные письма, быстро сортировать любые сбои конвейера и двигаться дальше. Я наиболее продуктивен в программировании по утрам, поэтому стараюсь не назначать встречи раньше 13:00. Сегодня я пообещал коллеге технический дизайн-документ (TDD), поэтому сосредоточу свое внимание на нем. В TDD я заполняю полную информацию о новой функции или проекте, чтобы в конечном итоге пройти экспертную оценку, прежде чем начинать большие усилия по разработке, чтобы убедиться, что мы согласны с тем, как это должно быть завершено.

12:00

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

1:00

Каждое утро я обещаю себе: «Сегодня я буду долго обедать», но этого никогда не происходит. Я предпочитаю пообедать быстро, чтобы не отвлекаться от своего потока внимания; это на самом деле поддерживает мою продуктивность. Я научился избегать обедов с высоким содержанием углеводов и предпочитаю есть легко и часто перекусывать, а не доводить себя до пищевой комы. Хотя; это все еще случается чаще, чем я хотел бы признать.

1:30

Во второй половине дня я обычно посещаю две или три встречи. Моя первая встреча — это встреча с заинтересованным лицом, не являющимся техническим специалистом, по многолетнему проекту, которым я руководил. Каждую неделю я обычно определяю новые объемы работ, преобразовываю их в технические требования и либо завершаю новую разработку самостоятельно, либо часто передаю ее другому инженеру по обработке данных. Моя вторая встреча — это рабочая сессия с другим инженером. Мы работаем над тем, чтобы понять, как лучше всего развертывать конвейеры, чтобы потреблять разумное количество ресурсов, и интегрировать различные инструменты таким образом, чтобы упростить масштабирование новых конвейеров данных. Мое последнее собрание в этот день — собрание по передаче дел; Я передаю один проект другому инженеру данных и хочу быть уверенным, что мои знания не будут потеряны при переходе. Я подталкиваю их к таким вещам, как расположение моего кода, моя схема проекта и история или эволюция проекта.

4:00

Обычно я выделяю некоторое административное время, которое использую по-разному. Иногда я стремлюсь наставлять новых членов команды. В другие дни я могу использовать это время в конце дня, чтобы спланировать следующее утро. Это время также иногда используется для придумывания новых проектов, поиска возможностей для улучшения существующих продуктов или функций и поиска возможностей для создания ценности. Один пример обнаруженной возможности; Я заметил тенденцию в определенной группе файлов, часто вызывающих ошибки нарушения типа. Я использовал это время в конце рабочего дня, чтобы изучить различные способы решения этой проблемы, написать разным командам по электронной почте о том, как они справляются с этой проблемой, написать новый технический проект и, в конечном итоге, реализовать его. Этот проект сэкономил время многим инженерам моей команды, уменьшив технический долг, возникающий каждый раз, когда происходила одна из этих ошибок нарушения типа.

6:00

Время, когда я заканчиваю свой день, сильно различается. Мой день заканчивается, когда я выложился на все 100%, и в баке больше ничего не осталось. Иногда я добираюсь до этого места к 4 часам. Так же часто я могу заинтриговаться какой-нибудь находкой и продолжать работать до 8:00 или 9:00. Это выходит в стирку, и я всегда готов устранить сбои или ответить на вопросы, и это то, что важно.