Подпишитесь на нашу ежедневную рассылку с новыми материалами

В Беларуси


Николай Щетько,

В этот понедельник на связи c IT.TUT.BY – Иван Метельский, многократный призер олимпиад по программированию и один из немногих в мире "профессиональный спортивный программист". Совсем недавно Иван занял второе место в престижном конкурсе Google Code Jam 2011.

Зачем люди тратят силы и время на участие в олимпиадах и конкурсах по программированию? Помогают ли олимпиадные навыки в работе программиста? Что думает один из опытнейших  спортивных программистов Беларуси о выступлениях наших школьных и студенческих команд? Как готовиться к выступлениям?

Все подробности – в нашем интервью:

Внимание! У вас отключен JavaScript, или установлена старая версия проигрывателя Adobe Flash Player. Загрузите последнюю версию флэш-проигрывателя.

Скачать аудио (16,56 МБ)

Внимание! У вас отключен JavaScript, или установлена старая версия проигрывателя Adobe Flash Player. Загрузите последнюю версию флэш-проигрывателя.

Скачать видео

– Расскажите про нынешний Google Code Jam. Сложно ли было? Какая была атмосфера?

– Сначала расскажу, что такое Code Jam. Было две фазы Code Jam. Google проводит его с 2001 года. До 2006 года они проводили его через TopCoder, а с 2008 года выпустили свой. В 2008 году было шикарное соревнование: на полуфинал звали 500 человек, всех возили в региональные офисы, в финале было сто человек в Mountаin View в Калифорнии. Тогда Code Jam провели с размахом. 
 
А потом наступил кризис, и, насколько я понимаю, с 2009 года соревнования стали более аскетичными. Если сравнивать с местами, где я был, та же Международная олимпиада по информатике или  студенческий финал проводится с размахом. Соревноваться надо два дня, а все мероприятие длится неделю.

А тут все простенько: приехали, на следующий день соревнование, и потом все разъезжаются. Официальный только один день. Соревнование получается сугубо деловое: все знают, чего хотят. Кто хочет, остается еще на пару дней, но это их личная инициатива. 
 
– Вы участвовали в Google Code Jam уже третий раз?

– Я участвую уже четвертый раз. В 2009 я прошел, но не получил визу. А именно в финале я был три раза. Задачи они замудрили очень сложные. Условия были одинаковые для всех, поэтому мне  показалось, что было даже легче, чем в 2008 году. Там у меня было восьмое место, и нужно было попотеть, я до последнего момента что-то писал, за пять минут до конца заработал баллы. А в этот раз практически все свои баллы я заработал за три часа, и в принципе, довольно неожиданно, что у меня второе место. Возможно, просто не стоило ничего мудрить. Я не знаю, почему так получилось, я даже несколько удивлен. 
 
– Вы готовились каким-то особым образом к этим соревнованиям? Или все было буднично?

– Мне уже бесполезно готовиться: у меня уже 15-летний опыт. К чему тут уже подготовишься за неделю, месяц?
 
– Кто участники подобных мероприятий: профессиональные спортивные программисты, просто люди, которым это нравится, или сотрудники крупных программистских компаний?  
 
– "Профессиональные спортивные программисты" – это термин, которого пока не существует. 

– А вы себя считаете профессиональным спортивным программистом? 
 
– Возможно, я единственный человек в мире, который может себя считать таковым. Но в целом зарабатывать на этом деньги нереально. 
 
– Есть мнение, что после таких конкурсов победителей отрывают с руками и ногами Google, IBM... Это правда? Где вы сейчас работаете? 

– Никто не "отрывает". В 2008 году они по крайней мере показали офис. В этом году они совершенно не агитировали: ребята приехали, поучаствовали и разъехались. Они ненавязчиво предложили пройти интервью. Собственно, я его прошел, но пока не знаю результатов. 
 
– Все-таки head-hunting работает?

– Конечно, цель таких соревнований – набирать людей. Но, в отличие от других, у них это происходит очень ненавязчиво. Складывается ощущение, что им совершенно не интересно, пойдете вы к ним или нет. 
 
– Где вы работаете как "профессиональный спортивный программист"?

– Есть такая компания – TopCoder. Помимо всего прочего они организуют соревнования по программированию, как мы его называем, спортивному. Регулярные соревнования называются SRМ (Single Round Match), и раз в год они проводят турнир TopCoder Open. Я занимаюсь координацией, фактически – я ответственный за подготовку заданий. Я их не пишу, мое дело – чтобы все было надлежащего качества. Но я не знаю больше таких мест. 
 
– С вашей точки зрения, как профессионала, насколько сложны были задачи на Google Code Jam, на недавней школьной олимпиаде по программированию и на последнем раунде студенческой олимпиады ACM? 

– Однозначно, в этот Code Jam они переборщили. У победителя 90 баллов из 200. Если бы это было на 6 или 8 часов, может, это было бы нормально. Но на 4 часа это нереально. На Code Jam традиционно очень интересные задания, неформатные, рассчитанные больше на мозги, чем на знания чего-либо. 
 
Честно говоря, задания последней Международной школьной олимпиады я не решал. Но там по баллам все видно. Мне совершенно не нравится эта тенденция. Очень хорошо, что выиграл Гена Короткевич. Вопросов нет: он на полголовы, если не на голову, всех выше и сильнее. 
 
– Если я не ошибаюсь, он выигрывает уже третий год подряд...
 
– Да. Дело в том, что в первом туре 23 человека полностью решили набор задач. Это явно слишком легко. Во втором туре все боялись, что повторится то же самое. Тогда бы получилось, что нет четкого победителя: много людей решило все задачи. Гена за 2,5 часа решил абсолютно все. А рассчитано все было на 5 часов. Если Гена сделал это за такое время, значит, кто-то должен сделать это за 5 часов. Но в итоге не сделал никто. Но сама тенденция несколько пугает. 
 
На Code Jam я говорил с одним из организаторов. Он объяснял это тем, что цель олимпиады  – поддерживать талантливых школьников, развивать computer science, а сами топовые результаты их не интересуют. К примеру, они выделяют 12 лучших, а первое, второе или третье место они уже не выделяют. Не могу сказать, что мне симпатична эта тенденция. Думаю, раз это олимпиада, это все-таки спорт, а любому спорту нужны звезды. Если у соревнования 30 победителей – это не дело. 
 
– Приятно, что одна из звезд программирования сейчас живет в Беларуси – Геннадий Короткевич. Я надеюсь, что мы с ним еще пообщаемся в эфире. Вот он, гомельская, мозырьская школы на слуху. Что с остальной страной? Почему буксует Минск? Как сторонний наблюдатель, я замечаю успехи школьников из южных регионов Беларуси, в то  время как остальные результаты – слабее. Это оправданная оценка?

– Оценка вполне оправдана. Причина простая: не потому, что у гомельских или мозырьских школьников другие гены, или в целом там сосредоточены таланты. Хорошо выступают те, с кем хоть как-то работают. При этом  я даже не говорю об обучении. Традиционна ситуация, когда преподаватели знают намного меньше, чем сами дети. Я не уверен насчет Мозыря, но в Гомеле это однозначно так. В Мозыре я не был, эти успехи у них недавние, им всего три-четыре года. В Гомеле школьников привлекают в воскресные олимпиады. Они варятся в собственном соку, но работают. Гену Короткевича не стоит считать продуктом гомельской школы. Думаю, он талантлив сам по себе, и большое дело сделали его родители. Он занимается этим со второго класса. 
 
– И в рейтинге TopCoder он уже очень давно, насколько я знаю...

– В TopCoder нельзя участвовать до 13 лет, а он участвует с 12, если не 11 лет. Был школьный турнир, он прошел в финал, и тогда выяснилось, что ему 13 лет. Все знали, но умалчивали. А когда стало известно официально, его решили забанить. 
 
В мозырьской школе доходит до смешного: там какой-то клуб юных пожарников, на базе которого они показывают эти результаты. Там, где работают, есть результат. Видимо, в Минске не работают. 

– Что вы можете сказать по поводу потенциала белорусских спортивных программистов? Кроме Геннадия Короткевича, каких молодых перспективных программистов вы могли бы выделить?

– Школьников я не мониторю. Но на фоне Гены никто не смотрится, там даже близко нет никого его уровня. Гена – это мировая звезда. Среди студентов – Роман Удовиченко. В последнее время он набрал очень хорошие показатели. Сейчас он прошел на ТopCoder Open и попал в 24 лучших в мире. В конце сентября будет финал, надеюсь, он получит визу и сможет поехать. Он очень перспективный, но не понятно, продолжит ли он этим заниматься. Очень много достаточно сильных людей, но особых звезд я выделить не могу. 
 
– Уже который год белорусы показывают не слишком хорошие результаты на студенческой олимпиаде ACM/ICPC. С чем это связано? Чего не хватает: таланта, умения, подготовки? Может быть, люди стремятся зарабатывать деньги в компаниях, а не готовиться к соревнованиям?

– Это специфическая отрасль, но деньги стремятся зарабатывать везде, не только у нас. 

– Но во времена, когда участвовали вы, у нас были золотые медали...

– Золотая медаль была всего одна. 

– Но теперь уже нет ничего, и так уже несколько лет подряд. Или я ошибаюсь?

– На самом деле, вы немного ошибаетесь. По-моему, в 2008 году у наших была бронза. 

– Это было три года назад.

– А почему у нас регулярно должны быть медали? Страна маленькая…

– … Геннадий в университете еще не учится.

– Действительно, и еще вопрос, в каком университете он будет учиться. Конечно, если Геннадий будет в БГУ, там без вопросов будет две медали за два года – больше, чем два раза на финал ездить нельзя. Я не буду говорить, золотые это будут медали или нет, как знать.

Даже Петр Митричев, легенда в спортивном программировании, ни разу не смог выиграть финал: у него два вторых места. А так результаты такие, какими должны быть. Я не вижу никакого провала. То, что БГУ регулярно выходит в финал, это уже дорогого стоит. На самом деле, на постсоветском пространстве таких вузов, которые регулярно выходят в финал, пять – СПбГУ, СПбГУ ИТМО, МГУ, Саратов, возможно, еще Уральский университет. И БГУ наравне с ними. 
 
– Но всегда хочется больше, всегда хочется медалей. 

– Больше – сложно. Если ты не гений, то медаль – это результат везения. Ребята сильные, они работают, но гениев я не наблюдаю. Возможно, нашим ребятам немного не хватает везения. Зачастую одна задача может решить кучу мест. В прошедшие годы тоже были ситуации, когда если бы они что-то одно сдали, у них была бы медаль. Медаль на финале – это не то же самое, что медаль у школьников. Школьники каждый год ездят с медалями. У них 400 участников и 200 медалей. А на финале – 100 команд и 12 медалей. У нас не тот уровень, чтобы регулярно попадать в финал. 
 
– Кто сейчас на мировой арене задает тон: Китай, Америка, Польша?      

– Российские команды регулярно берут медали. Поляки в целом очень сильны, но там специфические правила отбора. К примеру, российских команд – 12, а польских обычно 3. На этом фоне они теряются, хотя за последние 10 лет два финала выиграли поляки. Китай традиционно сильный, за последнее время он тоже выиграл несколько финалов. Украинцы очень хороши, по крайней мере, существенно сильнее, чем раньше. Бывает, что-то хорошее показывает Европа. 
 
Бывает, раз в три года вылезет кто-то из американцев, а в целом им, наверное, стыдно самим за себя. У них участвует в финале примерно 30 команд, и из них где-то 25 в нижней половине таблицы. Это совсем слабо. Южная Америка, Африка слабые. Расклад примерно такой. Россия очень сильна, а мы с ней один и тот же регион, и то, что БГУ отбирается регулярно, это уже неплохо. 
 
– Что надо сделать в Беларуси, чтобы повысить уровень подготовки программистов? Очень много говорилось об IT-образовании. Компании говорят, что людей надо готовить с прицелом в коммерческое использование. Многие представители вузов, наоборот, говорят, что надо делать упор на академическое образование. Чего не хватает белорусскому образованию, с вашей точки зрения, чтобы готовить таких сильных спортивных программистов, чтобы  о нас слышали на мировой арене? Что нужно сделать, чтобы было больше таких, как Гена Короткевич, конечно, с поправкой на талант?

– Такие, как Гена Короткевич, не нужны компаниям, их это не сильно интересует. Гена Короткевич – это в лучшем случае хорошая пиар-фигура для нашего Парка высоких технологий. А так он уже погоды для Парка не сделает. Я не думаю, что образование может существенно помочь в регулярном достижении успеха в спортивном программировании. В целом образованию банально не хватает квалифицированных кадров. Кто и зачем сейчас пойдет работать в университет? Есть люди, которым это интересно. Я знаю трех бывших олимпиадников, которые на четверть ставки работают в университете. Наверное, им это интересно, и они понимают, что это важно, но они это делают уж точно не из финансовых побуждений. 

– Патриотизм, вероятно…
 
– Но все равно это единицы, массового потока хороших кадров нет, и откуда ему взяться. А чему учить? Бывают разные отрасли программирования. Я не вижу большого смысла учить с прицелом на коммерцию: все равно за три месяца-полгода можно освоить любую технологию на достаточном уровне. Чему учить пять-шесть лет – непонятно. Надо учить думать, но надо, чтобы было кому учить. 

– Будем надеяться ситуация изменится к лучшему! Хотелось бы поговорить о вашем опыте. Когда вы поняли, что ваши навыки в сфере спортивного программирования конкурентоспособны на белорусской и мировой арене? 

– На белорусской – очень давно. Я занимаюсь олимпиадами практически с 6 класса. Так получилось, что уже в 6 классе я получил 3 место на республиканской олимпиаде. Тогда это в какой-то степени была случайность, и олимпиады для школьников до 9 класса тогда были странные. Видимо, когда в 9 классе я прошел на Международную олимпиаду, тогда стало понятно, что я конкурентоспособен на белорусской арене.
 
О своей конкурентоспособности на мировой арене я не знал до 2004 года. Когда в 2004 году мы взяли золото, я в этом убедился. А личных результатов у меня до сих пор не было. 
 
– Теперь есть! Будем надеяться, что золото на Code Jam и других конкурсах не за горами. А чего не хватает белорусским командам, которые участвуют в спортивных олимпиадах?

– Я бы не сказал, что им чего-то не хватает. Мне совершенно не нравится, как все происходит у школьников, а у студентов БГУ все в порядке. Просто действительно сложно взять медаль, нужно, чтобы совпало куча факторов. Либо нужно быть очень талантливым, либо, чтобы звезды сложились правильным  образом. Талантов такого уровня, чтобы просто прийти и выиграть, у нас нет, с этим ничего не поделаешь. 
 
Я не уверен, что суперподготовка может изменить ситуацию. В целом все нормально, мне кажется. У школьников же нет никакой системы подготовки, полная ерунда, разброд и шатание, а республиканская олимпиада – это страх. Но мы все равно ездим, хорошо выступаем, значит, все нормально. 
 
– Помогает ли вам спортивное программирование в повседневной деятельности? Все-таки решение задач – это не то же самое, что обслуживание CRM-систем, или решение других программистских задач. Не жалеете, что ушли с головой в спортивное программирование?
 
– У меня же специфическая работа. Я фактически 80% времени на работе занимаюсь спортивным программированием. Но понятно, что программирование бывает разным, и 90% людей эти навыки не помогут, потому что они будут решать более рутинные задачи. При этом эти задачи могут быть сложными из-за технологий, бизнес-логики или масштаба проекта, но спортивное программирование здесь вряд ли поможет. На том же Google есть куча нетривиальных задач, которые надо как-то делать. У них огромные масштабы данных, которые должны эффективно работать. 
 
– Например?

– Даже сделать нормальный seаrch. 
 
– Им пока удается.
 
– Естественно, все что-то делают, улучшают. Если взять любую гугловскую вещь, это не примитивно. Любой проект, где счет на сотню миллионов пользователей, не будет тривиальным. Естественно, приходится решать кучу вещей, и это можно делать по-разному с точки зрения расходов, надежности, качества выдаваемых результатов в поиске. По-моему, там есть куда приложить мозги. Вопрос в том, насколько это тренирует мозги. У меня не было возможности проверить, но я все же надеюсь поработать в такой компании хотя бы для опыта. 
 
Я общался со спортивными программистами, и могу сказать, это помогает излагать свои мысли четко и логически стройно. Очень часто бывает непонятно, чего человек хочет. На TopCoder есть такая вещь, как марафон-матчи. У клиента есть очень сложная алгоритмическая задача, и он не представляет, как ее решать. Эта задача вбрасывается людям, которые решают ее две недели или месяц. Потом все это оценивается. Победители получают призовые, а клиент получает хорошее решение задачи. 
 
Бывает, когда я смотрю, как у них [были] решены некоторые вещи, мне становится просто страшно: настолько там все убого. В целом наши ребята на TopCoder обычно решают задачи лучше, но это еще зависит от клиента. Видимо, эти навыки есть куда приложить, просто надо это делать в нужной сфере. Но понятно, что таких позиций в IT немного. 
 
– Насколько вам лично помогает программерская закалка в обычной жизни, в умении формулировать требования? Помогает ли спортивно-олимпиадный бэкграунд в работе, карьере? Может, вы можете рассказать об этом на примере других спортивных программистов?

– Честно говоря, даже не знаю, что сказать по поводу повседневной жизни. Наверное, это никак не влияет. Среди олимпиадных программистов популярен спор, нужно это кому-то или нет. Тем, кто участвует в этом деле, прежде всего все это интересно. Даже если это не пригодится на практике, этим все равно будет заниматься куча людей. Но даже те, кто говорят, что от этого нет никакого толка, все равно признают, что это помогает при устройстве на работу. Хотя мне не удалось отследить это. У меня сейчас есть результат в финале, и я не могу сказать, что за мной начали гоняться headhunter-ы. 
 
– На самом деле, мне кажется, они просмотрели, потому на IT-рынке сейчас большой дефицит опытных, толковых программистов. А что бы вы порекомендовали начинающим программистам, которые хотят встать на стезю олимпиадного программирования и готовятся самостоятельно? Каких ошибок надо избегать, к чему надо стремиться?

– Во-первых, надо подумать, надо ли вам это вообще: "профит" все же сомнительный. Затем надо подумать, интересно ли этим заниматься. Если нет, то я не рекомендую начинать. Тогда получается, что школьник занимается этим, чтобы поступить, а студент – вообще не понятно зачем. Поступить в вуз можно и проще, нежели выиграв республику. Если программирование вам действительно интересно и вам хочется этим заниматься, нужно просто заниматься этим в свое удовольствие. 
 
Информации в интернете куча, сейчас не так, как было 10-15 лет назад, когда было непонятно, где что брать. Сейчас нет никаких проблем с подготовкой. Надо обязательно решать соревнования, должен быть фактор стресса. Наверное, надо стараться мыслить логически: поменьше догадок, побольше обоснованных вещей. Надо помнить, что в итоге все очень просто. По мере развития то, что год назад казалось очень сложным, потом кажется простым. Не стоит бояться задач. Если вы поехали на соревнования, надо стараться поменьше волноваться. Как ни странно, это существенный фактор. 

– Как вы боролись с волнением на своих соревнованиях?

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

– Я желаю, чтобы вы занимались любимым делом, чтобы жизнь в целом доставляла удовольствие. Удачи, здоровья, счастья и всего самого наилучшего. 
  
 

Иван Метельский

Метельский Иван Сергеевич, родился в 1985 г. в г. Гороховце (РФ), в 2001 г. окончил гимназию №1 г. Слуцка, в 2007 г. – Факультет прикладной математики и информатики Белорусского государственного университета. В 2004 – 2007 гг. – координатор по задачам проекта "Test-the-Best". С 2007-го года по настоящее время – координатор по задачам алгоритмических соревнований, проводимых компанией TopCoder. С 2010-го года – также координатор марафонских соревнований.
 
Медалист олимпиад по программированию среди школьников IOI'99, IOI'00, IOI'01. Финалист студенческой олимпиады по программированию ACM ICPC 2003. Золотой медалист ACM ICPC 2004. Участник финальных соревнований TCO 2005, GCJ Europe 2006, GCJ 2008, 2010. Обладатель 2-го места в финале GCJ 2011.
Нужные услуги в нужный момент
{banner_819}{banner_825}
-20%
-20%
-10%
-80%
-10%
-25%
-20%