Роман Халкечев, руководитель отдела аналитики в Яндекс.Еде и Лавке

Роман Халкечев, руководитель отдела аналитики в Яндекс.Еде и Лавке

Часть 1: о ШАД и начале карьеры.

👨‍💻 Герой: Роман Халкечев, 28 лет, Москва. Окончил бакалавриат в РУДН и совместную магистерскую программу ВШЭ и Школы анализа данных Яндекса.

🛠 Работа: Руководитель аналитики в Яндекс.Еде. Работает в офисе, 5/2. Обычно начинает в 10, заканчивает в 20.

🧭 Рынок: Руководитель отдела аналитики в Москве: 34 вакансии.

Школа анализа данных. Задача про подсказки

Я учился в РУДН на математическом факультете. На втором курсе заинтересовался биологией и позже узнал про направление биоинформатики в Школе анализа данных Яндекса. Я заинтересовался, начал готовиться и в 2012 году прошёл отбор.

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

Поисковые подсказки — это популярные варианты запросов, которые поисковик предлагает пользователю, когда тот что-то ищет. Например, забиваем в Яндексе «программирование» и он предлагает «программирование с нуля», «программирование на python» и так далее. Это нужно, чтобы сэкономить пользователю время или помочь сформулировать запрос.

Подсказки Яндекса формируются автоматически

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

Я две недели занимался этой задачей днями и вечерами. Программировал я тогда слабо, практики не хватало. Но в итоге смог написать подсказки на Java. Порой они очень медленно работали: вводишь символ и ждёшь потом секунд 10–11, пока загрузятся подсказки. Приходилось много оптимизировать.

Решение я отправил за пару дней до дедлайна. В ответ мне предложили подождать дедлайна, чтобы определить победителя, но сразу задали два вопроса: рассматриваю ли я стажировку в Яндексе и умею ли программировать на C++ и Питоне.

Я сделал домашнее задание, а в ответ получил такое письмо — «Не интересует ли вас стажировка в Яндексе?»

Первому вопросу я обрадовался, а вот со вторым было сложнее: ни на C++, ни на Питоне я не писал.

В тот же день купил книжку по C++, открыл её и написал, что «C++ изучаю, а про Питон много хорошего слышал». Мы договорились, что я досдам летнюю сессию и выйду с первого июля.

Вскоре факультет биоинформатики отделился от ШАДа, но мне так понравилось в Яндексе, что я решил остаться. К тому времени я выпустился из бакалавриата и решил пойти на совместную магистерскую программу ВШЭ и ШАДа на направление computer science.

Стажировка в Яндексе до того, как это стало мейнстримом

В июле 2013 года после задачи с подсказками я попал в Яндекс без единого собеседования. Сначала это разжигало во мне синдром самозванца — вокруг очень умные люди, кандидаты наук, и тут я с ними, мне всего 20 лет, опыта работы совсем нет.

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

Сейчас в Яндекс берут много стажёров, бывает по 800–1000 человек за лето. А тогда нас было всего 30. В конце мы все защищали стажировки: рассказывали, что сделали за три месяца. Это вроде проверки, после которой решали, кому предложить остаться, а кому нет. Я получил оффер от той же команды, где проходил стажировку, и был этому рад: задачи и руководитель мне нравились.

Путь до руководителя

Осенью началось обучение на совместной программе «Вышки» и ШАДа. Большая часть занятий проходила прямо в Яндексе: до 6 вечера я работал, а потом спускался на пары.

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

Я потихоньку рос. После стажировки стал младшим разработчиком, потом просто разработчиком, вроде мидл-1. Потом мидл-2 и через три с половиной года — старшим разработчиком. Со временем мне предложили стать руководителем группы — той же самой, куда я приходил.

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

Как работают подсказки

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

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

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

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

Если искать в Яндекс.Маркете айфон, подсказки предложат конкретные товары, популярные запросы и поиск по бренду Apple

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

Вам животное или спорткар?

Переход в «Такси»

В начале 2018 года мне написали из Яндекс.Такси. Там строили команду машинного обучения и дата-сайенса, нужен был руководитель.

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

Яндекс.Такси тогда был в процессе слияния с «Убером», и очень быстро рос, появлялись новые команды. Для меня это был вызов: до этого я руководил командой в 4–5 человек, а здесь — сразу 14.

Машинное обучение в «Такси»

У службы машинного обучения анализа данных в «Такси» две основные задачи.

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

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

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

Пример: машинное обучение помогает находить новые заказы

Раньше было так: если в определённом радиусе от точки вызова не было ни одного доступного таксиста, то приложение даже не начинало поиск, появлялось сообщение: «Нет свободных машин».

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

Ситуация быстро меняется: один водитель только что вышел на линию; другой — заехал на территорию поиска; третий — стал доступен для заказа по цепочке.

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

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

Пример: машинное обучение помогает общаться с клиентами и водителями

В поддержку постоянно пишут пользователи — с жалобами, вопросами или благодарностями. Сервис постоянно подключает новые города, и отсматривать все обращения вручную невозможно. Здесь помогает нейросеть, которая может определить, нужно ли срочно реагировать и, если да, подключает оператора. А иногда даже может сама ответить шаблонным сообщением, например, на отзыв о поездке.

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

Пример: фотоконтроль

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

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

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

Обложка:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Маша Климентьева

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
Как подготовить резюме для крупной компании?
Как подготовить резюме для крупной компании?

Инструкция новичкам от разработчика из Яндекс.Практикума.

easy
«Я не успеваю писать код, но участвую во всех важных обсуждениях». Как работает руководитель разработки Яндекс.Практикума
«Я не успеваю писать код, но участвую во всех важных обсуждениях». Как работает руководитель разработки Яндекс.Практикума

От первого сайта за 300$ до руководителя в Яндексе.

«Успешный программист не привязывается к языку. Он просто умеет программировать»
«Успешный программист не привязывается к языку. Он просто умеет программировать»

Давид Роганов о работе фронтенд-разработчика в Яндекс.Практикуме.

Что такое микросервисы
Что такое микросервисы

Разбиваем программу на сотни частей.

medium
Пишем и публикуем свою первую библиотеку для Python
Пишем и публикуем свою первую библиотеку для Python

Это несложно, но можно запутаться

hard
Облачный гейминг: что это и как работает
Облачный гейминг: что это и как работает

Как запустить новую игру на слабом железе (и кайфануть)

easy
Телеграм: разбираемся в ситуации как айтишники
Телеграм: разбираемся в ситуации как айтишники

Отвечаем на самые частые вопросы

easy
Как сложить два числа с помощью транзисторов
Как сложить два числа с помощью транзисторов

Продолжение легендарной саги.

hard
Задача про флешку и двух программистов
Задача про флешку и двух программистов

Очередная задача, которую можно попробовать решить в уме

medium