Как тебя представить?
Видимо, инженер-исследователь. В договоре написано “инженер по разработке в отделе новых программных продуктов”. Есть еще работа, связанная с преподаванием, я ее тоже считаю для себя важной.
Чем разработчик-исследователь отличается от обычного разработчика?
Среднее количество строк кода, которое я пишу, сильно отличается от разработчика в меньшую сторону. А уж строчек кода, которые реально используются, и подавно. Бывает, что приходится много писать для постановки экспериментов, но все они оказваются неуспешными, или просто данные этих экспериментов включаются в анализ развития проекта, а сам код теряется. Основная оценка моей деятельности заключена не в мощности системы, которая разработана, а в улучшении какой-то метрики, качества ее работы, или в придумывании новой метрики.
Системы, для которых используются мои эксперементы, достаточно большие. Когда эксперимент проведен и понятно, что он двигает систему в нужную сторону — я становлюсь разработчиком. Пока непонятно — я исследую, и это не совсем похоже на разработку сложного продукта.
…это было прекрасное ощущение стартапа, когда ты крутишь большие болты, сам рисуешь схемы, и держишь в руках процесс создания.
Можно как-то обрисовать проект, или область, в которой ты работаешь?
Я работаю над глобальным поиском компании Гугл. Не российской локализации, а над разными аспектами общего поиска. Основное направление — машинное обучение, оно применяется в основном в глобальном поиске, но и на других участках в каком-то виде. Улучшение поиска — очень большой проект, кроме нашей команды, есть люди, которые занимаются получением новых сигналов, улучшением скорости обработки сайтов — много разных направлений.
Можно чуть углубиться в организацию команды, постановки задач — думаю, это всем будет интересно.
В разных местах реализовано все по-разному. У нас в команде порядка 20 человек, для Гугла это довольно много, большинство этих людей в Америке.
Это аджайл, ватерфолл, или нельзя такими категориями рассуждать?
Как раз на исследовательских проектах довольно сложно сказать определенно. Нету ТЗ, невозможно оценивать эффективность работы.
Как тебе задачи ставятся?
Как обычно в экспериментальных вещах. Есть достаточно опытные люди, которые могут посоветовать общее направление движения.
Есть два направления. Первое — это улучшение качества продукта. В большинстве случаев уже сформулированы метрики и общее направление заключается в ее улучшении. Бывают задачи ускорения алгоритмов, поиска новых сигналов, или наборот сокращение количества сигналов.
Задачей так же может быть опробование нового алгоритма или небольшая модификация существующего, чтение и обсуждение статей.
Получается похоже на научную работу .
Работа во многом похожа на научную деятельность в области машинного обучения. То есть иногда нужно написать экспериментальную версию кода, которая реализует алгоритм, и посмотреть результаты. Если эксперимент очень успешен, может потребоваться переписать алгоритм так, чтобы другие люди могли легко понимать и запускать код, оформить в виде инструмента. Это лично у меня получается хорошо, как и работа по оптимизации готового алгоритма, чтобы он работал быстрее.
То есть, в виде инструмента?
Превратить его в программу с интерфейсом, которую могут использовать люди, не обладающие глубоким пониманием этого алгоритма. Например, для поиска по почте, или по ответам — они тоже могут хотеть использовать машинное обучение, им надо показать, как это работает, объяснить какие-то аспекты, на первом этапе написать примеры использования. Система большая, инструментов много, мы их пишем и сопровождаем. Документация достаточно хорошая, но живая помощь всегда полезна.
Понятно, что у этого проекта границ нет, он будет длиться вечно.
Да, по крайней мере, еще очень долго.
Команда у вас распределенная?
Не очень распределенная. В Москве мало человек, остальные в Маунтин Вью.
Коротко — давно ли ты в Гугле, и чем занимался в Яндексе?
В Гугле я с февраля, в Яндексе занимался картографическими сервисами. Инфраструктурой для всех сервисов карт, а основным моим продуктовым проектом стали “Яндекс-Пробки”.
Там ты тоже был разработчиком, а не руководителем группы?
Да. Еще в Яндексе я был руководителем практики — это такая организационно-воспитательная деятельность. Студенты практиковались непосредственно в компании, получали очень небольшую зарплату, это было что-то типа пред-стажировки.
Чем Гугл оказался лучше?
Не могу сказать, что это так. После ВУЗа я искал работу вместе с аспирантурой, и в Москве выбирал между Гуглом и Яндексом, у меня была стажировка в Гугле, и я склонялся к нему. Но в то время Гугл не нанимал в Москву, и я пошел в Яндекс.
Там было достаточно хорошо, проект — Пробки — мы начинали делать фактически сначала. Был уже работающий сервис, но на выбранных технологиях реализации он плохо масштабировался и не справлялся с потребностями. Мы переделывали его заново, и это было прекрасное ощущение стартапа, когда ты крутишь большие болты, сам рисуешь схемы, и держишь в руках процесс создания.
Сколько вас было?
Начиналось с 3 человек, потом проект разрастался. Это общепринятая практика, чтобы процесс выбора первых технологий шел быстрее. Когда я уходил, было человек 15.
Прошла аспиратнура, и прошел Яндекс?
Эти события совпали, но между ними нет прямой связи.
В российской компании зачастую никому в голову не придет писать “какое замечательное изменение”, даже если ты искренне считаешь его замечательным.
Тогда снова — чем Гугл оказался лучше?
В какой-то момент прошла суперинтересная фаза быстрого роста проекта, и даже был период, когда делать было практически нечего. Закончилось понимание, куда именно двигать проект, команда простаивала. Мы провели глубокое исследование, как улучшить качество Пробок, но в команде не было достаточного количества людей с опытом исследовательской работы.
А как же ты?
Я был одним из самых опытных, это и не нравилось — виделось, что я не совсем хорошо понимаю как это делать, хотелось профессионально расти.
Понятно. В Гугле есть у кого учиться.
Да. Наш проект появился в Москве относительно недавно, довольно долго сюда отдавали преимущественно маленькие проекты, которые рассчитаны на 3-4 месяца, потому что это “периферийный” офис.
Если пытаться сравнивать атмосферу компаний — есть ли между ними разница?
Видимо, в Гугле гораздо лучше развита культура больших компаний. Гугл большая, и что важно, американская компания, и сама основа, на которой она построена, отличается от российских норм и реалий. Принято быть более вежливым, это буквально навязывается. Общаясь с американцами ты впитываешь их нормы, и должен им соответствовать. Для русского человека это иногда выглядит очень странно. Например, ты делаешь не очень большое изменение в коде, получаешь комментарий от коллеги “Вау, какое замечательное изменение! А еще у меня есть несколько замечаний по этому поводу…”. И штук 30 правок. В российской компании зачастую никому в голову не придет писать “какое замечательное изменение”, даже если ты искренне считаешь его замечательным. Не принято хвалить. А они пишут всегда, причем всегда по-разному,а не просто вставляют из шаблона. Иногда получив письмо приходится лезть в словарь чтобы понять — он там вообще хвалит или ругает тебя.
Это скорее американская культура. А культура большой организации?
В и в Гугле и в Яндексе стараются позитивно относиться к сотрудникам, и стремятся максимально огородить от бюрократической волокиты и любой непрофильной работы, которую могут сделать другие люди. В Гугле есть приятная практика офсайтов, когда распределенные команды свозят в одно место, где они отдыхают, общаются, и возможно, рассказывают про разные куски их общего проекта. В Гугле больше вещей формализовано — что может быть плюсом и минусом. Там достаточно формализован процесс продвижения по службе, а в Яндексе много зависит от отдела и менеджера. Кто-то постоянно продвигает своих людей, кто-то нет, у кого-то большой проект, у кого-то маленький. Еще в Гугле работник может достаточно свободно перемещается между проектами.
Это как? Захотел и перешел?
Фактически, да. Формальных ограничений нет. Естественно, на новом проекте тебя должны принять, а на старом могут попросить доделать какой-то участок работы. Но в целом подход компании ориентирован на то, чтобы любой человек мог заменить другого на проекте. Если в Яндексе у проекта может быть своя программная инфраструктура, атмосфера, принципы работы (например, процедура code review опциональна). В Гугле все организовано так, что человек, при переходе на новый проект легко заменяется на другого специалиста сопоставимого уровня.
То есть проект учить придется, но технологии, процедуры — нет. И компания достаточно часто идет навстречу пожеланиям работника.
Да. Если все эти переходы укладываются в бюджет, head count и т.д. Часто переход начинается с того, что ты на понравившемся тебе проекте начинаешь работать как “двадцатипроцентник”.
Те самые “20% времени которые работник может распределять по своему усмотрению”. Практика все еще жива?
Скорее да. Ты должен выбрать или инициировать проект, который укладывается в политику Гугла, получить одобрение на работу над ним.
На что уходят твои 20%?
Я работаю меньше года, а двадцатипроцентники обычно появляются чуть позже. До этого много времени уходит на вхождение в проект, компанию.
Эффективность оценки всего этого довольно сложная вещь даже для Гугла. Про такие проекты есть шутка: “Вы можете заниматься своими двадцатипроцентными проектами, но тогда вам придется работать 120% времени”.
У менеджеров есть аналогичная, и в большей степени реально работающая процедура “Coding Day”. Менеджер раз в неделю заранее помечает день, на который ему не ставят встречи и совещания, и посвещает его написанию кода. Чтобы бывшие программисты не теряли контакта с практикой. Часто в рамках этой практики пишут прототипы, потому что менеджеры хорошо понимают общую картину проекта.
Гугл шесть лет назад, когда ты стажировался, и сейчас — есть какие-то изменения в “мировоззрении” компании?
Компания стала гораздо больше, прибавилось бюрократии и формализации, что и плюс, и минус. Компания достаточно богатая, и стараются многие вещи упростить. Меня, например, впечатлило как решается вопрос замены всяких мелочей типа мышки. Стоит шкаф, где все эти мелочи лежат, и их можно свободно брать. И — приятная деталь — на каждой ячейке написано, сколько Гугл за это заплатил. Бери, пользуйся, но знай сколько это стоит. Компания считает, что не напрягать инженеров получается дешевле. То, о чем я говорил выше — что Гугл стремится унифицировать инфраструктуру проектов, максимально облегчая переход между проектами,также помогает удерживать людей. В Яндексе, когда я остался без проекта, с точки зрения вхождения было фактически одинаково — переходить на другой проект Яндекса, или в другую компанию.
Давай про преподавательскую деятельность поговорим.
Самое смешное, что эта деятельность относится именно к Яндексу, и после моего ухода никак не поменялась.
То есть работаешь ты в Гугле, а преподаешь в Яндексе.
Преподаю я в Физтехе. По инициативе трех московских компаний создан замечательный факультет Инноваций и Высоких Технологий. Яндекс, 1С и ABBYY его основали, и готовят там студентов, безусловно рассчитывая нанять их на работу.
Ты кандидат наук?
Да, 24 октября защитился, на кафедре анализа данных Яндекс.
Свежий кандидат. Зачем тебе преподавание?
Нравится. Во-первых, нравится учить людей, видеть их интерес и прогресс.
Хорошие студенты?
Я учу хороших. Беру студентов с первого курса, сразу на два года, читаю лекции у самой сильной трети потока, а у лучшей шестой части этой трети веду семинары по курсу “Алгоритмы и структуры данных”. Обычно это школьники уже с олимпиадным опытом, довольно сильно и очень специфично обученные. Алгоритмы сейчас в общем можно изучать и по книгам и интернету, и помимо этого я стараюсь перевести их из фазы олимпиадников в фазу программистов, это очень разные вещи.
В чем разница?
В основном в размерах решаемых задач. Олимпиада длится 5 часов, и никто в здравом уме не даст задачу, которую решить за это время физически невозможно. Могут на всякий случай дать задачу, которая решается за 10, чтобы какой-нибудь Гена Короткевич вдруг не решил все раньше срока. Но все равно это конечная задача, которую, даже если ты очень медленный, больше недели решать не надо (смеется). То есть конечная, определенная задача — это очень далеко от реальной научной и производственной деятельности. И чисто с психологической точки зрения сильно помогает знание, что эту же задачу как минимум 10 человек уже рeшили. Еще олимпиадный код очень недолговечен. Если ты решил задачу, ты больше никогда не вернешься к написанному коду. Не решил — может быть еще будет попытка решить ее на тренировке, но скорее всего и там написанный код не понадобится. Олимпиадников приходится переучивать в этом плане, еще они часто бывают максималистами, которые плохо вливаются в коллектив. Там ведь есть люди, которые привыкли размеренно работать 8 часов, после чего идти домой к детям, вместо того чтобы добивать задачу до двух ночи.
В общем мне нравится — факультет популярный, глаза у школьников горят, многие родители клюют на имена компаний.
Как вот так — устроиться в элитный ВУЗ прподавателем, да еще и там сливки собирать?
Я преподаванием занимаюсь очень давно — еще в 11 классе вел кружок для младших классов. С того же времени езжу в летнюю компьютерную школу, учу детей, знаю довольно много преподавателей и перенимаю их опыт. Наверное, дело в большом опыте, возможность еще какой-то талант, не знаю. Я разбираюсь в предмете и люблю его, и разделяю мнение, что обучение других это лучший способ разобраться в чем-то.
Ты инжнер-исследователь в Гугле и преподаватель на кафедре. Видишь ли ты какое-то профессиональное развитие для себя, или это положение — на долгие годы?
Не хочу выбирать ни одно из направлений. Не вижу себя чистым преподавателем, потому что сам хочу учиться, а в моем направлении учиться самостоятельно, в отрыве от практики и практикующих специалистов, практически невозможно. Если говорить про программиста, то там органичное развитие часто ведет к переходу в руководители. И для такого роста Яндекс гораздо более удобная площадка, стать руководителем в Гугле гораздо сложнее.
Культурный барьер?
Московский Яндекс гораздо быстрее растет, а в американском Гугле да, языковой и культурный барьер влияет. Интонации очень важны, без их глубокого понимания руководить трудно.
Вообще по опыту руководства практикой в Яндексе не могу сказать, что у меня это очень хорошо получается, и нет ощущения, что занявшись руководством вплотную сейчас я буду делать это достаточно хорошо. Конечно, можно учиться этому на практике, но мне пока рано, да и текущее положение устраивает.
Пойдем ко второму большому блоку. На твой взгляд, чем Саратов отличается от других городов?
Я же никогда не работал в Саратове, да и про другие города региональные знаю немного. Так что скажу только про образовательные моменты. На базе Саратовского Государственного Университета сделан чудесный центр Олимпиадной подготовки. Он достаточно известен, туда набирают порядка 35 человек в год — это много. Плюс все организовано достаточно хорошо. Скажем, такой “небольшой” ВУЗ как МГУ не выделяет своим олимпиадникам отдельного помещения для тренировок. В итоге для этого предоставил одну из своих переговорных Яндекс — как ни смешно. В МГУ нет свободной аудитории — для меня это шок.
В Саратове олимпиадная подготовка поставлена очень хорошо — с точки зрения и методологии обучения, и инфраструктуры. Я знаю, что и промышленное обучение развивается, и Мирантис с Епамом открыли отделение, где готовят специалистов под свой профиль.
Что ты считаешь своим основным достижением, яркой вехой?
В разные моменты своей жизни по-разному относишься к достижениям. Во втором классе я выиграл школьную олимпиаду по математике и очень этим гордился. Недавно вот женился, и на данный момент это основное мое достижение.
Поздравляю, это важно. А если говорить про айти?
Защита диссертации это тоже не про айти. Я достаточно хорошо отношусь к тому, что участвовал в олимпиадах и получал медали, но это все же дела минувшие.
Второе место у вас было?
Серебряная медаль. Место, кажется, было шестое. Сейчас для меня важнее более жизненные вещи. Например, что мы запустили “Яндекс-Пробки”, которые я делал от начала до конца. Важно что мои навыки высоко ценятся на текущем проекте. Например, умение программировать на С++ очень полезно, потому что на проекте много глубоких исследователей, а в этом я сильнее. В Яндексе я был скорее исследователем, а тут реализуются инженерные навыки.
За последние 15-20 лет, основны события в мировом айти?
Очень важным стало развитие облаков. Это и пользователям полезно, и люди, занятые в развитии облачных сервисов без куска хлеба не останутся.
Очень важно, что благодаря айти-технологиям в разы повысилась доступность информации. Для меня, как программиста новой формации дико, что люди для уточнения синтаксиса функции открывали книгу и листали ее.
Next Big Thing на твой взгляд?
Хочется сказать, что оно все в Очках (смеется).
Как человек, занятый в разработке элементов искуственного интеллекта могу сказать, что до создания системы, которая сможет соображать на одном уровне с человеком еще очень и очень далеко. Но кажется, что сейчас программисты и дизайнеры вносят громадный вклад в облегчение и автоматизацию повседневной жизни. Не знаю, как это будет выглядеть — очки, которые подсказывают ответ на заданный мысленно вопрос, или как-то иначе. Но это будет.
Что-то коротко для студентов и школьников — что нужно, чтобы добиваться успеха?
Не знаю, учиться, учиться и еще раз учиться? Сейчас очень востребованы ранообразные программисты, и есть соблазн ограничиваться малым. Молодой человек, узнав на самом деле очень немного, уже может устроиться на работу, реализовывать задачи и считать что выучил все, что надо. В принципе, такие люди в некоторых компаниях могут стать руководителями, и даже топ-менеджерами. Но правда в том, что чем меньше ты знаешь, тем менее интересные задачи ты способен решать. Я желаю учиться побольше, чтобы была возможность решать как можно более интересные задачи.