«Я не чувствовал себя винтиком»: ярославский разработчик о том, как променял работу в Facebook на Flo

В Facebook Вадим Никулин работал над алгоритмом, который распознаёт педофилов и потенциальных самоубийц, но ушёл из корпорации в стартап. Почему — рассказывает dev.by.

«Я не чувствовал себя винтиком»: ярославский разработчик о том, как променял работу в Facebook на Flo

Вадим Никулин родился в Ярославле. В 2006 году окончил математический факультет Ярославского государственного университета по специальности «Прикладная математика и информатика». Участник олимпиад по программированию ACM ICPC, в 2006 году дошёл до финала.

На 2-м курсе начал работать в компании «Тензор». В 2009 году устроился в московский офис «Яндекса». Начинал как backend-разработчик, переключился на ML и Data Science. В «Яндексе» занимался финальной стадией поискового ранжирования — компонентом, который смешивает все материалы, релевантные запросу (новости, статьи, видео, картинки) и выдаёт пользователям в определённом порядке.

В 2016 году устроился в Microsoft и переехал в Лондон. Там в течение года занимался ранжированием поисковых подсказок в системе Bing. В 2017-м перешёл на позицию старший ML-разработчик в лондонский офис Facebook. А в 2021-м принят на позицию Data Science Lead в лондонский офис Flo.

Как всё начиналось

— Пока учился, я много участвовал в олимпиадах, даже съездил на финал ЧМ по программированию на первом курсе аспирантуры, и это определило мой карьерный путь. ACM ICPC (Association for Computing Machinery International Collegiate Programming Contest) спонсируют IBM, Google и другие большие компании. Если они тебя замечают, то дальше ты идёшь в этом направлении довольно просто.

Тогда я отправил резюме одновременно в Google и «Яндекс», «Яндекс» ответил довольно быстро, и я переехал в Москву. Там занимался сначала бэкендом, но в какой-то момент переключился на Machine Learning и так и остался в Data Science и ML-инженерии.

В «Яндексе» я занимался финальной стадией поискового ранжирования, в зоне моей ответственности был компонент, который смешивает ответы на запрос из всех источников — тексты, видео, картинки, новости, музыку — и выдаёт в определённом порядке.

Всё было хорошо: интересные задачи, классная команда, но мне хотелось чего-то более масштабного. Так в 2016 году я оказался в Лондоне.

Сначала я устроился в Microsoft. Там занимался ранжированием поисковых подсказок в системе Bing. А через год получил оффер из Facebook на позицию старшего ML-разработчика.

Легко ли было попасть в Facebook?

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

А вот на behavioral interview, где проверяются личностные качества и мотивация, могут быть сложности. У меня они тоже были, поэтому в Facebook попал только со второго раза.

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

Условно: в Яндексе мы «посидели вечером в кафе, побрейнштормили и через пару дней запилили протототип», а в западной компании фокус на процессах и проработке продукта.

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

В Facebook важна культура фидбека — то, как люди подстраиваются под других, как реагируют на замечания, как разрешают конфликты. Причём под конфликтами в FB и Яндексе понимают совершенно разное.

В FB конфликты касаются ресурсов, это про разные подходы к решению задач. Где-то нужно быть «более data-driven», то есть принимать решения на основе данных, где-то — убедить менеджера работать в таком-то направлении, где-то — мотивировать человека из другой команды.

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

Как кто-то кружку не помыл?

Ну, например. Или в лифте наступил на ногу. Это совсем другое.

Чем занимался в Facebook

Я стремился в Facebook, потому что всегда хотел работать в сфере защиты пользователей. В лондонском офисе компании два основных направления: реклама (увеличение кликов, монетизация) и защита пользователей от разных угроз — false news, скама, вымогательства и т. п.

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

Потом (в FB принято менять задачи, чтобы люди не засиживались на одном месте) мы занялись поиском людей, которые собираются совершить самоубийство — чтобы можно было вмешаться и предложить помощь.

Поиск потенциальных самоубийц и педофилов — автоматизированный, вы составляли алгоритмы?

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

Этот алгоритм работает только в англоязычном сегменте?

Нет, не только. Потому-то мне и хотелось перейти из Яндекса в Facebook, что масштаб задач там другой — написать не просто алгоритм, а такой, который будет эффективно работать во всех странах.

То есть этот алгоритм масштабируется на все языки сразу?

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

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

Насколько эта работа была интересной и эффективной?

Очень интересной.

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

Но с самими кейсами вы не сталкивались, просто отвечали за разработку?

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

Где ещё использовались такие алгоритмы?

Моей сферой были защита детей и суициды. А вообще команда занималась и другими направлениями — например, анти-скам или дезинформация: false news про вакцины или ковид.

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

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

Нельзя просто так взять и удалить fake news — общественность на это реагирует очень негативно: «раз удаляют, значит, им есть что скрывать по этому вопросу». Поэтому при публикации контента на определённые темы соцсеть автоматически добавляет ссылку на проверенные источники: например, в посте говорится про негативные последствия вакцинирования, а рядом — статья из медицинского журнала.

В Facebook огромный массив скам-рекламы, на которую соцсеть никак не реагирует.

Предположу, что просто не хватает ресурсов из-за ковида.

Это началось задолго до ковида: безымянные ролики о больных детях, призывы потестить «блокчейн-платформу Дурова». Обращения в службу поддержки не помогают.

Это зависит от рынка: на западных рынках у Facebook больше людей, там оперативнее реагируют на скам, а русскоязычному сегменту внимания меньше. Но ничего лучше, чем сообщать о таких постах, не придумаешь. Если наберётся критическая масса жалоб, они заметят и начнут бороться.

Как завлекала и переманивала Flo

Вас из Facebook во Flo переманивали? Или вы к тому времени уже сами созрели уйти?

Конечно, переманивали. Сначала было просто: давайте поговорим. Ну, давайте. Поговорили — я понял, что миссия мне очень интересна. Обсудили задачи. А вот когда дело дошло до оффера, было совсем непросто принимать решение.

Вы не были тогда в активном поиске?

Нет, я ничего не искал. Правда есть нюанс: в начале 2020 года я получил визу Global Talent, которая позволила мне работать в UK без привязки к конкретному работодателю. До этого для смены работы нужно было получать специальные разрешения. Визу мне дали, так как у меня есть несколько патентов в Яндексе, а ещё я соавтор нескольких научных статей и книги об олимпиадном программировании.

Получив Global Talent, я перестал зависеть от Facebook, и хотя планов на уход у меня тогда не было (виза просто облегчала получение ВНЖ), это ощущение свободы, видимо, подспудно повлияло: предложения стали потихоньку сыпаться, и вот одно я принял.

Почему променяли корпорацию на стартап? Надоело быть винтиком?

Нет, как раз наоборот: в Facebook появлялись очень интересные задачи, там был понятный рост на обозримое время — работать на кросс-тим, делать вклад в пару десятков команд, вырабатывать процессы и их масштабировать.

Я не чувствовал себя винтиком.

Но мне всегда хотелось поработать в стартапе, где меньше людей, проще атмосфера, можно запросто поговорить с СТО и внести значительный вклад в процессы. И ещё меня привлекал Health Tech — направление, в котором приносишь пользу людям. В общем, звёзды сошлись.

По зарплате Flo переплюнула Facebook?

Работа в стартапе — всегда risk reward: нужно балансировать между риском и вознаграждением.

В краткосрочной перспективе переход во Flo для меня скорее небольшой откат: тут очень достойная зарплата, просто в Facebook через год у меня скорее всего было бы больше. Но с учётом перспектив Flo — очень хороший выбор. Если удастся осуществить задуманное, сделать технологический скачок, то при выходе на IPO это будут совсем другие суммы.

Вы сменили Facebook на стартап в надежде поучаствовать в технологическом прорыве и IPO?

Здесь много всего сошлось: миссия, возможность прямо влиять на процессы. Ну, и перспектива IPO тоже привлекает.

Про технологический скачок во Flo, за которым маячит IPO

Расскажите о технологическом прорыве: чем вы занимаетесь во Flo?

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

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

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

То же самое — с работой по выявлению рисков заболевания. Обычно это долгий, по сути, научный процесс. Вот мы целенаправленно, шаг за шагом, работаем над поликистозом: собрали правильную выборку, сделали модель, валидировали её вместе с медиками. А завтра, допустим, хотим сделать эндометриоз. И что, шаг за шагом снова проходить всё заново?

В идеальном будущем мы создаём плэйбук, регламент, который позволяет «запускать новое заболевания в продакшн» не за год, а за три месяца.

«Я не чувствовал себя винтиком»: ярославский разработчик о том, как променял работу в Facebook на Flo

Как вы это делаете?

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

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

Это просто опросник? А где там большие данные?

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

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

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

У вас нет прямой обратной связи с пользователями, когда бы они давали живой фидбек об эффективности предсказаний?

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

Как вы убеждаетесь в точности предсказаний?

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

Как сейчас собираются и передаются данные с умных девайсов?

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

Есть ли проблемы в том, как правильно проанализировать и интерпретировать данные?

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

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

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

Flo давно работает с поликистозом. А какие ещё заболевания вы собираетесь предсказывать в обозримом будущем? Вы не случайно упомянули эндометриоз?

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

Эндометриоз — достаточно распространённое состояние, но в нашем роадмапе конкретных заболеваний пока нет. Сейчас мы фокусируемся на процессе, чтобы проходить путь от нуля до фичи, которую можно вывести в продакшн, за 3-4 месяца. Когда плейбук будет готов, можно будет выбирать самые частотные заболевания и работать с ними.

Именно поэтому первая история — поликистоз: так как минимум 10% женщин ему подвержены.

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

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

То есть болезни сердца предсказывать не будете?

Это не наш фокус. Планов на экспансию за пределами сегмента женского здоровья пока нет.

dev.by — сайт об информационных технологиях в Беларуси и в мире.

Статьи по теме:

5959
24 комментария

...В Facebook Вадим Никулин работал над алгоритмом, который распознаёт педофилов и потенциальных самоубийц, но ушёл из корпорации в стартап. Почему...
Почему?
Хм, почему педофилы с самоубийцами его не радовали.

6
Ответить

Комментарий недоступен

7
Ответить

PR статья. Flo не маленькая компания и работая там ты тоже винтик, приносящий прибыль хозам этой компании

4
Ответить

Вы сравниваете Flo, в которой работает 350 человек с Facebook, у которого 52 534 сотрудников и говорите, что это не маленькая компания?

3
Ответить

Тоже? Но ведь Вадим говорит, что в Facebook он НЕ чувствовал себя винтиком

Ответить

Интересно, что связывает педофилов и потенциальных самоубийц?

1
Ответить

Пишут, что методология работы над задачей. То есть алгоритмы, сбор данных, анализ, обучение нейронок и пр.

1
Ответить