Pull to refresh

Интервью с Ильей Сегаловичем (Яндекс)

Reading time13 min
Views6.4K
Не так давно мы собрали вопросы Илье Сегаловичу (iseg) – директору компании «Яндекс» по технологиям и разработке. Редакция Хабра выбрала самые интересные из вопросов, а Илья Сегалович на них ответил, да и как ответил!

Новые технологии появляются с завидной регулярностью. Успеваете ли Вы внедрять их, всегда ли стремитесь использовать новые технологии или же используете те, которые проверены временем?
Надеюсь, вопрос не про средства разработки ПО, а про технологии, используемые в интернет-сервисах. Мы живем по принципу «наименьших усилий с наибольшей отдачей». Как только мы видим, что «технологическое» (здесь это слово используется как противопоставленное «ручному») решение может оказаться полезным, пусть в самом первом приближении, мы стараемся дать его пользователю.

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

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

Мы часто и довольно нахально «вываливаем» на широкую публику то, что до нас никто (в наших масштабах) не делал: будь то полностью «автосклеивающая» адресная книга, или автоматические биографии в Новостях, или автоподбор ключевых слов на Директе.


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

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

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

Если говорить о внедрении, то схема этой работы примерно такова: создание тестов, отладка и настройка, решение интерфейсных вопросов, решение вопросов маркетинга, построение мониторинга, запуск.

Расскажите о том, какие новые технологические проблемы возникли перед вами за последние несколько лет и как вы с ними справились?
Раскажу только про одну проблему, которая остро встала перед нами весной 2006 года. Задача формулировалась просто: получить веб-поиск мирового класса по качеству ранжирования или умереть как технологической компании.

Мы смогли глубоко переписать поиск (run-time почти полностью), научились по-настоящему его обучать, научились наращивать качество поиска масштабированно. «Масштабированно» значит, что одновременно десятки и даже сотни людей могут работать над получением сигналов, а созданная технология позволяет их усилия эффективно объединять. Мы начали переход к новой технологии в самом начале 2007 года, но только с конца 2007 и весь 2008 пожинаем плоды от растущего качества.

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

Расскажите о том, что Яндекс еще не умеет делать, но очень бы хотелось?
Хочется уметь безупречно искать по всему мировому интернету. Хочется иметь качественную карту страны, с точностью до дома в любой деревне. Хочется много чего еще, над чем работаем, а не хочется того, над чем мы не работаем: надо же все-таки ограничивать себя в желаниях :-)

В яндексе есть отдел ИИ? Причем осуществляющий в том числе и фундаментальные исследования, а не только сиюминутные проекты?
Мы внутри Яндекса стараемся избегать неоднозначного и порядком дискредитированного термина «искусственный интеллект». Что только не называют ИИ, даже блок управления стиральной машиной. Зато в Яндексе есть отдел компьютерной лингвистики, есть группа извлечения фактов, есть группа ранжирования, по сути «машинного обучения ранжированию» (machine-learned ranking). Все эти группы реализуют на практике те алгоритмы, которые принято относить к области «искусственного интеллекта».

Что касается фундаментальных исследований: пожалуй, мы пока еще не доросли до финансирования решения проблем Гильберта или доказательства теоремы Ферма. Но наша отрасль не менее наукоемка и интересна, чем многие глубоко теоретические дисциплины.

Принёс ли 2008-й год какие-то новые технологии, которые вы сочли интересными и полезными?
Какие могут быть сомнения? Каждый год приносит что-то новое, в том числе и в технологиях. Я не профессиональный аналитик рынка, мои ощущения довольно субъективные, но тем не менее, попробую что-то назвать.

Если говорить про железо, то в 2008 году появились (точнее стали commodities) устройства, меняющие технологический ландшафт индустрии: (1) смартфоны и дешевые нетбуки с поддержкой wi-fi; (2) 16-ядерные сервера по цене 8-ядерных; (3) в Россию пришел iPhone с уникальными интерфейсными решениями. Новое «железо» создает «новое измерение» для «софта»: (1) резко растет интенсивность использования wi-fi, из-за этого меняются технологии определения местоположения пользователя; (2) процессорный ресурс сервера на качелях процессор-диск и даже процессор-память стал намного «легче», им теперь можно пользоваться гораздо интенсивнее, часто за счет памяти и диска; (3) мощный смартфон позволяет перенести существенную долю обработки сигнала на клиента.

В технологиях, которые используют массовые интернет-порталы, также было много новинок и изменений. Наконец-то повсеместно заработал долгожданный анализ изображения по содержанию: выделение лиц (Google, Яндекс), идентификация лиц (Google Picasa), нахождение нечетких дубликатов (Яндекс) или даже просто сходных изображений (Microsoft); первые версии поиска в вебе по OCR-текстам (Google). В анализе звука тоже сделаны первые важные шаги — заработала версия голосового поиска для iPhone (Google).

Много изменений в интерфейсах веб-поиска. Видна четкая тенденция к структурированию и структурному аннотированию результатов поиска: здесь самые заметные шаги пожалуй сделал Yahoo! со своим открытым и расширяемым SearchMonkey, запомнились и ярко себя показали «несписковые» интерфейсы поиска (Yahoo! India, Cuil, экспериментальный поиск Google в версии «Alternate views for search results»), Почти все поисковые системы начали прямо в выдаче давать проигрывать видео, а Yahoo! также дает прослушать музыку.

Хитом в 2008 году стала технология подсказок запроса по мере набора. Ей наконец обзавелись все поисковые системы и даже перевели на нее свой основной поисковый интерфейс. Версия Яндекса, в которой искомый сайт появляется по сути без поиска — на сегодня, пожалуй, самая смелая.

Поисковые системы в 2008 году обратили пристальное внимание на взаимодействие с вебмастерами: опубликован и поддержан всеми игроками Robot Exclusion Protocol (REP), в интерфейсах вебмастера во всех поисковых системах много улучшений и новых возможностей, почти все поисковые системы начали предупреждать о завирусованных сайтах.

В мире мобильных устройств основной прорыв 2008 года – это, пожалуй, внедрение комбинированного (по CellID и GPS) способа определения местоположения пользователя (Google, Яндекс).

Предупреждая возможные вопросы замечу, что хотя в России 2008 год стал годом социальных сетей, и несмотря на феноменальную популярность во всем мире таких ресурсов, как Facebook или Одноклассники, мне трудно отнести их успех к технологическому. Ну разве что мы говорим о «социальных технологиях». :-)

Какой подарок к этому новому году готовит Яндекс СЕОшникам? :D
Вебмастеров ждет много полезных средств для контроля за индексацией и показами сайта. А «избыточно оптимизированное» мы сможем, я надеюсь, еще точнее и лучше «пессимизировать».

Каково, на Ваш взгляд, будущее инструментов больших компаний? Что применяют внутри Яндекса при проектировании и написании: продукты, методологии, языки.
Отвечает Константин Коломеец (kolomeetz):
Если есть возможность собрать группу разработчиков вместе, «оффлайновые» инструменты для проектирования работают гораздо эффективнее любых других: доска и маркер, ручка и бумага. Однако «Яндекс» — большая компания, сотрудники разбросаны по нескольким офисам, при этом часто работают над одной задачей. Поэтому мы широко используем внутренние коммуникационные сервисы: wiki, списки рассылок и багтрекер. В рассылках (внутренних рассылок у нас больше, чем сотрудников) обсуждаем идеи и проблемы, в багтрекере фиксируем задачи и багрепорты, а wiki — клей для информации из разных источников. Это инструменты коммуникационные, общие для всех. А среду разработки и платформу каждая команда выбирает те, которые считает более целесообразными. Тут единого стандарта нет.

Отвечает Илья Сегалович (iseg):
Стоит отличать подготовку данных и run-time.

run-time, обслуживающий пользователей на портале, традиционно живет примерно так: поиск и баннерные системы — на C++ и Perl, остальные сервисы применяют также и Java и Python, в частности, из-за гибкой системы взаимодействия модулей, принятой на портале. (см презентацию highpower на РИТ 2007).

Подготовка данных — это в основном C++, плюс много скриптовых обвязок.

Браузер не собираетесь делать? ;)
Прямо сейчас — нет. :-)

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

Знаете ли вы Бобука? Слушаете ли радио-тэ? И как?
Знаю, еще бы не знать :) Радио-Т, к сожалению, пока не слушаю, ноутбук у меня без наушников, а приемлемое устройство для слушания подкастов (iPhone) приобрел относительно недавно. Сейчас сражаюсь с чудо-программой iTunes для Windows, когда победю, начну-таки слушать.

Согласны ли вы с подходом Питера Норвига — [утрированно] «что бы улучшить поиск, давайте будем использовать более простые алгоритмы на бОльших объемах данных?» У вас есть какая-то своя «технологическая философия?»
В целом согласен, однако с небольшой поправкой: мы все же стараемся найти баланс между подходом, отталкивающимся от экспертного знания и подходом, опирающимся исключительно на статистику больших объемов данных. По сути, мы постоянно ищем методы их скрещивания. Экспертное знание часто выступает в качестве затравки для алгоритма, и оно точно необходимо для оценки и настройки. Поэтому, в частности, у нас работают лингвисты, хотя их и немного.

Какие нововведения планируется ввести чтобы не проиграть войну с Google?
А какие нововведения планирует ввести Google, чтобы наконец уже выиграть войну с нами?

Каков примерный объем данных занимают все фотографии на яндекс.фотках?
Не знаю точно, сейчас спрошу :-)

Отвечает Роман Иванов (kukutz):
Фотографии на Яндекс.Фотках занимают почти сто терабайт.

Вы сами ищете через гугл или яндекс?
Простите, не понял вопрос. Как вы сказали? «ГУГЛ»? :-)

Какими гаджетами пользуется директор Yandex по R&D?
Смотря что считать гаджетом. Если гаджет — устройство с микропроцессором и сменным ПО, то из того, что я сам настраиваю при помощи апдейтов из интернета, то:
— ноутбук Fujitsu-Siemens Lifebook S-серии;
— смартфоны iPhone 3G и Nokia N82 (а до этого N73, 6681 и HP rx3715);
— wi-fi маршутизатор Linksys WAG325N (а до него WAG54G) для Стрим;
— портативный носитель программ чип-тюнинга PPC BSR для автомобиля.

Еще есть гаджеты, к которым не приходят апдейты: стиральная машина, ворота гаража, холодильник, кофеварка. Еще есть гаджеты у семьи — самые разные.

Используются ли у вас в разработке такие языки как Erlang, Haskell, lisp или другие функциональные? Если да, не могли бы Вы сказать в каких именно сферах?
Я лично не использую, но в Яндексе есть, например, проект на Erlang-е – это наш jabber-сервер. Еще немало программистов под UNIX живут в среде emacs, то есть так или иначе пользуются lisp-ом. Ну и наконец, XSLT — тоже функциональный язык, а он очень сильно распространен в Яндексе.

Планируется ли вводить что-то вроде Web2.0, как экспериментировал Гугль, чтобы пользователи голосовали за или против сайтов, поднимали или опускали рейтинг при определенных запросах?
Основной поток сигнала от пользователей мы собираем уже давно: это и посещение страниц, и переформулировки запросов, и переходы с поиска, и многое другое. Дать пользователю возможность сигнализировать по нужному ему запросу в активном режиме — идея довольно очевидная, вопросы тут скорее в качестве этого сигнала, его полезном объеме и в его устойчивости к накрутке. Пока мы не знаем, как ответить на них.

Какой вклад у Яндекса в Open Source?
Отвечает Илья Сегалович (iseg):
Пока небольшой, хочется, чтобы он был больше.

Отвечает Григорий Бакунов (bobuk):
Мы так или иначе поддерживаем почти все опенсорс проекты, которые используем. В частности lighttpd, ejabberd, libxml2/libxslt, omniorb, django, psi, qt и многие другие постоянно получают от нас багрепорты и патчи. У нас есть и собственные открытые проекты, например, компонент Чат для Я.Онлайн доступен и в исходных текстах. Подробнее про это можно узнать на сайте нашей экспериментальной площадки — nano.yandex.ru.

Есть и еще один аспект, которым мы активно помогаем открытым проектам — это наше зеркало с репозиториями открытых программ, mirror.yandex.ru. Большая часть пользователей Linux и FreeBSD в нашей стране, сама того не зная, скачивает пакеты своих ОС с наших серверов.

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

Что Вы можете сказать о молодых специалистах? Как изменяется общий > уровень людей, которые хотят попасть к вам за последние, скажем, три года?
В среднем, мне кажется, уровень растет, хотя это трудно почувствовать. У нас есть две разнаправленные тенденции: с одной стороны, компания сильно растет, и эра штучного набора, когда каждого разработчика принимали чуть не всей компанией, — давно закончилась. Весь 2007 и 2008 год мы много нанимали. И хотя про прием на работу в Яндекс пишут страшные саги о свирепых длинных собеседованиях, — а мы на самом деле принимаем все меры, чтобы входной уровень был максимальный, — такая скорость набора неизбежно приводит к некоторому снижению планки.

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

Кстати, нынешний кризис нас задел пока не настолько, чтобы мы отказались от набора, что видно по сайту company.yandex.ru/inside/job, — хотя и сосредоточились сейчас на поиске опытных высококлассных специалистов.

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

Выпускники отечественных эквивалентов факультетов computer science, как правило, не знают что такое SVM или language models.

Поэтому мы создали свое собственное учебное заведение, Школу Анализа Данных. Это магистратура на два года старших курсов, с занятиями по вечерам и стажировками в Яндексе. Два года подряд мы набираем туда примерно по 80 студентов. Часть учеников уже успешно работает в Яндексе, а преподаватели активно участвуют в наших исследованиях. Но и помимо ШАД у нас постоянно идут стажировки в департаменте разработки и в департаменте эксплуатации.

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

IT-специалистов какого плана вам не хватает (направления, возможно спецов по конкретным языкам)? Если лично вам (ну, кто же не хочет работать в Яндексе), хватает, то хотелось бы услышать как вы видите ситуацию на рынке в общем.
Про нехватку нужных нам специалистов я уже отвечал раньше.

Катастрофически не хватает системных администраторов с опытом администрирования крупных 24x7 систем. Очень мало людей, широко использующих в разработке ПО машинное обучение, будь то обработка текста, изображения, звука или анализ поведения гуманоидов (людей, роботов) или компьютерных систем. Мало специалистов по статистической обработке текстов или социальных графов. А вот с языками программирования как раз проблем почти нет.

Планируется ли исправить возвращаемый сервером заголовок, вызывающий в .Net protocol violation: In end-of-line code, use CRLF; using CR or LF alone is not allowed. А также ответы на POST запросы wow.ya.ru <wow.ya.ru>, которые не содержат 100-Continue, который используется для разделения заголовка и данных, пересылаемых в POST запросе?
PS: на стороне клиента приходится использовать настройки useUnsafeHeaderParsing=«true» и expect100Continue=«false»

Планируется. Спасибо, баг-репорт написал.

Какая операционная система и какой браузер (по-умолчанию) установлен на Вашем ноутбуке?
Windows XP со всеми service pack-ами, а также Firefox + Thunderbird (с тех еще лет, когда они так НЕ назывались). Когда писал сам, то сидел в консоли: простенький редактор joe, g++, gdb, gprof, awk, perl. Для Windows использовал MS Visual C++, а до него Borland (давно).

Планирует ли Яндекс, создание аналогичных (Google.Docs) сервисов?
Пока нет.

Почему забрасываются перспективные проекты? Например Яндекс.Лента.
Отчасти это грустная правда, не все проекты удается поддерживать в фазе активной разработки. Но мы Ленту все равно любим, недавно сделали ей PDA-версию с масштабированием картинок и правильной шириной экрана. Кстати, очень рекомендую, я ей сейчас пользуюсь даже больше, чем основной.

И да, мы планируем разные полезные изменения на этом сервисе.

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

Есть ли у разработчиков Яндекса приоритеты (философия), которых они должны придерживаться при написании ПО, например в порядке убывания, надежность, удобство (кода), расширяемость, производительность? Если есть, назовете?
Отвечает Анатолий Орлов (anatolix):
Расставить приоритеты на все случаи жизни невозможно. Например, есть проекты, где 10% увеличение быстродействия кода размером в 100 строк равняется нескольким миллионам долларов в «железе», а есть такие, где вместо того, чтобы загружать программиста на полгода, проще добавить еще 20-30 серверов. В целом мы хотим от программиста написания читаемого и поддерживаемого кода, достаточно эффективного, но без premature optimization. Хотим некого разумного баланса между «вообще не трогать чужой код, а свои решения прилепить сбоку» и «переписывать все, что видишь».

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

Отвечает Илья Сегалович (iseg):
Еще пара соображений на тему эстетики и стандартов кодирования:
— некрасивый, но работающий код всегда лучше красивого, но неработающего;
— требуйте от себя большей приверженности правилам, чем от других.

Что нового с технической точки зрения ждать пользователям Яндекса в новом 2009 году?
Год еще не наступил, надеюсь, что много интересного удастся показать и запустить. Посмотрим.

Почему так мало именно «программистских» штук-дрюк (фреймворки, библиотеки...) выходит наружу из стен Яндекса?
Приходите к нам, и «дрюк» выходить будет больше :-)
Tags:
Hubs:
+90
Comments37

Articles