Data Science – область очень перспективная. За прошлый год мы в ЕРАМ получили 210 резюме от людей, которые хотят заниматься Data Science. Из них на техническое интервью мы пригласили 43 человека, а предложили работу семи. Если спрос большой, почему так?
Мы поговорили с техническими интервьюерами и выяснили: проблема многих кандидатов в том, что они плохо представляют, чем занимаются аналитики данных. Поэтому их знания и навыки не всегда релевантны для работы. Кто-то считает, что опыта работы с Big Data достаточно, чтобы работать в Data Science, кто-то уверен, что хватит просмотра нескольких курсов по машинному обучению, некоторые думают, что хорошо разбираться в алгоритмах необязательно.
Дмитрий Никитко и Михаил Камалов – аналитики данных и технические интервьюеры из ЕРАМ – рассказали, чего ждут на собеседованиях от кандидатов, какие вопросы задают, что ценится в резюме и как подготовиться к собеседованию.
В разных компаниях понимание того, что делают аналитики данных, разное. Кто-то понимает это понятие шире, кто-то – уже. Вот что делают такие специалисты в ЕРАМ:
Задач, с которыми работают аналитики данных, много. Например, ранжирование можно применять не только к поисковой выдаче, но и к созданию рекомендательных систем, поиску похожих картинок, музыки и даже 3D-модели лица. В каждом их этих случаев нужно найти релевантный ответ по запросу. Но типы данных различны, и нужно знать, какую стратегию применить в том или ином случае.
В ЕРАМ сделали тест, который рекрутеры присылают кандидатам до собеседования. Часть, где нужно выбрать верный вариант, проверяется автоматически. Часть, в которой содержатся развернутые ответы на вопросы, читают технические интервьюеры.
Если коротко, аналитик данных – это человек, который умеет программировать (в большинстве случаев на Python), разбирается в статистике, математике, алгоритмах и владеет английским.
Английский нужен не только для того, чтобы читать специализированную литературу и разбираться с документацией. Многие аналитики напрямую общаются с иностранными заказчиками. Кстати, здесь пригодится еще и умение переводить с языка дата-сайентиста на тот, что понятен бизнесу.
Важно хорошо знать математику, и высшее техническое образование – большой плюс. Большинство дата-сайентистов в ЕРАМ по образованию математики, программисты или физики. Но это не жесткое требование – у нас есть сотрудник-лингвист, а недавно мы взяли еще и социолога, который после окончания университета обрабатывал результаты социологических исследований, создавал модели, занимался прогнозированием и анализом социальных графов. Такой опыт – релевантный для работы в Data Science, поэтому кандидат был нам интересен.
В общем, нельзя сказать, что человек с техническим образованием нам подойдет, а с гуманитарным – нет. Все зависит от навыков и опыта. Например, компьютерный лингвист, который научился писать код, – более интересный кандидат, чем Big Data-инженер, работавший с MapReduce и Hadoop, но не разбирающийся в алгоритмах, или чем обладатель научной степени по статистике без опыта работы.
Больше всего ценится опыт работы. Если вы уже работали в Data Science, подробно напишите, что делали, какие алгоритмы использовали и какие навыки у вас есть.
Если у вас нет опыта работы, большим плюсом в резюме станет:
Цель собеседования по Data Science, как и везде, – понять, насколько хорошо человек разбирается в своей предметной области. Сначала интервьюер задает вопросы по основам машинного обучения и статистики. По ответам можно понять глубину и ширину знаний кандидата по базовым вопросам. После этого задают специфические вопросы, например, по обработке естественного языка, работе с временными рядами или рекомендательными системами. Если кандидат говорит, что умеет работать с графами, изображениями или другими данными, его спросят и об этом.
Универсальные солдаты встречаются крайне редко, и вопросы на собеседовании зависят от опыта кандидатов. Обычно спрашивают о прошлых проектах, о том, какие технологии они использовали и почему. После этого могут попросить порассуждать. И конечно зададут несколько теоретических вопросов.
Вот какие вопросы могут задать на собеседовании:
• Нейросети
— Какие методы предотвращения переобучения (регуляризации) для нейронных сетей вы знаете? Как они работают? Куда вставлять batch normalization?
— Чем отличается нейронная сеть с одним выходом и сигмоидальной функции активации и такая же нейронная сеть, но с двумя выходами и softmax?
— Представим, что у нас есть многослойная полносвязанная сеть с нелинейной функцией активации. Что будет с нейронной сетью, если мы уберём нелинейность?
— Для чего используют global pooling?
• Распознавание изображений
— Как оценивают качество в задачах object detection?
— Какие архитектуры нейронных сетей для семантической сегментации вы знаете?
— Как и зачем использовать transfer learning?
• Временные ряды
— Как правильно тестировать качество моделей в работе с временными рядами?
— Что мы должны делать с сезонностью в данных?
— Как искать аномалии во временных рядах?
• Обработка естественного языка
— Что лежит в основе моделирования тематик? Как работает этот алгоритм? Как вы выберете число тематик, которые будут обучаться этим алгоритмом?
— У вас есть текст отзывов и рейтинг, пользователи используют 5-балльную шкалу. Как бы вы построили систему, которая сможет предсказывать оценку по тексту отзыва? Как оценивать качество этой системы?
В ходе рассуждений и решения задач интервьюеры задают много уточняющих вопросов и пытаются поместить кандидата в «боевые условия». Наример, кандидат предлагает решение, а интервьюер добавляет новые условия к задаче.
«Что вы будете делать, если дата-сет несбалансированный?»
«Как вы будете решать проблему, если есть пропуски в данных?»
«Как поступите, если будут выбросы в данных?»
Помимо этого, могут спросить, как кандидат организует свое рабочее время, как логирует эксперименты, следит ли за их воспроизводимостью, как обрабатывает большие объемы данным и строит пайплайны обработки данных.
• Кандидат не понимает, как работают алгоритмы, которые он использовал
Интервьюеры всегда спрашивают об алгоритмах, которые использовали кандидаты: какие параметры в них есть, как их настроить. Если ответа нет, или кандидат отвечает, что настроил алгоритм «по наитию» – это плохо. Если вы берете алгоритм, стоит потратить время, чтобы понять, как его настроить.
• Кандидат не понимает, как применять свои знания в «боевых условиях»
Бывает так: кандидат хорошо знает теорию, но не представляет, как справляться с проблемами на проектах. Важно не только уметь находить инсайты в данных, делать фича-инжинеринг, строить модели, но и понимать, как поместить все это в продакшен или сделать решение, которое будет работать быстрее.
• Кандидат не может рассуждать самостоятельно
Если человек слишком часто отвечает на вопрос: «Я погуглю» – это нехороший знак. Конечно, дата-сайентисты гуглят, но уметь рассуждать самостоятельно тоже важно: иногда встречаются проблемы, для которых нет готового решения, и нужно придумывать что-то свое.
• Кандидат выдумывает, как работает система
Иногда люди не могут ответить на вопрос, как работает та или иная система, и начинают придумывать, надеясь попасть пальцем в небо. Так делать не рекомендуется: интервьюер это заметит. Лучше честно сказать: «Я не знаю», тогда останется больше времени на другие вопросы. Вероятность, что вас спросят о том, в чем разбираетесь, вырастет.
Всем, кто хочет заниматься Data Science, советуем посмотреть/прочитать:
• Курс «Программирование на Python» на Stepik
• Курс «Введение в машинное обучение» на Coursera
• Курс «Машинное обучение и анализ данных» на Coursera
• Курс «Машинное обучение» Константина Воронцова
• Курсы по deep learning на Coursera
• Курс «Нейронные сети» на Stepik
• Книга Deep Learning Book
• Книга «Глубокое обучение: погружение в мир нейронных сетей» – первая книга о глубоком обучении на русском языке
• Книга по NLP Speech and Language Processing
• Книга по информационному поиску и NLP «Introduction to Information Retrieval»
• Статьи на opendatascience
• Курс «Алгоритмы и структуры данных» Максима Бабенко
Мы поговорили с техническими интервьюерами и выяснили: проблема многих кандидатов в том, что они плохо представляют, чем занимаются аналитики данных. Поэтому их знания и навыки не всегда релевантны для работы. Кто-то считает, что опыта работы с Big Data достаточно, чтобы работать в Data Science, кто-то уверен, что хватит просмотра нескольких курсов по машинному обучению, некоторые думают, что хорошо разбираться в алгоритмах необязательно.
Дмитрий Никитко и Михаил Камалов – аналитики данных и технические интервьюеры из ЕРАМ – рассказали, чего ждут на собеседованиях от кандидатов, какие вопросы задают, что ценится в резюме и как подготовиться к собеседованию.
В разных компаниях понимание того, что делают аналитики данных, разное. Кто-то понимает это понятие шире, кто-то – уже. Вот что делают такие специалисты в ЕРАМ:
- Занимаются предобработкой данных
- Ищут закономерности в данных и проверяют гипотезы
- Создают предсказательные модели, используя алгоритмы машинного обучения
- Оценивают качество полученных моделей
- Визуализируют данные
- Помогают интегрировать решение
Задач, с которыми работают аналитики данных, много. Например, ранжирование можно применять не только к поисковой выдаче, но и к созданию рекомендательных систем, поиску похожих картинок, музыки и даже 3D-модели лица. В каждом их этих случаев нужно найти релевантный ответ по запросу. Но типы данных различны, и нужно знать, какую стратегию применить в том или ином случае.
В ЕРАМ сделали тест, который рекрутеры присылают кандидатам до собеседования. Часть, где нужно выбрать верный вариант, проверяется автоматически. Часть, в которой содержатся развернутые ответы на вопросы, читают технические интервьюеры.
Что нужно уметь
Если коротко, аналитик данных – это человек, который умеет программировать (в большинстве случаев на Python), разбирается в статистике, математике, алгоритмах и владеет английским.
Английский нужен не только для того, чтобы читать специализированную литературу и разбираться с документацией. Многие аналитики напрямую общаются с иностранными заказчиками. Кстати, здесь пригодится еще и умение переводить с языка дата-сайентиста на тот, что понятен бизнесу.
Обязательно ли профильное образование?
Важно хорошо знать математику, и высшее техническое образование – большой плюс. Большинство дата-сайентистов в ЕРАМ по образованию математики, программисты или физики. Но это не жесткое требование – у нас есть сотрудник-лингвист, а недавно мы взяли еще и социолога, который после окончания университета обрабатывал результаты социологических исследований, создавал модели, занимался прогнозированием и анализом социальных графов. Такой опыт – релевантный для работы в Data Science, поэтому кандидат был нам интересен.
В общем, нельзя сказать, что человек с техническим образованием нам подойдет, а с гуманитарным – нет. Все зависит от навыков и опыта. Например, компьютерный лингвист, который научился писать код, – более интересный кандидат, чем Big Data-инженер, работавший с MapReduce и Hadoop, но не разбирающийся в алгоритмах, или чем обладатель научной степени по статистике без опыта работы.
Что ценится в резюме
Больше всего ценится опыт работы. Если вы уже работали в Data Science, подробно напишите, что делали, какие алгоритмы использовали и какие навыки у вас есть.
Если у вас нет опыта работы, большим плюсом в резюме станет:
- Краткий рассказ о пет-проектах. Важно, чтобы кандидат не только знал теорию, но и успел попрактиковаться.
- Участие в хакатонах. Это говорит как минимум о том, что вы работали в команде и (скорее всего) создали работающее решение в ограниченный срок. Участие в хакатонах хорошо еще и тем, что на них вас могут заметить работодатели. Тогда отправлять резюме, возможно, вообще не потребуется.
- Участие в соревнованиях по машинному обучению (Kaggle, DrivenData). Если вы участвовали или даже победили в соревновании Instacart на Kaggle, где нужно было создать рекомендательную систему, вы сможете решить бизнес-задачу с похожими целями быстрее. Но, по нашему опыту, победа в таких соревнованиях не всегда значит, что кандидат знает, например, как работают алгоритмы, которые он использовал.
Что спрашивают на собеседовании
Цель собеседования по Data Science, как и везде, – понять, насколько хорошо человек разбирается в своей предметной области. Сначала интервьюер задает вопросы по основам машинного обучения и статистики. По ответам можно понять глубину и ширину знаний кандидата по базовым вопросам. После этого задают специфические вопросы, например, по обработке естественного языка, работе с временными рядами или рекомендательными системами. Если кандидат говорит, что умеет работать с графами, изображениями или другими данными, его спросят и об этом.
Универсальные солдаты встречаются крайне редко, и вопросы на собеседовании зависят от опыта кандидатов. Обычно спрашивают о прошлых проектах, о том, какие технологии они использовали и почему. После этого могут попросить порассуждать. И конечно зададут несколько теоретических вопросов.
Вот какие вопросы могут задать на собеседовании:
• Нейросети
— Какие методы предотвращения переобучения (регуляризации) для нейронных сетей вы знаете? Как они работают? Куда вставлять batch normalization?
— Чем отличается нейронная сеть с одним выходом и сигмоидальной функции активации и такая же нейронная сеть, но с двумя выходами и softmax?
— Представим, что у нас есть многослойная полносвязанная сеть с нелинейной функцией активации. Что будет с нейронной сетью, если мы уберём нелинейность?
— Для чего используют global pooling?
• Распознавание изображений
— Как оценивают качество в задачах object detection?
— Какие архитектуры нейронных сетей для семантической сегментации вы знаете?
— Как и зачем использовать transfer learning?
• Временные ряды
— Как правильно тестировать качество моделей в работе с временными рядами?
— Что мы должны делать с сезонностью в данных?
— Как искать аномалии во временных рядах?
• Обработка естественного языка
— Что лежит в основе моделирования тематик? Как работает этот алгоритм? Как вы выберете число тематик, которые будут обучаться этим алгоритмом?
— У вас есть текст отзывов и рейтинг, пользователи используют 5-балльную шкалу. Как бы вы построили систему, которая сможет предсказывать оценку по тексту отзыва? Как оценивать качество этой системы?
В ходе рассуждений и решения задач интервьюеры задают много уточняющих вопросов и пытаются поместить кандидата в «боевые условия». Наример, кандидат предлагает решение, а интервьюер добавляет новые условия к задаче.
«Что вы будете делать, если дата-сет несбалансированный?»
«Как вы будете решать проблему, если есть пропуски в данных?»
«Как поступите, если будут выбросы в данных?»
Помимо этого, могут спросить, как кандидат организует свое рабочее время, как логирует эксперименты, следит ли за их воспроизводимостью, как обрабатывает большие объемы данным и строит пайплайны обработки данных.
Типичные ошибки на собеседованиях
• Кандидат не понимает, как работают алгоритмы, которые он использовал
Интервьюеры всегда спрашивают об алгоритмах, которые использовали кандидаты: какие параметры в них есть, как их настроить. Если ответа нет, или кандидат отвечает, что настроил алгоритм «по наитию» – это плохо. Если вы берете алгоритм, стоит потратить время, чтобы понять, как его настроить.
• Кандидат не понимает, как применять свои знания в «боевых условиях»
Бывает так: кандидат хорошо знает теорию, но не представляет, как справляться с проблемами на проектах. Важно не только уметь находить инсайты в данных, делать фича-инжинеринг, строить модели, но и понимать, как поместить все это в продакшен или сделать решение, которое будет работать быстрее.
• Кандидат не может рассуждать самостоятельно
Если человек слишком часто отвечает на вопрос: «Я погуглю» – это нехороший знак. Конечно, дата-сайентисты гуглят, но уметь рассуждать самостоятельно тоже важно: иногда встречаются проблемы, для которых нет готового решения, и нужно придумывать что-то свое.
• Кандидат выдумывает, как работает система
Иногда люди не могут ответить на вопрос, как работает та или иная система, и начинают придумывать, надеясь попасть пальцем в небо. Так делать не рекомендуется: интервьюер это заметит. Лучше честно сказать: «Я не знаю», тогда останется больше времени на другие вопросы. Вероятность, что вас спросят о том, в чем разбираетесь, вырастет.
Список литературы
Всем, кто хочет заниматься Data Science, советуем посмотреть/прочитать:
• Курс «Программирование на Python» на Stepik
• Курс «Введение в машинное обучение» на Coursera
• Курс «Машинное обучение и анализ данных» на Coursera
• Курс «Машинное обучение» Константина Воронцова
• Курсы по deep learning на Coursera
• Курс «Нейронные сети» на Stepik
• Книга Deep Learning Book
• Книга «Глубокое обучение: погружение в мир нейронных сетей» – первая книга о глубоком обучении на русском языке
• Книга по NLP Speech and Language Processing
• Книга по информационному поиску и NLP «Introduction to Information Retrieval»
• Статьи на opendatascience
• Курс «Алгоритмы и структуры данных» Максима Бабенко
osipov_dv
EPAM, как раз вспомнилось адовое видео
dim2r
на рунглише уже песни поют :)
QtRoS
Прямо хочется процитировать Мэддисона — даже если мне приставят к голове пистолет, то я все равно не смогу объяснить, что сейчас увидел...
PMVyatkin
Спасибо, статья интересная и очень актуальная для многих!
Обязательно надо рекомендовать ее к распространению в ВУЗах, в которых готовятся будущие разработчики и аналитики.
Действительно круто, что у вас есть такие вакансии — когда я закончил математические методы в экономике и очень хотел работать аналитиком данных, увы, в моем городе нужны были скорее техписатели и консультанты по бизнес-процессам — именно туда и приходилось идти людям, которым была интересна аналитика.
Про степени и статистику — согласен, знаю кучу людей, со степенями (КТН и КФМН), которые защищались по релевантным темам, однако от разработки современного ПО они очень далеки, и не пройдут даже на джуниора.
В то же время, человек со степенью приходит в компанию с ожиданием признания его заслуг и быстрого карьерного роста, чего как правило не бывает, т.к. талантливый студент, отработав в компании три года совмещая такую работу с учебой, будет на голову выше любого кандидата наук без опыта работы в ИТ.
dim2r
Эпам занял допольно специфицескую нишу проектов. Очень много «кровавого энтерпрайза», от которого мозги перегружаются всякой ерундой.
masai
Marui
Как показывает практика, такие вопросы ничего не показывают. Либо спрашивайте сразу проекты показать рабочие с кодом, либо общие вопросы по computer science и software engineering. Большинство кандидатов будут пытаться подзубрить или погуглить соответствующие вопросы. Лучше брать перспективных джуниоров, чем зубрилок.
Синьер вам сам всё расскажет.
Джуниоров пытать на собеседованиях бессмысленно.