Евгений Чернов — один из самых удивительных людей, работающих в Поиске Mail.ru
Женя, как давно ты работаешь в поиске и чем ты занимался до Mail.ru?
Работаю в поиске с 2010 года, до Mail.ru работал фактически в одном месте — на базовой кафедре Института Системного Программирования в Физтехе.
Институт Системного Программирования?
Да-да. У меня и специальность называется «Системное Программирование». В Физтехе с третьего курса начинаются базовые кафедры, то есть работает человек непосредственно там, где пишет дипломы. С третьего курса начал работать там и 4 года проработал, а потом уже пошел в Mail.
А как складывалась твоя карьера здесь?
Во-первых, 9 лет назад поиск был немного другой, даже отделов не было. Поэтому занимался разными вещами одновременно: и инфраструктурой, и внутренней разработкой, и ранжированием. Потом, когда появилось разделение, оказался в отделе ранжирования, и мне дали группу обработки поведенческих данных. Был я и еще несколько человек. Потом, в 2014 году дали отдел анализа запросов.
Можно ли сказать, что с тебя начинался поиск Mail.ru?
Точно не с меня. Когда я пришел, уже многое было, хотя я не скажу точно, в каком конкретно году пошла активная разработка. Есть люди, которые работают здесь дольше и застали самое начало.
Помнишь такой поисковик Go-Go?
Я его не застал.
Ты управляешь разработкой саджестов, инфокарточек, фактов и быстрых ответов, специальных ответов на СЕРПе, опечаток, и наверняка я еще что-то забыла. Как тебе удается создавать и поддерживать свои продукты на конкурентном уровне?
Во-первых, они еще не на конкурентном уровне, по многим системам мы еще отстаем из-за нехватки людей. С другой стороны, мы стараемся делать конкурентные продукты, чтобы пользователю было удобней, даже в некоторых вещах чтобы это было лучше, чем у конкурентов.
Самое главное здесь — это команда, без них все это было бы невозможно. С одной стороны, мне повезло с людьми. С другой стороны, я прикладываю усилия к тому, чтобы мои люди росли и развивались.
Какая у тебя сейчас команда?
Сейчас она выросла до 12 человек (что довольно много), так как стали активно развивать поиск. До этого было 4-5 человек.
Что нужно уметь, чтобы работать у тебя?
Мы многого не требуем: базовые знания алгоритмов и устройства данных. Сейчас главное, что я смотрю на собеседовании — это насколько человек может рассуждать и решить задачу в стрессовой ситуации. Насколько он может в своих мыслях распутаться и написать осмысленный код.
Как правило, как человек ведет себя на собеседовании (уверенно/неуверенно решает задачи), в таком же стиле потом и работает. Есть корреляция — так и получается. У меня уже сложилась своя концепция, как можно определить, насколько человек в итоге успешно или неуспешно будет работать. Хотя ошибки тоже могут быть.
Какое напутствие ты бы дал молодым разработчикам, желающим добиться таких же выдающихся успехов?
Важно желание и трудолюбие. Из того, что я вижу, талант, конечно, важен, но это еще не все. Какие бы изначально ни были данные, люди своими стараниями и трудом, преодолевая все, добиваются гораздо большего. Но это не значит, что талант не нужен =).
Если более релевантными вещами заниматься — получить образование базовое, чтобы понимать, как компьютер устроен, какие алгоритмы бывают… такие вещи, которые должен знать каждый разработчик. А дальше развиваться. Есть много курсов, я вот в Техносфере веду.
То есть необязательно учиться программированию в институте?
Так как я сам этому учился, то я скептически отношусь к этому. Институтского образования без самостоятельной дополнительной работы не хватает. Хотя бы потому, что там как правило нет или мало реально работающих в профессии преподавателей.
Машина Тьюринга, конечно, важна, но преподавать только ее — этого недостаточно. Это далеко от актуальных задач, и в этом, наверное, основная проблема. Хотя, в Высшей Школе Экономики, я слышал, привлекают работающих преподавателей. Наверное, там можно обучиться. Но в целом это самообразование. Программирование — это очень широкая область, и надо понимать, где тебе интересней: высокие нагрузки и бэкенды, распределенная обработка данных, ML и нейронки. А есть еще мобильная разработка, верстка, ну и так далее.
Ну и практика важна. 10 лет получать образование без практики — это бесполезное занятие, что я и говорю своим студентам в Техносфере: вот вы сейчас учитесь, и это хорошо. Но еще лучше, если бы вы пошли стажироваться. Например, к нам в Mail.ru, получили бы реальную работу.
Обязательно ли в принципе для разработчика наличие высшего образования?
У меня такого требования нет. Тем более, что некоторые приходят еще с незаконченным высшим.
Может быть, скажешь, на какой язык программирования делать ставку?
Язык программирования — это всего лишь инструмент. Поэтому сказать, что нужно, чтобы человек знал какой-то конкретно язык, а без него по жизни никуда — это странно. Помимо языков программирования, есть еще множество технологий, которые нужно уметь использовать. И странно знать по жизни какой-то фиксированный набор и всю жизнь только им и заниматься. Важно, как раз, чтобы человек был способен изучить новые инструменты. Есть большие системы, есть более мелкие. Если он не умеет этого делать, это плохо.
А язык программирования важно знать хотя бы один, но желательно не какой-то, а скорее C++, потому что он более сложный, и больше нужно представлять себе устройство всего. Зная C++, остальные языки сильно проще даются (JAVA, Python и прочее). В этом смысле, если мы берем человека с опытом, то хотим, чтобы он знал C++, как правило. Это наши основные вакансии. Хотя для каких-то задач нужна JAVA, например.
Но и нельзя сказать, что если человек не знает Python или JAVA, то он по жизни пропадет. В любом случае, при необходимости он сможет изучить то, что понадобится для задач.
Soft skills важны для разработчика?
В целом зависит от того, куда человек хочет расти. Есть люди, которые некоммуникабельные, но очень классные программисты. У них свой путь, они меньше стремятся взаимодействовать с людьми. Но это не значит, что они меньше пользы приносят. Есть те, которые, наоборот, хотят развивать в себе лидерские качества. Это хорошо и полезно, потому что тимлиды, в принципе, дефицит. Поэтому любые качества помогают. Но главное качество — чтобы человек умел разрабатывать хороший код. Остальные его дополняют и помогают развиваться в какие-то разные стороны.
Какую профессию будешь рекомендовать своим детям?
Ребенку пока два года, поэтому я еще не думал об этом вопросе. Но скорее всего, как я сейчас предполагаю, что предлагать или заставлять, тем более, выбирать какую-то профессию я не буду. Мне хочется, чтобы ребенок сам выбрал, что ему интересно, а я ему обеспечу обучение и постараюсь дать бекграунд, чтобы человек мог где-то рисковать, пробовать себя в разных местах. Чтобы он не выбирал профессию, исходя из того, что ему не хватает на кусок хлеба.
Сначала планируется воспитать так, чтобы не было странностей, — правильные понятия о жизни заложить.
А сам ты кем хотел стать в детстве?
Не знаю, с какого момента детство начинается. Но точно помню, что сказал папе, что хочу стать программистом, он сказал, что нет, какой ты программист (наверное, он представлял себе каких-то хакеров, которые взламывают какие-то сети). В целом из разумного класса с пятого только программистом и предполагал быть, что-то на бэйсике писал. Когда выбирал институт, искал, где есть слово «компьютеры» или «информатика». Увидел Институт Системного Программирования, пошел туда на системное программирование, меня, правда, спросили на собеседовании, чем отличается системное программирование от обычного.
Можно сказать, что мечта детства сбылась?
Профессия совпадает с хобби — это очень хорошо. И это позволяет поддерживать работоспособность, это интересно.
Женя, вот ты сам менеджеришь весь цикл своих продуктов, включая постановку задачи, дизайн, верстку, метрики качества. При этом еще целыми днями ты на встречах. Наверное, ты знаешь какой-то секрет тайм-менеджмента.
Я бы сам хотел знать какой-то секрет! В целом, конечно, я читал какие-то книжки: и Архангельского, и какие в принципе методики есть. Даже всякие разные приложения пытался использовать, чтобы планировать задачи и приоритезировать их каким-то образом. Но лучше, чем листок бумаги, я ничего пока не нашел. Хотя, вероятно, просто надо лучше искать. У меня всегда есть ощущение, что я ничего не успеваю. Конечно, многие вещи надо делать, связанные с дизайном, версткой. Не то чтобы я сильно к этому стремился, это скорее от безысходности, потому что другой никто не сделает. Особенно раньше, когда людей было поменьше. Сейчас кто-то другой может помочь, а я могу сконцентрироваться на разработке, технической части. А так я не могу сказать, что я могу классно распределять свое время, скорее я только учусь.
Как тебе и твоей команде удается поддерживать работоспособность?
Для меня главная мотивация — интересные задачи. Пока интересно — легко работается. Я спрашиваю у ребят, что им могло бы быть интересно, нужно ли что-то поменять. У меня с ними регулярная обратная связь не только о работе, но и о личной жизни.
Над какими интересными вдохновляющими задачами ты работаешь сейчас?
Основная вещь, над которой мы сейчас работаем, — это ответная система. Она нужна и для поиска, и для нашего голосового ассистента, чтобы они отвечали на вопросы пользователей.
Система, или ее главное ядро, которое называется featured snippet, оно интересно тем, что это не стандартный поиск, в котором человек вводит текстовый запрос, и в ответе находятся документы, в которых есть совпадения со словами запроса. Здесь, когда ищется ответ, в нем, как правило, вообще может не быть слов запроса. Это в целом многое меняет. Поиск таких ответов, в тексте которых не содержится сам запрос, — это интересная отдельная задача.
Гугл уже давно развивает эту историю, Яндекс тоже. Мы тут в догоняющих, и у нас челендж — теми силами, которые у нас есть, сделать систему, которая будет конкурентноспособна.
Какой из своих типов деятельности больше всего любишь?
Команда у нас была маленькая, поэтому вынужденно приходилось выполнять разные роли. Изначально я был разработчиком, поэтому моя основная задача —разрабатывать системы. Раньше писал код сам, сейчас разрабатываю с помощью других людей. Хороший разработчик реализует все еще лучше, чем я себе в голове это представляю, а плохой, наоборот, испортит всю идею.
А сложнее всего что дается?
Это people management. Нанимать, общаться с людьми, фидбэк получать, объяснять что-то. Особенно если возникают проблемы личностные или с производительностью. Это некомфортно и сложно, и этому надо учиться. С другой стороны, где-то надо быть жестче и требовательней. Так как изначально я технический специалист, общение с людьми мне немного сложнее дается. Нужно развиваться в этом.
А вот как у тебя дела с work-life балансом, и как ты проводишь свободное время?
У меня жена и маленький ребенок, поэтому все свободное время в принципе провожу с ними. Я изначально ставил себе установку, что если ты не успеваешь и берешь работу на дом, значит, ты плохо работаешь, и что необходимо выделять время на семью. Я так и стараюсь поступать, хотя не всегда получается, потому что есть дедлайны и сроки, так что приходится и дома тоже работать. Но такая важная вещь — себе тоже надо уделять внимание и помогать жене.
Сколько у тебя неиспользованных дней отпуска?
Наверное, 60. Я не из тех, кто не ходит в отпуск (регулярно хожу!), просто давно работаю. Хотя у меня есть разработчики, которые не ходят. Для меня это, конечно, хорошо, потому что они работают. Для них, наверное, не очень хорошо))
Твой любимый вид спорта?
В футбол люблю играть и смотреть, в настольный теннис люблю играть, биатлон люблю смотреть.
Придерживаешься какой-либо диеты?
Нет.
Но ты не пьешь кофе
Я его не люблю…. Мы с женой стараемся смотреть на состав продуктов… пиццу с колой на ужин — такого обычно не едим. Но фанатично никакой концепции питания не придерживаюсь, могу себе позволить жареное, сладкое.
Какой твой любимый музыкальный исполнитель?
Мне со школы нравился русский рок. Поначалу я слушал ДДТ. Из современных это, наверное, группа Слот. Из иностранных это такие Nightwish, Metallica, 30 Seconds to Mars и т.д…. Наверное, это характерно для программистов.
Женя, спасибо большое! Это было очень интересно!
