Обложка: Что нужно знать, чтобы построить карьеру в Big Data: объясняет эксперт

Что нужно знать, чтобы построить карьеру в Big Data: объясняет эксперт

12

Сегодня мы будем беседовать с Артёмом Гогиным — экспертом из мира Big Data, Senior Big Data Developer в Grid Dynamics. Он имеет большой опыт работы с большими данными, в том числе построение и развитие хранилищ данных в таких компаниях, как «Сбербанк», «Мегафон» и др. Также Артём — преподаватель и автор нескольких курсов по технологиях больших данных на портале GeekBrains.

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

Базовые знания и навыки в Big Data

— Каждый специалист занят своим делом и решает определённый круг задач. Поэтому в начале карьеры стоит подумать, к каким задачам больше лежит душа. Что необходимо учить для старта в каждом направлении и как продвигаться по карьерной лестнице?

Нет необходимости делать выбор специальности в самом начале. Специалисты каждого направления имеют общую базу, с которой и нужно начинать обучение. Зная только общую базу, уже можно выполнять множество задач и быть частью Big Data. Углубляться в определённое направление я советую только после знакомства изнутри с тем, как выглядят проекты. Поэтому для совсем новичков я бы посоветовал «копать вширь», т.е. изучать инструменты, которые пригодятся в любой задаче Big Data.

— Из каких знаний/навыков состоит база Big Data?

Основа всего – это SQL. Да, именно SQL, а не общепринятые ООП, структуры данных, алгоритмы или Python. Это, наверное, сильно отличает Big Data от других направлений разработки, где для начала необходимо знать на приличном уровне какой-то из объектно-ориентированных языков.

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

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

— На каком уровне нужно владеть SQL?

SQL мало просто знать. Обязательным является именно уверенное владением этим инструментом. Вплоть до Senior позиций любого направления одним из самых существенных показателем зарплаты является знание SQL. Поэтому эту технологию никогда не помешает узнать получше.

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

Перечислю, что ожидается по SQL от любого специалиста начального уровня:

  • Идеальное знание join. Например, нужно найти записи, id которые есть только в таблице А или только в таблице B.
  • Идеальное знание агрегирующий функций.
  • Знание primary key и foreign key.
  • Знание оконных функций.
  • Поверхностное знание процедурного языка, например, PL SQL.
  • Понимание того, что такое trigger, procedure, hint.
  • Поверхностное знание нагрузки на базу данных. Например, нужно рассказать, чем отличается delete от truncate.

На собеседованиях необходимо будет решать задания вроде таких:

  • Найти данные за максимальную дату.
  • Выбрать учеников, у которые средняя оценка больше 3.
  • Выбрать учеников, у которых больше двух оценок.
  • Найти самые актуальные зарплаты сотрудников из истории повышений зарплат.
  • Удалить дубли из таблицы.

 Какие ещё базовые навыки требуются, кроме владения SQL?

Кроме SQL от любого специалиста также ожидаются минимальные навыки работы с UNIX-системами. Доступ ко многим базам данных может осуществляться именно через UNIX-серверы, поэтому необходимы базовые навыки работы с таким окружением. Достаточно будет знать команды ls, cat, mkdir, rm, touch, grep, awk, sed, а также знать, что такое stdin, stdout, stderr.

Во многих компаниях не станут спрашивать, что такое структуры данных, сложность алгоритмов (хотя иногда могут спросить ради оценки общей IT-эрудиции). Не нужно будет решать алгоритмы и применять паттерны проектирования ООП. Скорее всего, не придётся рассказывать про устройство и архитектурные особенности базы данных, на которую вас зовут работать.

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

Что должны знать и уметь дата-аналитик, дата-инженер и специалист в области Data Science

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

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

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

Любому техническому проекту всегда предшествует масса встреч, обсуждений, переговоров, уточнений потребностей, проверок гипотез и согласований результата. Зачастую в таких процессах задействован менеджер или product owner (если мы говорим про Agile), а также дата-аналитик как носитель точной информации о том, какими именно данными обладает подразделение и возможно ли из имеющихся данных получить то, что необходимо заказчикам.

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

— Какими знаниями и навыками должен обладать дата-инженер?

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

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

Сейчас одной из самых популярных систем хранения является Hadoop. Он есть почти в любой крупной компании для хранения больших объёмов данных. Для эффективной работы с этими данными очень часто используется Spark – фреймворк для запросов к данным.

Spark используется в трех языках – Python, Scala и Java. Если ваша компания или подразделение использует один из этих языков, вы тоже должны применять этот язык. Поэтому для расширения круга работодателей полезно ориентироваться во всех этих языках. Можно сосредоточиться на одном, но тогда и круг потенциальных работодателей сужается.

Для эффективных интеграций разных систем принято использовать Kafka. Знания этого инструмента ценится во многих компаниях. Для быстрого доступа к данным часто используются такие системы, как Cassandra, Redis, Elasticsearch или их аналоги. Знание архитектур этих систем также ценится среди работодателей.

— Что нужно знать тем, кто хочет развиваться в сторону Data Science?

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

В самом Python понадобятся такие библиотеки, как Spark и Pandas для обработки данных. Также понадобятся библиотеки машинного обучения, такие как scikit-learn, PyTorch, TensorFlow и т.д. Эти инструменты обязательны для того, чтобы начать заниматься машинным обучением всерьёз.

По мере развития потребуется обладание комплексной экспертизой как с точки зрения машинного обучения, так и с точки зрения разработки. Бизнес-заказчики будут требовать достижения амбициозных бизнес-показателей (продаж, новых клиентов, конверсий), но никто не будет знать, как именно этот результат получать. За поиском идей и механизмов воздействия на показатели, скорее всего, придут к опытному дата-сайентисту, от которого потребуется погрузиться к жизненный путь клиента с головой. Поэтому для специалиста также может быть важна предметная область компании.

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

— Давайте подведём итоги и ещё раз кратко опишем каждое из направлений.

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

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

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

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

Перейти к регистрации

Что думаете?