Нужно ли Data Scientist'у становиться ML-инженером?

21 April 2018

Об этом рассказал Андрей Белов, руководитель команды подбора персонала Яндекса, на встрече Data&Science. По роду службы он сталкивается с людьми, которые позиционируют себя как аналитики, разработчики, и всё такое. И так оказывается, что если разработчик и аналитик - один и тот же человек, от этого все выигрывают.

Просто рандомный кодер из Интернета. Но, может быть, он ещё и аналитик, кто знает.
Просто рандомный кодер из Интернета. Но, может быть, он ещё и аналитик, кто знает.

Традиционная позиция - data scientist, он же аналитик. Другая позиция - МЛ-инженер. Это тот же самый аналитик, но он ещё умеет писать продакшн-код и хорошо шарит в алгоритмах. Для компании использование таких универсалов даёт рост эффективности - большее число задач можно покрыть с тем же бюджетом (важно для маленьких компаний), и кругозор сотрудников высок, а значит, они более вовлечённые (важно и для крупных тоже). 

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

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

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

Как можно прокачаться в разработке, если вы аналитик? Пойти учиться в ШАД или Курсеру, банально писать больше кода, и участвовать в соревнованиях - например, Яндекс.Алгоритм и ML-блиц. 

30 к 70 - соотношение вакансий по data science и ML-инженеров. Но очень часто умение писать код является зоной роста, и Яндексу (и вообще рынку) часто таких людей не хватает. При этом, например, в Управление машинного интеллекта и исследований Яндекса стараются набирать именно таких людей.  И продакшн-код, и дата сайнс стоит около 150-200 тысяч. Нанимая универсалов, компания вроде бы экономит. Но универсалы обычно стоят дороже чисто разработчиков. 

Q: Как дать людям понять, что разработка, как и аналитика - это тоже секси?

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

Q: Классическая схема - узкие специалисты, и над ними стоит тим лид, и вся ответственность на нём. А как распределяется ответственность в командах универсалов?

A: Если команда однородная, в ней тоже есть тим лид и тоже ответственность на нём, но данные и модели меньше гуляют между разными людьми. 

Q: Как классному разработчику стать ещё и классным аналитиком?

A: В первую очередь, просто практиковать - на эту тему есть куча курсов и тот же Кэггл. 

Другие доклады с того же мероприятия раскрыли смежные темы: