По моему субъективному счетчику, из айтишников, кто начинали и длительное время работали в Саратове, ты самый известный человек. Поэтому не буду спрашивать, кто ты.
Правильно понимаю, что олимпиады, Codeforces и все, c этим связанное, занимает больше 50% твоего времени?
Да, это так. Codeforces вырос из моего увлечения олимпиадным программированием.. Сначала я решал только технические задачи, работал с кодом и т.д. Если бы я мог планировать свое время и выбирать, чем заниматься, я бы и продолжал в этом же направлении. Когда я предоставлен сам себе, то всегда с удовольствием погружаюсь в разработку. Не выходить из состояния потока длительное время — это очень приятно и круто. Но в ежедневной практике так не получается.
Я имел в виду жизнь в целом — у тебя все посвящено этому. Ты либо пишешь, либо тренируешь команду, либо работаешь над Codeforces.
Да, так. Я профессионально этим занимаюсь — и в университете, и в свободное от него время. Стараюсь иногда отдыхать, но получается не всегда.
Codeforces — это какой-то прорыв в твоей жизни, или это просто сайд-проект, которым ты занимаешься, но он не главный?
Наверное, главный. Именно по нему меня больше всего знают в мире. Если до появления Codeforces мои труды были известны и полезны только в Саратове, то в процессе его разработки и поддержки моя работа стала затрагивать все большее количество людей по всему миру.
Когда ты начал серьезно заниматься олимпиадным программированием?
Класса с 9 я всерьез заинтересовался и понял, что этим интересно заниматься. На нашей параллели в ФТЛ учились очень умные ребята, и они участвовали в олимпиадах. Я в тот топ не прорывался, но всегда тянулся к этому — не хотелось даже перед самим собой казаться глупее, чем они. Я был уверен, что ничем не хуже — просто надо позаниматься, подкачаться, и все пойдет. Опять же, времена были другие — персональный компьютер появился у меня только на 1 курсе, и возможности отточить технику программирования не было. Но уже тогда стало понятно, что это клево — найти решение, сложить что-то типа головоломки и запрограммировать это решение.
И со временем эта сфера интересов определила всю твою жизнь. Что хорошего в олимпиадном программировании?
Я сфокусировался на нем после окончания университета потому, что являюсь евангелистом точки зрения, что это суперполезно для развития разработчика как специалиста. Огромное количество нужных знаний и навыков было получено, потому что в свое время случилось олимпиадное программирование. Пройди я мимо, уверен, многое бы в развитии потерял.
Ты такой продукт внутреннего потребления олимпиад получаешься — там состоялся и ими всю жизнь занимаешься.
Людей, которые прошли эту школу и добились успехов в промышленности, довольно много, я тут скорее исключение. Но должен же кто-то этим заниматься. В какой-то момент времени, еще со школы, стало трудно находить внутреннюю мотивацию заниматься тем, что мне не нравится — я буду оттягивать сроки, делать все очень медленно и плохо. Очень важно суметь в жизни устроить все таким образом, чтобы ты делал то, что тебе нравится. И вроде бы так и получается.
То есть складывать головоломки и сразу их реализовывать — полезно. Что-то еще?
В этом “полезно” очень много всего вложено — получается просто штамп, а что там внутри — просто так не рассмотришь. Это многогранно и круто. Многие, кто прошел эту школу, вынесли оттуда технику программирования, системное мышление, понимание алгоритмов и структур данных, получили первый опыт работы в команде. Просто научились думать над задачами, искать решения.
Стоит упомянуть, что мне очень нравятся люди, которые занимаются олимпиадным программированием. Они умные, целеустремленные, очень много думающие и работающие над собой. Конкретные результаты соревнований — кто какой титул выиграл — это просто удобные отметки для работы, они не главное.
Ты же тренер команды СГУ. У нас было интервью с Антониной Гавриловной, и она сильно сокрушалась, что средний уровень студентов сильно упал, все толковые едут в Москву и Питер, да и чемпионских достижений у нас давненько не было. Что ты думаешь по этому поводу? Не тратишь ли ты свои таланты зря, воспитывая не самых сильных олимпиадников?
C сентября этого года я переезжаю в Санкт-Петербург, в ИТМО. По большей части это не связано с качеством студентов. Времени на Центр олимпиадной подготовки и Codeforces уходит столько, что иногда просто некогда поспать. Я надеюсь, там у меня получится больше сконцентрироваться на развитии Codeforces. Спать по 6 часов на протяжении 10 лет тяжеловато.
Возвращаясь к вопросу. Топовые результаты — это (помимо большого этапа подготовки) следствие удачного стечения обстоятельств непосредственно на финальной части чемпионата мира, и, к сожалению, в последнее время нам слегка не везло, местами психологической подготовки не хватает. И надо признать нехватку студентов уровня Виталия Гольдштейна или команд Наташи Бондаренко, Артема Рахова — людей с таким потенциалом в СГУ приходит немного. Но это естественный процесс, связанный с идущей глобализацией. ЕГЭ — это глобализация. Она оттягивает лучших в топовые места, от этого не уйти. Тот исторический момент для олимпиадного движения Саратова был удачным — не начался ЕГЭ, меньше родителей были способны спокойно отпустить ребенка учиться в Москву, и так далее. При этом сказать, что они уезжают все — было бы неправдой. В конце концов, мы каждый год участвуем в финалах, привозим несколько дипломов с полуфиналов, побеждаем в четвертьфиналах. Определенную планку мы не понижаем. Да и принципиально неправильно судить о полезности Центра по топовым участникам. Под каждым из них есть десяток других человек, которые занимались, выступали и получили очень много полезного. Топовые участники — это только вершина айсберга.
Они же в топы откуда-то попали. Это не просто сказать: “Эй, 5 чемпионов, поехали выигрывать!” Они должны выступать в командах, расти и отбираться.
Органический рост КНиИТа позволяет нам из года в год набирать целеустремленных молодых людей, которые ставят перед собой высокие цели и упорно к ним идут.
Мне кажется, на КНиИТ в Саратове лучшие попадают, и он явно выделяется из остальных айтишных факультетов.
В общем, их хватает для того, чтобы Центр продолжал жить. От демографических колебаний и прочих факторов наполняемость меняется, но чтобы начался учебный год и к нам вдруг никто не пришел — мне кажется, такой опасности нет.
То есть кто-то, и даже известно кто, примет у тебя Центр, будет тренировать команды и ездить на чемпионаты. Хорошо.
Есть ли какие-то приемы и хитрости, как вы отбираете и готовите действительно сильные команды? Мне кажется, феномен чемпионского олимпиадного программирования не объясняется только тем фактом, что в Саратове была сильная математическая школа. Что еще? Из других центров российского айти так ярко все не стреляло.
Удачно сложилось, что были люди, которые продолжительное время во все это вкладывались и продолжают вкладываться. В первую очередь, это Федорова Антонина Гавриловна и Андреева Наталья Львовна, чьим именем назван Центр. В частности их энергией в свое время заразился я и также начал вносить свою лепту. Не нужны тут десятки людей, двух-трех энтузиастов может оказаться достаточно. К счастью, есть неравнодушные сотрудники СГУ, которые всегда помогают с проведением мероприятий, руководство СГУ поддерживает и содействует работе ЦОППа. Приятно, и это большая помощь, что наши выпускники участвуют в проведении Четвертьфинала.
То есть нет каких-то методических хитростей, есть просто упорство и работа ярких людей.
Методика вырастает из практики естественным образом. “Прям вот секретов” нет. Мы развешиваем по факультетам объявления, все желающие регистрируются и приходят. В прошлом году пришло 200 человек. Мы все идем в актовый зал, и я как могу жгу глаголом, чтобы их воодушевить и вдохновить. Дальше начинается обоюдная работа — лекции и задачи с моей стороны, интерес и работа над собой со стороны студентов. Не могу сказать, что многие готовы работать в таком режиме.
Сколько отсеивается?
Период “полураспада” — примерно 4-5 лекций. После них остается половина записавшихся, хотя мы стараемся читать интересные и полезные вещи с самого начала, не погружаясь в академические вопросы. Даем примеры, показываем как это относится к промышленной практике. Чем менее опытные студенты к тебе приходят, тем больше внимания приходится на это обращать.
Это интеллектуальный ценз, или люди просто не понимают, зачем они пришли?
Сложный вопрос. Мне кажется, большая часть оказывается просто не готова к тем требованиям и нагрузке, которые предъявляет олимпиадное программирование.
На первом курсе это одна лекция в неделю и домашнее задание, в котором от 10 до 20 задач. В зависимости от степени подготовки, на одну задачу они тратят от 0.5 до 2 часов. Чуть меньше 20 часов в неделю примерно. Так что, на мой взгляд, отсеивающимся не хватает только мотивации.
В сентябре приходит от 60 до 200 человек, и если через год останется десяток, то есть три команды — это неплохо. И что в итоге из них получится еще через год-два — вообще неизвестно, зависит от того, как они будут заниматься.
Я так понимаю, вы никого не отсеиваете? Получается, не получается, если хочешь — ходи.
В целом да. Может получиться, что на некоторые мероприятия у нас ограниченное количество мест. В летнюю школу, например, едут 7 команд. И мы, по итогам тренировок, составляем рейтинг, из которого приглашаем топ на эти тренировки. Если у тебя рейтинг низкий, то ты туда не поедешь, но возможность участвовать в четвертьфинале будет у всех. На практике же все, кто вкладывает усилия, в летнюю школу попадают.
Если брать этот аспект, вне Codeforces — что ты считаешь своим главным достижением в олимпиадах?
Конечно же, победу саратовской команды в финале 30 чемпионата мира по программированию в Техасе, в 2006. Я был тренером этой команды, и это самое яркое событие всего пути.
На жизненном пути у тебя была вилка — ты решаешь задачи и все получается, и после окончания вуза можно идти в промышленность и делать карьеру там, или остаться в олимпиадном движении и качать людей. Ты делал этот выбор?
Сначала я поработал тренером ЦОПП, женился, и было желание как-то поменять свою жизнь. И я пошел работать в Грид Дайнемикс, и менее двух лет в итоге там пробыл. По общему мнению, у меня скорее получалось, чем не получалось, не было каких-то проблем, но я перестал получать удовольствие от того, чем занимаюсь. Хорошо помню, что просыпался с утра и испытывал то же самое чувство, когда надо было идти в школу — лежишь и думаешь “может воду отключат в офисе…”. И если ее и правда отключали, можно было быстренько о чем-то посовещаться и идти заниматься своими делами. Получалось довольно много общаться с Викторией Лившиц, она тогда достаточно плотно погружалась даже в технические вопросы, и в какой-то момент пришло понимание, что я трачу свою жизнь на осуществление чужой мечты. Она придумала компанию, несколько стартапов внутри нее, развивает все это в определенную сторону — и я хочу так же.
Можешь рассказать, в чем была суть вашего проекта?
Не уверен. Это был SaaS, на данный момент проект заморожен.
К сожалению, попытки Гридов и Мирантиса захватить мир с помощью собственных продуктов не увенчались успехом.
Может быть, пока не увенчались. Просто статистика не на стороне этих компаний — на каждую успешную попытку сотни, а может и тысячи стартапов не достигают ничего. При этом надо понимать: то, что пытались сделать в Гридах, зачастую действительно было весьма инновационным. Не просто копирование успешной модели, и поэтому риски в разы больше.
Я должен спросить про деньги. Работая в Гридах, можно было очень прилично зарабатывать. Ты получил что-то сопоставимое, вернувшись в Центр, или это не так важно для тебя?
Университет поддержал мое желание работать над подготовкой олимпиадников, сделав мне надбавку. Абсолютно точно я мог бы получать в разы больше, сделав карьеру в промышленности, но предложенного оказалось достаточно, чтобы закрыть мои потребности.
То есть в Питере тебе будут платить за то, что ты занимаешься Codeforces?
Я буду и преподавать, но не очень много. А так да, я надеюсь, что работая в ИТМО, я смогу больше погрузиться в Codeforces.
Скажи, а преподавательская работа сильно отличается от олимпиадной подготовки? У тебя ужасная репутация тирана, который отчислял людей пачками.
К моему сожалению, видимо, студенты и правда так считают. В конце февраля на КНиИТ преподавателям выдают дипломы от студентов. И каждый раз хочется получить “Лучшего лектора”, или “Самого остроумного”, а мне из года в год дают “Всем хвостам голова” или “Самый страшный преподаватель”.
К вопросу — да, отличается, и сильно. В первую очередь, мотивацией студентов — даже если у нас такой набор, что студенты способны поднимать только не самый сложный материал, то, что они пришли на тренировку, меняет все. Их никто не заставлял, они сами взяли и пришли. Такого, чтобы человек пришел на тренировку и бездельничал, практически не бывает. И это позволяет уважительно относиться к студентам ЦОППа, потому что они проявили доверие к нам и чего-то хотят. Могли играть в футбол, смотреть сериалы, но пришли сюда, и моя задача — сделать так, чтобы с каждого занятия они вышли умнее и лучше. Такого эффекта с обычными занятиями не получается: явка обязательна, студенты ходят. На этом все. Доля людей, которые на лекции погружаются в материал и задают вопросы в обычной группе, драматически ниже, это видно.
С другой стороны, на практических занятиях моментально всплывают провалы в знаниях и подготовке, которые обязательны для того, чем мы на КНиИТ занимаемся. Когда в сентябре приходят студенты-третьекурсники, самое страшное испытание, которое им предстоит, это самостоятельная работа, которая состоится в декабре. Там дается 3-5 простейших задач на программирование, которые проверяют умение оперировать базовыми конструкциями языка. Примерно такие мы решали в 10 классе ФТЛ. С одной стороны, это вроде просто, с другой, я прикладываю определенные усилия, чтобы это была реально самостоятельная работа. То есть хожу и слежу, чтобы они не списали, потому что студенты хитрые, они спишут. Для студентов нами подготовлены сотни задач с автоматизированной проверкой. От элементарных до весьма содержательных. Сиди и решай. Все критерии самостоятельной работы известны студентам с сентября, никаких сюрпризов нет. Те, кто такие задачи решал, самостоятельную проходят легко, но примерно для половины третьекурсников задача уровня старшей школы становится серьезной проблемой.
Я всегда привожу такую аллегорию — представьте, что вы студенты филологического факультета, и я даю вам раннего Чехова. И вдруг выясняется, что вы читать не умеете. Вот что мне с вами делать? Вы красивые, глазами хлопаете, тесты при поступлении прошли все, но читать не умеете. Все, что я мог сделать — это дать строгие формальные критерии, которые отделяют умеющих и не умеющих читать, и в конце семестра на соответствие этим критериям вас проверить. И я готов проверять не раз и не два — до пяти доходит. Но если вы не научились читать, будет неправильно для факультета пропустить вас дальше и выдать диплом. Не может человек, не умеющий читать, получить диплом филологического факультета.
С такой проблемой сталкиваются во всех вузах, и большинство из них решают ее выдаванием диплома. Но это вне предмета нашей беседы. То есть преподавать тебе тоже нравится, но не так сильно, как решать задачи.
Сейчас я трачу довольно мало времени непосредственно на решение задач, с которыми мои ребята сталкиваются на соревнованиях. Просто в голове уже очень представительный набор задач и приемов, и их надо просто донести до ребят.
С другой стороны, достаточно часто под конкретную лекцию я придумываю задачу, которая более ярко подсвечивает и помогает понять материал.
Как придумывать хорошие задачи?
Есть несколько паттернов. Например, можно взять рядовую жизненную ситуацию, и как-то ее формализовать до решаемой задачи.
Например, есть абстрактный Максим, который хочет взять интервью у абстрактного Миши. Есть канал связи — и Максим иногда пишет: “Миша, что насчет интервью?”, есть некоторые правила, например, ночью или в выходные некрасиво писать, и другие параметры, которые надо прописать, чтобы сделать задачу решаемой. Надо придумать стратегию отправления сообщений, чтобы Миша таки пришел на интервью, и при этом не перегрузить его спамом. Ну вот это навскидку, прямо сейчас придумалось.
Другой источник задач — почитать статьи и журналы по computer science, найти там какие-то клевые идеи — как работают определенные структуры данных, например, или модель красивая. Эту идею упростить, обрезать, чтобы она решалась за ограниченное время — и отдать в контест.
Пойдем в Codeforces. Это платформа или социальная сеть, которая предназначена для создания и решения олимпиадных задач через интернет, так?
Я для себя выделяю три направления. С одной стороны, это социальная сеть, единая точка общения на олимпиадные темы, где люди обсуждают соревнования, спрашивают совета, делятся решениями. Пространство для общения.
Во-вторых, это место, где регулярно проходят соревнования по программированию. Люди пришли, поучаствовали, у них появился новый опыт, знания, предмет общения. Там же есть разные рейтинги, которые зависят от успешности выступлений.
И, наконец, третье, это подсистема, связанная с тренировочным процессом: задачи с прошедших этапов собраны в тренировки, можно создавать собственные тренировки, делиться ими, и т.д.
Когда появилась идея?
Году в 2007. С 2008 я методично начал работать над подготовительными шагами для того, чтобы запустить Codeforces. В 2010 году запустил платформу.
Эта платформа серьезно снижает затраты на то, чтобы собрать олимпиадную команду и начать тренироваться, так?
Мне кажется, большинство активных и уважаемых участников скажет, что основная заслуга Codeforces в том, что он собрал всех в одном месте. Вот как ты про SaratovIT говорил, что в Саратове много айтишников, они ходят друг мимо друга, и никак не общаются. Вот с олимпиадниками похоже было до Codeforces, и мы сразу ориентировались даже не на российский, а на мировой уровень.
И поскольку у вас предмет общения гораздо более узкий, на мировой уровень выйти проще. По открытым данным вы растете на 40% в год. Тренд продолжится?
Каждый год я ожидаю, что мы вот-вот выйдем на плато или даже стагнируем — непонятно, откуда все эти люди берутся. Но рост стабильный.
Откуда эти люди берутся?
За последние годы был сильный рост в Индии. В Саратове за последние 3 года ходить больше людей не стало.
“Сходи, порешай задачи на Codeforces” стало типовой рекомендацией даже не для олимпиадника, а просто для программиста, который думает над своим развитием, или готовится к интервью с работодателем. И это очень круто.
Это приятный сайд-эффект моей работы. Я искренне уверен, что если взять всех разработчиков ЭПАМ и направить их порешать задачи, то все они как-то подрастут. Например, повысится внимательность при написании кода, станут быстрее писать некоторые типовые операции, структурируется мышление.
Мне кажется, достаточно большое их количество к вам периодически похаживает.
На самом деле, довольно небольшое. Это как физкультура. Никто не будет спорить, что физкультура полезна. Но далеко не все ею занимаются. У тех, кто занимается серьезно, полезность этих занятий со временем падает. То есть если мы возьмем андроид-разработчика, увлекшегося решением задач на Codeforces, он через какое-то время перестанет получать навыки, полезные в повседневной работе — будет специализироваться на алгоритмах или структурах данных. Но если он вдруг решит пройти собеседование в Гугл, то будет бесконечно рад, что легко разбирается в задаваемых вопросах, потому что в свое время много решал олимпиадных задач.
8 лет вы с единомышленниками развиваете проект. Есть ли там интересная техническая работа по развитию проекта, или вы платформу написали, и теперь она готовая функционирует?
Очень много работы на самом деле, много приходится писать кода, решать нетривиальные задачи, и мне это очень нравится.
Сколько вас, людей, технически развивающих Codeforces?
В разные моменты было по-разному, но, наверное, человека три.
И еще очень много людей участвуют в административных активностях — организуют чемпионаты, пишут задания и т.д. Да?
Наиболее ценная часть Codeforces — это задачи. Они придумываются людьми со всего мира: автор приходит, делает задачи и соревнования, через какое-то время уходит. Моя задача сделать так, чтобы это был работающий процесс, чтобы интерес к нашей платформе конвертировался в постоянный поток пользовательского контента.
Вы как-то себя специально продвигаете в разных странах?
Скорее нет. В какой-то степени это достигается моими поездками. В этом году с удовольствием съездил в Индию. Встретился с их представителями, прочитал несколько лекций на базе университета Амрита. Но специализированного продвижения нет.
Codeforces приносит деньги?
Если бы не было другого источника денег, мне было бы достаточно сложно. Пунктом №1 для Codeforces является сообщество. И это видно буквально во всем. На первой странице — все для пользователей, и это принципиально. Сравнивая с похожими проектами, сразу видно разницу. Есть, например, HackerRank в США — тоже задачи, соревнования — и у них сразу есть лендинг для компании, которая хочет стать спонсором. То есть ориентация не на пользователя, а на того, кто может принести в проект деньги. Для меня важно, что получается развивать Codeforces и выходить примерно в 0, не снимая этого фокуса на пользователях.
Вы краудфандом собираете приличные, но не фантастические деньги, плюс еще какие-то спонсоры у вас наверняка есть?
Длительное время поддерживал ВКонтакте. Сейчас Telegram оказывает спонсорскую поддержку, и это очень много для нас значит.
Почему Павел Дуров вас поддержал?
Это довольно понятная история. Значительная часть высоконагруженной части ВКонтакте написана олимпиадниками, его братом и ближайшим окружением. Это ядро написано на чистом Си и поддерживается небольшой группой высококвалифицированных специалистов, почти все они медалисты чемпионатов. Так что для Павла полезность олимпиадного программирования была довольно очевидна. Андрей Лопатин также был тренером одной из санкт-петербургских команд и, видя развитие Codeforces, на одной из встреч предложил встретиться с Павлом чтобы поддержать проект.
Мы встретились, Павел задавал много предметных вопросов и довольно глубоко вник в то, чем я занимаюсь. Для него было важно принимать осознанное решение, и это было приятно. Когда получилось на позитивной ноте пообщаться — в общем все было решено. Никаких особых условий мне не ставили, подразумевая, что я лучше понимаю, что нужно проекту.
Я не отказываюсь от возможностей привлечь компании, но специально продажами не занимаюсь.
Скажи, пожалуйста, хоть ты и уезжаешь из Саратова — есть ли у тебя мысли, идеи, советы по организации пространства для саратовских айтишников? Надо ли это, решаема ли задача вообще, и как ты видишь Саратов в ряду других городов с точки зрения айти.
Проблема есть — много айтишников, много компаний, но пространства общего у них нет. Поэтому я с большим уважением и восхищением смотрю на то, что делает Хорохорин и Youcon. Я мало в этом участвовал, но видел, с каким интересом мои студенты ко всем их мероприятиям относятся. Это правильная точка приложения сил, у них все получается. Конкретные рекомендации дать трудно. Я думаю, это важно, чтобы компании участвовали в образовательном процессе. Надеюсь, такие инициативы будут только расти.
Я правильно понимаю, что саратовские айти-компании не спонсируют Центр Олимпиадной подготовки СГУ?
Неправильно. Мирантис, Эпам и Грид Дайнемикс постоянно выступают спонсорами наших поездок и мероприятий, и, поскольку мы не просим сверх необходимого, нам обычно идут навстречу.
И вообще, очень хорошо, что на факультете есть базовые кафедры компаний, и они сильно поддерживают КНиИТ. Это огромная заслуга Антонины Гавриловны, да и всего факультета.
Мне кажется, что модель работы базовых кафедр — мертворожденная. Туда ходят слабомотивированные промышленные специалисты и рассказывают что-то слабомотивированным студентам.
А чего это они маломотивированные, специалисты? У многих есть потребность поделиться знаниями, и если донести до них, что есть возможность пойти и что-то преподавать, многие согласятся. Просто не надо перегружаться, если вести один курс на 3 часа в неделю — это абсолютно подъемно. Может оказаться, что это не нагрузка, а возможность самовыразиться для тех, кому это интересно.
Тебе не хотелось сделать что-то свое — продукт, который завоюет мир?
У меня Codeforces как раз такой продукт и есть. Во-первых, я в процессе этой работы прохожу все стадии обычной разработки. Приходится заниматься широким спектром вопросов — от настройки линукс-серверов до, собственно, кода и решения вопросов преодоления пиковой нагрузки, когда в минуту начала соревнования все на сервер ломятся. А в промежутках надо подумать, как подписать договор с какой-нибудь американской компанией. То есть это мой стартап, и я там делаю все.
И глядя на то, сколько людей заходит на Codeforces, появляется ощущение, что я меняю мир к лучшему. У нас почти 750 000 регистраций и очень большое среднее время активности за одно посещение сайта. Постоянно приходится думать над улучшением портала, реализовывать свои идеи, которые оптимизируют процессы. Например, мы на каком-то этапе реализовали возможность подгружать на наш портал локально прошедшие соревнования и так делиться ими со всем миром.
Раньше для того, чтобы мне локально провести олимпиаду в СГУ, приходилось решать массу инфраструктурных вопросов — поднять сервисы, настроить сайтики и т.д. Не так давно мы в базовые возможности Codeforces ввели множество возможностей для локальных мероприятий — под своим брендом, в обезличенном интерфейсе — пожалуйста, делайте, это доступно широкому кругу участников. До меня это никто не делал, и это тоже меняет мир к лучшему.
С точки зрения чистой техники, компьютерных наук — какие области тебя интересуют, кажутся перспективными? Двигаешь ли ты как-то науку?
Нет, наукой как таковой я все же не занимаюсь. Как-то получилось, что во время моего обучения с научным сообществом тоже было не очень. В моем выдуманном мире во время научного семинара выступающий делает доклад, и в аудитории сидят заинтересованные люди и его внимательно выслушивают, вникают, задают умные вопросы. На практике получалось не совсем так, и меня это как-то не заинтересовало. Я хорошо разбираюсь в широком спектре фундаментальных алгоритмов, некоторых разделах дискретной математики и computer science. В программировании мне интересен широкий круг задач — от академических до прямо совсем прикладных.
Тут сходящиеся ограничения. Делая по-настоящему глубокий и нетривиальный доклад, ты сводишь аудиторию, способную его воспринять, к ничтожно малой величине. И на этой линии каждый сам выбирает баланс между интересностью и охватом аудитории.
Какие курсы ты читаешь?
Я много лет читал “Методы программирования” — курс, посвященный дискретной математике, алгоритмам и, собственно, программированию. В западной практике студент, изучающий компьютерные науки, не может пройти мимо изучения алгоритмов, и я счел, что и нашим студентам будет полезно в это в какой-то степени погрузиться.
В ИТМО,видимо, буду читать про веб-разработку.
А, то есть там есть кому читать про алгоритмы.
Да. А веб им читать неинтересно — вот я нишу и займу, потому что мне все интересно. Вообще, мне кажется что все, связанное с айти, интересно. Я с удовольствием решаю олимпиадные задачи. Или пишу на джаве достаточно серьезного уровня код, чтобы мой сайт работал, или настраиваю линукс-сервер. Появилось свободное время — могу скачать vue.js и сделать на нем прототип, чтобы попробовать что-то новое.
Что ты пишешь в состоянии потока?
Обычно я так решаю какие-то сложные задачи, связанные с развитием и поддержкой Codeforces. Надо какой-то участок переписать, или накопился технический долг — есть список отложенных задач, и я по нему периодически прохожу. Иногда в таком состоянии получалось работать по 18 часов и писать при этом сотни строк кода в час. Значительную часть кода перед запуском Codeforces я написал за месяц, работая по 12-16 часов в сутки. Написал несколько мегабайт кода.
Видел в фейсбуке похвалу тебе, как автору аналогии, что язык программирования — он как и обычный разговорный язык, и что если ты не можешь что-то сделать, значит ты недостаточно хорошо этот язык знаешь.
Я говорил это студенту из Египта, у него были проблемы с базовым уровнем понимания программирования, и этой аналогией я пытался пояснить, что программирование — это не какое-то сакральное знание, а просто набор приемов и команд, которые, если изучить их достаточно хорошо, позволят решать задачи с такой же легкостью, с какой ты выражаешь мысли на языке, на котором говоришь.
Хотя надо подчеркнуть, что даже беглое знание базовых конструкций языка — это еще не программирование. Разработчик постоянно принимает микроархитектурные решения и постоянно держит в голове задачу, которую хочет решить. Но мне нравится эта аналогия. Если ты не просто говоришь, а говоришь грамотно и способен написать связный текст, описывающий твой прошедший день. то ты делаешь примерно то же, что и программист в своей ежедневной работе. Потому что все же, в основном, программисты сталкиваются не с какими-то запредельно сложными задачами, много и простой рутины.
Безумным успехом для Codeforces было бы что?
Раунды проходят безупречно, аудитория продолжает агрессивно расти, мы получаем положительные фидбэки от сообщества — то есть, что это реально полезно людям. Исключительно важно, чтобы те навыки, которые получают участники сообщества Codeforces, конвертировались в реально полезные вещи.
А есть способы реально узнавать об этом?
Я слежу за выпускниками Центра олимпиадной подготовки и вижу, что в целом у них все хорошо в плане карьеры и заработков.
Есть люди, которые надолго задерживаются. Если говорить про обычных пользователей — по большей части это школьники старших классов и начинающие студенты, которые как-то пробуются в соревнованиях, читают статейки и учатся. Глубокого понимания, что это за аудитория — нет. Может быть, в перспективе мы сделаем анкетирование бывших участников, чтобы лучше понять, что с ними происходит. Периодически идут довольно яростные холивары на тему, нужно ли олимпиадное программирование вообще. Многие люди считают, что чем решать задачки, лучше потратить время на изучение спринга или других технологий. Неплохо бы в этой дискуссии поставить точку.
В ходе краудфандинга мы получаем много положительного фидбэка, люди говорят спасибо и добровольно жертвуют деньги. Значит, мы все делаем правильно, иначе они бы не пришли. И многие уже отошли от олимпиадных задач, но вспоминают нас с теплотой.
8 лет — это не очень большой срок. Мне кажется, ваши первые выпускники еще только входят в расцвет профессиональных способностей, и еще через 8 лет состав людей, которые вам благодарны, качественно поменяется.
Кроме опыта в Гридах ты пытался где-то работать за деньги?
Нет, пожалуй. Мне очень нравится, что работая над Codeforces я сам определяю, чем и как заниматься.
Складывается впечатление, что ты вообще доволен, как все в профессиональном плане у тебя поворачивается.
А почему бы мне не быть довольным? Павел Дуров в нашу встречу сказал: “Очень важно, чтобы ты просыпался и, принимая душ, уже думал, что и как нужно сделать в своем проекте. И тогда все будет развиваться и дышать. Это не гарантия, но важная часть успеха.”
Сейчас я каждый день с энтузиазмом смотрю на то, что мне предстоит сделать. Есть, конечно, рутина, всякая бумажная работа, но ее не так много.