10 востребованных навыков и основные факторы, определяющие карьерные перспективы в одной из самых быстрорастущих профессий века

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

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

Востребованные навыки

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

1. Быть Т-образным профессионалом

Лучше всего стремиться стать универсалом (горизонтальная полоса в T) в том смысле, что вы понимаете общие концепции баз данных, облачных вычислений, хранилищ данных, больших данных. , и что вы знаете хотя бы некоторые основы SQL, Python, Docker и создания ETL.

В то же время вы должны обладать более сильными навыками хотя бы в одной конкретной области (вертикальная полоса в T). Например, у вас могут быть хорошие навыки в написании манипуляций с данными Spark или Dask или у вас могут быть определенные знания предметной области, необходимые для компании, которую вы подаете. для, что отличает вас от других кандидатов.

Во многих случаях хорошее знание SQL + основы Python, Linux и AWS уже может привести вас на довольно высокооплачиваемую должность младшего специалиста.

2. Облачные сервисы для работы с данными.

Облачные вычисления произвели революцию и изменили многие отрасли. Как специалист по обработке данных, вы должны знать самые важные службы для хранения, вычислений, сетей и баз данных. Если вы мало о них знаете, я настоятельно рекомендую изучить Amazon Web Services - даже если вы в конечном итоге перейдете на Google Cloud Platform или Microsoft Azure, концепции, извлеченные из AWS, можно легко применить при переходе на другого поставщика облачных услуг, поскольку многие сервисы у поставщиков облачных услуг аналогичны, и их концепции практически одинаковы (например, блочное хранилище против объектного хранилища против NFS).

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

Наиболее важными сервисами AWS для должности инженера данных являются:

  • Возможность программного взаимодействия с файлами на S3 (например, для загрузки и выгрузки CSV-файла или файла паркета)
  • Возможность развернуть и использовать SSH для подключения к экземпляру EC2 + знание некоторых основ Linux, чтобы иметь возможность взаимодействовать с ним с помощью интерфейса командной строки.
  • IAM: знание того, как создать пользователя IAM, прикрепить политику для соответствующих сервисов, использовать ее для настройки программного доступа с помощью AWS CLI + основы работы ролей IAM
  • VPC: вы должны знать, что такое VPC, подсеть, и знать основы того, как они работают (например: ваш VPC существует в определенном регионе AWS и подсети в определенной зоне доступности в пределах этот регион)
  • RDS: зная, как развернуть или хотя бы взаимодействовать с реляционной базой данных, такой как Postgres.

Кроме того, полезно знать AWS Lambda (бессерверная функция как услуга), ECS & EKS (запуск контейнеров в масштабе), Amazon Redshift (облачное хранилище данных ), Athena (сервер бессерверных запросов для запроса озера данных S3) и AWS Kinesis или Amazon MSK (оба используются для потоковой передачи данных в реальном времени). Но вы можете сначала сосредоточиться на тех, которые представлены в маркированном списке. Курсы Edx объясняют большинство из них. Кроме того, не забудьте попрактиковаться: с уровнем бесплатного пользования AWS вы получаете (ограниченный) доступ к этим базовым сервисам, так что вы можете играть и учиться делает.

3. Строительство трубопроводов ETL.

Работа инженера по обработке данных - это во многом интеграция данных из различных источников, приведение их к форме, подходящей для анализа, а затем загрузка в некоторое озеро данных или хранилище данных. У вас должен быть некоторый опыт создания ETL. Это не означает, что вы должны были работать в проекте Big Data для некоторых крупных компаний - даже ваши самостоятельные проекты, опубликованные на Github или в блоге, могут продвинуть вас далеко в процессе подачи заявки и сделать вы выделяетесь из толпы.

4. Управление, мониторинг и планирование конвейеров ETL.

Одна из основных обязанностей инженеров по обработке данных - гарантировать, что данные всегда доступны, надежны и имеют надлежащую структуру. Для этого вам необходимо запланировать и контролировать конвейеры данных. Многие компании используют для этой цели системы управления рабочими процессами, такие как Apache Airflow или Prefect, поэтому знание одной из них может значительно повысить ваши шансы получить отличную работу по проектированию данных. Если вы хотите узнать об этом больше, прочитайте мои предыдущие истории, например этот - в этой статье я демонстрирую, как легко настроить систему управления рабочим процессом с помощью бессерверный кластер Kubernetes на AWS.

5. Умение работать с контейнерами: Docker и Kubernetes.

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

6. Знание основных понятий

Это сочетается с профессионализмом Т-образной формы: вы должны знать основы хранилищ данных, озер данных, больших данных, REST API и баз данных. Было бы весьма досадно, если бы на собеседовании не объяснили 3V больших данных или характеристики хранилища данных. Кроме того, стоит знать архитектурные составляющие. Например, в этом посте я обсуждаю архитектуры хранилищ данных и ключевые моменты при переходе в облако.

7. Способность работать и учиться самостоятельно.

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

8. Навыки программирования.

Программирование не означает, что вы должны быть «хакером» и проводить все дни, ничего не делая, кроме написания кода. Скорее речь идет об умении быстро учиться и умении писать хорошие абстракции. В области инженерии данных это означает, что вы знаете, как создавать СУХИЙ код (Don't Repeat Yourself), что означает: вы не копируете и не копируете - вставлять один и тот же код из одного скрипта в другой, но вы знаете, как писать функции или классы модульным и многократно используемым способом. Чистый код, который можно повторно использовать, расширять и параметризовать, он прост в обслуживании и сэкономит вам и другим время.

Приведу пример: однажды я работал в компании, где почти не существовало модульности. Почти в каждом проекте Python люди копировали один и тот же код, чтобы установить ведение журнала, подключиться к хранилищу данных и загрузить некоторые данные в него и из него или установить клиент S3 и загрузить файл CSV из некоторой корзины S3. Чтобы улучшить это, я создал пакет Python:

  • он включал все функции, которые были необходимы практически для любого проекта, и я перенес его в новый репозиторий GitHub
  • Затем этот пакет можно было бы установить где угодно через:
    pip install git+https://github.com/<COMPANY>/<PACKAGE_NAME>.git.

Этот пакет в конечном итоге сэкономил нам много времени и сделал кодовую базу намного чище.

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

Многие компании также ищут инженеров по данным, которые знают Scala, Java, R или C (или любой другой язык, о котором вы только можете подумать) - независимо от языка программирования, вы можете получить гораздо лучшую работу, если вы понимать основные типы данных для работы с данными, а также принципы функционального программирования и модульности.

9. Командная строка

Возможность работать с операционной системой Linux и взаимодействовать с ней с помощью команд bash - один из важнейших навыков, который сделает вас более эффективным .

Многие фреймворки и облачные сервисы работают таким образом, что мы определяем наши ресурсы и сервисы с помощью декларативного языка (такого, как файлы Dockerfile или Kubernetes YAML), которые затем можно развернуть через интерфейс командной строки. (CLI). Эта парадигма часто известна как Инфраструктура как код. Например, AWS CLI позволяет выделить весь кластер ресурсов, просто отправив команды bash в API AWS. Другие облачные провайдеры (такие как GCP или Azure) предлагают аналогичные интерфейсы командной строки.

10. Мягкие навыки

Некоторые могут ожидать, что инженер по обработке данных будет человеком, который ничего не делает, кроме написания ETL и вычисления чисел. Но на каждой работе стоит иметь навыки, которые дополняют ваш профиль. Представьте, что у вас есть два кандидата:

  1. Отличный кодер, но плохой оратор,
  2. Средний кодер, но в то же время отличный оратор.

Кого бы вы наняли? Многие компании выберут последнее. Работодатели ищут разносторонних людей, которые также обладают важными мягкими навыками, такими как управление проектами, публичные выступления, документирование, или отлично модерируют и организуют мероприятия.

Факторы, играющие большую роль в ваших карьерных перспективах

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

  1. Местоположение - даже если вы подаете заявление на удаленную работу, есть вероятность, что компания платит вам в соответствии со стандартами страны, в которой вы живете, с учетом стоимости жизни и т. д.
  2. Промышленность - компании в сфере финансов, автомобилестроения, технологий или фармацевтики часто платят намного больше, чем стартапы и электронная коммерция.
  3. Многолетний опыт - рекрутеры одержимы этим, хотя сами годы мало что говорят о том, чему вы научились на своей предыдущей работе ...
  4. Опыт - годы опыта не эквивалентны знаниям (по крайней мере, я так думаю). Часто люди просто отлично разбираются в Spark, Linux, Dask или продвинутом SQL. И если вы сможете доказать, что действительно хорошо это знаете, возможно, стоит более 20 лет опыта выполнения ETL с перетаскиванием.
  5. Практический опыт - в инженерии нет ничего важнее, чем практический опыт. Никто не сможет извлечь выгоду из наших знаний, если мы не сможем применить их в реальной жизни. Делайте личные проекты и практикуйтесь. Не стоит просто читать что-то и думать, что вы это уже знаете - если вы не применили это, это всего лишь теория, которую вы скоро забудете.
  6. Образование. Я лично обнаружил, что рекрутеры не так пристально смотрят на ваше образование, как я ожидал бы. Конечно, они проверяют, есть ли у вас степень бакалавра, магистра или даже доктора философии, но для рекрутеров часто не имеет большого значения, в каком университете вы учились или по какой специальности. То же самое и с сертификатами - многие технические менеджеры ценят ваш реальный опыт работы с конкретными инструментами или языками программирования выше, чем какие-либо официальные доказательства ваших знаний, и они могут предпочесть сами проверить свои знания на техническом собеседовании, а не полагаться на сертификаты.
  7. Ваши особые навыки, знание предметной области и мягкие навыки (например, способность разрешать конфликты) важнее, чем вы могли ожидать. Часто рекрутеры могут отклонить кого-то, потому что считают, что этот человек просто не вписывается в культуру команды и компании.

Подготовка к собеседованию

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

Кроме того, если вы планируете подавать заявку, вы должны быть готовы к некоторым (базовым) техническим вопросам. Многие менеджеры по разработке данных просят разработать звездную схему на основе какой-либо ситуации или задают вам некоторые вопросы по кодированию, например, что такое оконные функции SQL, генераторы, широковещание или понимание списков. в Python, в чем разница между образом Docker и контейнером Docker, или как вы подойдете к созданию образа Docker и запуску контейнера Docker.

И, наконец, верьте в себя и будьте уверены.

Заключение

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