Белорусскому офису Яндекс больше года, но за все это время о минском подразделении мало что было известно. Чем оно занимается? Кто там работает? Что делает в рамках «большого» Яндекса? Все эти вопросы оставались без ответа. Dev.by решил исправить эту ситуацию: мы встретились с руководителем белорусского офиса Алексеем Сикорским, который без тайн и прикрас рассказал, как обстоят дела.
Офис в Минске не занимается локализацией
Белорусский офис Яндекса занимался и занимается исключительно производством. Сегодня у нас работают шестьдесят восемь человек, среди них разработчики, тестировщики, менеджеры, аналитики. С учетом принятых предложений о работе в сентябре нас будет уже семьдесят пять. В ближайшее время мы еще будем расширяться: наш новый офис займет около 2000 квадратных метров. Это будет офис навырост, думаю, на ближайшие три года.
Почему-то сложилось такое ошибочное мнение, что мы здесь занимаемся локализацией карт и переводом интерфейсов с русского на белорусский. Правда же в том, что офис в Минске не занимается локализацией. Когда вышел пресс-релиз об открытии белорусского подразделения, мы говорили, что будем заниматься разработкой поиска и карт. А потом как в анекдоте, каждый, кто прочитал анонс, додумал немножко своего, и оказалось, что мы здесь локализуем продукты «большого» Яндекса.
Проекты, над которыми мы работаем, относятся ко всему Яндексу. За все время нашей деятельности у нас был только один сотрудник, который имел прямое отношение к локализации продуктов: он занимался белорусской формулой ранжирования. Но потом мы поняли, что именно эту задачу лучше решать там, где разрабатывается основная часть поиска, в Москве. Ведь большинство алгоритмов едины для всех: будь то Беларусь, Тайвань или любой регион России. Просто есть региональные факторы, которые в большей или, наоборот, в меньшей степени влияют на ранжирование.
В Яндексе нет жесткого разделения разработок по регионам: не важно, где ты находишься физически, главное — над чем ты работаешь. Иерархическая структура компании представляет собой продуктовое дерево, которое никак не зависит от местоположения разработчиков. Например, разработчики из Москвы, Минска и Симферополя могут быть подключены к одному и тому же проекту.
Стартовали мы с поиска и карт, они же, с точки зрения объема, по-прежнему остаются лидирующими
Минский офис работает над несколькими продуктами, которые относятся к разным направлениям. Это поиск, карты, мобильные приложения, тестирование, автоматизация и, с недавних пор, — браузер. Стартовали мы с поиска и карт. Они же, с точки зрения объема, по-прежнему остаются лидирующими.
Поиском в Минске занимается несколько команд, которые решают разные задачи. Первая занимается факторами ранжирования, о которых я уже говорил. Вторая отвечает за анализ данных и API к нашему основному хранилищу данных. Третья — за технологии геопоиска.
Команда, отвечающая за факторы ранжирования для всего Яндекса, занимается проверкой состоятельности различных гипотез (факторов), которые могут повлиять на поисковую выдачу. Это очень интересный, наукоемкий R&D процесс, в основе которого лежит машинное обучение. Вторая команда работает над сервисом Sita, объединяющим возможности различных API контент-системы. Контент-система, или поисковый робот, обходит интернет в поисках веб-документов, обрабатывает их и хранит. Сервис Sita реализует различные сценарии работы с данными в этих хранилищах и предлагает единообразный интерфейс доступа к ним. Некоторые из сценариев, например, в рамках RichContent API, доступны и внешним разработчикам. Наконец, третья команда занимается поиском по географическим объектам. Пока в этой группе всего три человека.
В целом в Яндексе не особо принято распространяться о поиске. Не потому, что мы что-то скрываем, а из-за непростых отношений между поисковой машиной и оптимизаторами. Последние пытаются на основании информации о деталях работы системы ранжирования продвинуть не всегда объективно полезные пользователям сайты. Суть же технологии ранжирования в поиске иная — поставить как можно выше в поисковых результатах самые релевантные и полезные для пользователя ресурсы.
Белорусские разработчики Яндекс.Карт отвечают за целый ряд компонентов. Например, за общественный транспорт, за маршрутизацию электричек. Кроме этого, наши ребята принимали участие в создании довольно уникальной вещи — кратковременного прогноза пробок. Обычно ситуация на дорогах прогнозируется на основании статистики. Скажем, мы знаем, что несколько недель подряд по пятницам в 19:00 на такой-то улице пробки. Мы понимаем, что такая пробка, скорее всего, будет и в следующие пятницы по вечерам. Но существуют и другие обстоятельства, такие как ДТП, ремонт дороги или ее перекрытие. Как предсказать их влияние на затор? Мы разработали сложный алгоритм, который позволяет определить, как будет развиваться дорожная обстановка с учетом непредвиденных обстоятельств. Это действительно нетривиальная задача, и для ее решения задействовано множество источников информации, в том числе и сами пользователи, которые делятся с нами своими обезличенными треками, данными о перемещениях, скорости, векторе и пр. Мы собираем их, анализируем и отображаем на карте общую ситуацию на конкретном участке дороги. Но с пользователями тоже все не так просто. Например, как определить, что человек с телефоном сначала ехал в машине, а потом вышел и пошел пешком (то есть скорость его резко снизилась), при этом продолжая делиться треком? Или что он сначала быстро ехал, а потом припарковался, а не встал в пробке? Или что это велосипедист, едущий по тротуару, чья скорость не зависит от потока автомобилей? Мы все эти сценарии умеем достаточно точно вычислять и учитывать. Могу сказать, что адекватных аналогов нашей разработке нет.
У нас еще есть группа, отвечающая за мобильную разработку. В частности, она работает над Яндекс.Store — магазином приложений для Android, который уже запустился и сегодня полностью разрабатывается в Минске.Также мы пробуем взрастить команду для участия в разработке браузера. Есть еще целый ряд внутренних проектов. Так, например, в Минске работают над системой автосборки. В Яндексе создан огромный объем исходного кода, поэтому доступными на рынке системами автосборки мы не обходимся, приходится дорабатывать их самим.
Еще есть команда автоматизации тестирования и группа, которая работает над системой управления Яндекс.Каталогом и над системой анализа трафика.
Мне кажется, что для семидесяти человек это не так уж мало. В «большом» Яндексе уровнем белорусских специалистов довольны, поэтому не боятся делегировать нам неординарные продукты.
Обычно сотрудники сами выбирают главного
В Яндексе специфичная культура, которая немного отличается от той, что принята в других компаниях. Здесь существует такое понятие, как сквозное транслирование персональной ответственности. Это значит, что у каждого сотрудника в соответствии с его должностью есть вся власть и инструментарии для управления и решения задач. То есть, рычаги управления передаются сверху вниз, начиная с генерального директора. Например, руководитель подразделения формирует задачу перед руководителем группы и передает ему возможность самостоятельно принимать решения на счет того, кого премировать, кого повысить, кого уволить и с помощью каких технологий строить свою работу. Главное, действовать в рамках оговоренных условий и в интересах продукта.
Сквозное транслирование персональной ответственности работает и снизу вверх. В Яндексе не принято назначать руководителя волюнтаристским решением сверху, ведь команда может не признать такого руководителя, а это всегда ведет к демотивации. Быть руководителем без признания команды в Яндексе невозможно. Если разобраться, то в каждой группе так или иначе проявляется человек с наивысшим авторитетом. Обычно это высочайшего класса специалист, который на деле доказал правильность своих идей и решений и, как следствие, добился признания в коллективе. Такой «избранный» руководитель, как показывает практика, наиболее эффективен.
Вообще, у нас больше принято разговаривать и договариваться
Конечно, у такого подхода есть и обратная сторона — внедрить что-то новое и, казалось бы, полезное, не всегда получается быстро. Нужно добиваться и доказывать, приводить аргументы. Вообще, у нас больше принято разговаривать и договариваться, чем спускать и исполнять приказы. Но в любом случае, единого рецепта, который бы позволил легко строить распределенные команды, нет. Поэтому мы научились применять метод «проращивания» команд в регионах.
Чаще всего в компаниях проект строится так: кто-то формулирует проблему, затем оценивает возможные варианты ее решения, далее формулирует цели, и когда вся эта огромная работа проделана, набирает команду, которой все это можно передать для реализации. Но чаще всего, как только проблема описана, становится ясно, что чем раньше начнешь ее решать — тем лучше. А тратить время на поиск и найм команды, которую нужно с нуля во все посвящать, просто нерационально. Кроме того, почти все разработки Яндекса тесно интегрированы между собой. Поэтому просто нанять людей и сказать «делайте!» — нельзя.
В Яндексе проект начинают разрабатывать те, кто его сформулировал. Постепенно команда расширяется, если разработка доказывает потенциал, в него включаются новые люди из, например, регионального офиса. И как следствие по мере готовности проект полностью, без потери качества перетекает в удаленный офис. Это мы называем «проращиванием».
Минское подразделение мы тоже, можно сказать, «прорастили». Перед тем как открыть офис, компания хотела убедиться, что в Беларуси достаточно специалистов необходимой квалификации. Казалось бы, что сложного — могли бы сразу опубликовать вакансии и набрать людей, но мы все делали постепенно. Сначала технические специалисты из штаб-квартиры провели лекцию в БГУ, рассказали о том, как все устроено в Яндексе с технологической стороны. Интерес был довольно высоким — на лекцию пришло около 200 человек. Затем мы посмотрели на реакцию слушателей: нравятся ли им сложные задачи, требующие нелинейного мышления. Когда стало понятно, что реакция положительная, опубликовали вакансии. С теми, кто откликнулся, коллеги из головного офиса проводили предварительные интервью. И только когда все перспективы стали ясны, мы приняли решение об открытии офиса.
C учетом того, что в Яндексе работает пять тысяч человек, здесь можно найти все
Следуя нашему подходу, каждый руководитель самостоятельно принимает решение, как ему построить работу и достичь целей, которые перед ним поставлены. Если человек считает нужным воспользоваться каким-то фреймворком, если ему нужен какой-то необычный инструмент, платная утилита, поднимается вопрос, и обычно все, что нужно, покупается. С одной стороны это хорошо, но с другой получается некоторая разношерстность инструментов, так что мы пытаемся достичь какого-то баланса.
Если говорить про технологической стек, то в основном мы работаем на C++ и Python. На C++ у нас вся «хардкорная» часть. Карты и поиск делаются на C++, потому что это наиболее ресурсоемкие проекты, и, соответственно, сервисы должны быть максимально эффективными, ведь они работают на десятках тысяч серверов. А Python используется больше для вспомогательных функций, где производительность не так важна. Мобильная разработка — Android/Java, iOS/Objective C. Браузер тоже C++. Еще есть Java для прикладных сервисов в поиске, системы управления Яндекс.Каталогом и системы анализа трафика.
С учетом того, что в Яндексе работает пять тысяч человек, здесь можно найти почти все возможные инструменты.
Все права собственности на сервисы принадлежат московскому Яндексу. Головной офис отвечает за работоспособность, за размещение серверов и хранилищ данных, за их поддержку и управление. Для внутренних потребностей у минской команды есть свой сервер.
У нас можно прийти в двенадцать и уйти в два. Главное, чтобы работа была сделана
Хороших разработчиков мало. У нас как бывает: если прочитал книжку «C++ за 21 день» — сразу Junior, если написал код, который скомпилировался — прыгаешь на уровень Middle, а если этот код еще и запустился — уже Senior. А все ведь намного сложнее. У Яндекса в этом плане, можно сказать, завышенные требования к сотрудникам, хотя и не настолько, что к нам как-то архитрудно попасть.
Почему-то считается, что Яндекс охотится за участниками олимпиад. Это не совсем так. Просто жизнь показывает, что люди, которые с детства занимались решением нестандартных логических задач, активны по жизни, любят соревноваться, принимают вызовы, хотят должного применения своих знаний. Так получается, что в таких компаниях, как Яндекс, они как раз могут найти возможность самореализации. Уже знакомые подходы и алгоритмы можно применить для анализа огромного объема данных, более того, знания можно еще и приумножить. Нам подходят именно такие люди. Но для того чтобы работать в Яндексе, совсем не обязательно быть победителем или участником каких-то соревнований среди разработчиков. Хотя нам самим очень нравится дух открытого, честного состязания умов. Яндекс проводит или спонсирует целый ряд как внутренних, так и внешних конкурсов, чемпионатов и олимпиад для разработчиков, дизайнеров, менеджеров.
Когда к нам приходит человек, мы объясняем, что мы от него хотим, и даем все, что ему нужно для работы. Мы за более или менее свободный график, рабочее место — это ноутбук с док-станцией. Можно спокойно вечером бросить ноутбук в рюкзак и следующий день поработать дома, в этом ничего такого нет. Офис — это место для общения с командой, да и просто общения. Если человек работает над какой-то обособленной задачей, и ему необязательно в конкретный момент времени общаться с коллегами, можно остаться дома.
Многие компании заявляют, что у них свободный график. При этом надо, чтобы ты пришел не позже одиннадцати утра, а уйти можно не раньше семи вечера. У нас можно прийти в двенадцать и уйти в два. Главное, чтобы работа была сделана. Когда ты знаешь, чего ты хочешь, все становится намного проще: можно убрать все, что мешает.
А еще мы очень хорошо относимся к рекомендациям
Не всегда, но часто наши математические модели довольно сложны и требуют знаний, превышающих стандартную академическую программу. Поэтому еще два года назад мы запустили минскую Школу анализа данных Яндекса на базе БГУ. В нашу школу можно поступить и бесплатно осваивать основы машинного обучения, теорию алгоритмов, статистику и многое другое. В этом году мы набрали в ШАД около 30 человек на два года. Мне очень нравится программа школы, на нее потрачено немало сил, это не просто кружок любителей программирования, а нечто очень большое. Но стоит понимать, что это общеобразовательный проект: по окончании ШАД студенты не обязаны работать в Яндексе, а мы не гарантируем, что возьмем их на работу.
А еще мы очень хорошо относимся к рекомендациям, я объясню, почему. Все наши сотрудники знают специфику компании, задачи и требования к их выполнению, и если они кого-то советуют, значит, они осознают, что человек с большой долей вероятности вписывается в систему, что тот, кого порекомендуют, справится.
Во время встречи с dev.by Алексей Сикорский анонсировал предстоящий Яндекс.Субботник, который состоится 31 августа. Глава белорусского офиса пригласил всех желающих принять участие в мероприятии и узнать больше подробностей о тех проектах, над которыми работает компания.
Фотографии: Александр Васюкович
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.