24 марта 2011 г.

Великие программисты России: Петр Митричев

Было много веселых и красочных эпизодов в жизни нашей компании, которые уже описаны в этом блоге. Мне бы хотелось добавить немного серьезности и выбрать для своей серии постов тему, которая безусловно будет интересна всем программистам.
Начать серию "Великие программисты России" хотел бы с перевода статьи о Петре Митричеве, как наиболее ярком и известном представителе нашей профессии, призере турниров TopCoder Open и Google Code Jam.
В общем и целом Петр имеет взвешенное суждение по поводу ценности его достижений, как следует из следующей выдержки из его интервью Российской газете:

РГ: Среди победителей подобных турниров очень много русских। Говорят, что это показатель нашей особой одаренности и уровня научной школы। Ваше мнение?
Митричев: Насчет особой одаренности не знаю. Что точно есть, так это четкая система преемственности поколений. Когда я учился в школе, то нам помогали предыдущие участники турниров, а сейчас сам занимаюсь со школьниками. Но в принципе на этот вопрос есть и другая точка зрения. Ее прямо высказывают американцы и многие европейцы. Они говорят, что такие соревнования - это математическая акробатика, "игрушки" для китайцев, русских, индусов. Дескать, для них это единственный шанс получить хорошую работу в престижной фирме - побеждать на таких турнирах. А "богатым" некогда играть, они делом занимаются. Отчасти это верно, во всяком случае, в США никто никого специально не готовит, и уж точно нет никаких тренировочных лагерей. У нас же, скажем, в Пятигорском университете два раза в год собираются участники турниров, чтобы подготовиться.


Ссылка на полный текст этого интервью: http://www.rg.ru/2006/11/08/mitricev.html


Оригинал статьи, перевод которой приведен ниже, можно прочитать на широкоизвестном в узких кругах сайте TopCoder: The Story of Petr Mitrichev - Target in Six Steps


С момента написания этой статьи в 2005 году, Петр выиграл "Google Code Jam 2006". В этом соревновании принимали участие более 20 тысяч программистов из 100 стран мира.

Уже после окончания перевода, нашел частично совпадающий русский оригинал тут.

В 2007 Петр Митричев выиграл студенческий чемпионат мира по программированию в Орландо, США. Четвертое место в этом соревновании занял Виталий Вальтман из Санкт-Петербурга.

Очень может быть, что следующая история этой серии будет о нем.

P.S. Кстати, последние три года Петру не везет на турнире TopCoder Open, как он сам пишет в своем блоге - выбирает неверные задачи, - выбрал средний уровень в 2009 году, хотя задача сложного уровня была более простой, - и потратил на простую задачу время в 2010 году, а затем вместо среднего уровня взял сложный и не успел в итоге. Более того, уже в 2009 году он увидел более сильного соперника из Беларуси, которого тоже очень бы хотелось упомянуть в этом обзоре - Геннадий Короткевич, вундеркинд из Гомеля.
Мой перевод можно прочитать ниже. Приношу свои извинения за качество - я не профессиональный переводчик. Курсивом отмечены мои примечания.


Введение.


Соревнования TopCoder становятся все более популярными и их участники становятся все лучше. Новые очень опытные участники регистрируются ежедневно и вносят значительный вклад в улучшение этой среды обучения. Но не каждый день программист, в данном случае из России, становится лидером после 6 матчей! Превысив рекорд "snewman", полученный после 8 матчей, этот программист поднялся до четвертого места в общем зачете по алгоритмам. Это действительно впечатляет, но вот в чем секрет его успеха? Что делает его таким сильным участником?


Для начала требуется храбрость.


Петр Митричев родился в 1985 году в Москве, где живет и по сей день (на момент написания статьи, - даты статьи к сожалению не нашел). В возрасте 10 лет он начал читать очень много математической литературы и открыл для себя, что очень любит математику. Очень скоро он также пристрастился к решению математических проблем и загадок. Несмотря на то что в это время дома у него не было компьютера, он прочитал книгу про Pascal, которую купил его брат. Единственный шанс использовать полученные знания на практике он получил на занятиях в Дворце Творчества Юных. Именно там он написал свою первую программу. Позже, осенью 1996 года, он начал посещать занятия по программированию в старших классах средней школы. Пока его одноклассники изучали Norton Commander, - он уже писал программы. Наконец, его учительница Юлия Львовна Воронцова отметила его интерес и пригласила к участию в олимпиаде Северо-Западного округа Москвы. Это было первым действительно важным событием в жизни Петра и он до сих пор благодарен Юлии Львовне за предоставленную возможность. На этой олимпиаде он впервые почувствовал удовольствие от результата решения поставленных задач, от написания программ, которые должны были решать действительно сложные задачи. Он занял четвертое место, что дало ему право принять участие в следующем туре олимпиады.


Вот как началось путешествие Петра в восхитительный мир "большого программирования". Как видно не обязательно иметь в самом начале абсолютно все условия для занятия тем делом, в котором действительно хочешь преуспеть. Достаточно просто любить то, что делаешь, и уметь преодолевать возникающие препятствия. Как сказал однажды Wayne Gretzky Вы пускаете в "молоко" 100% неудачных выстрелов, - поэтому так важно не опускать руки ещё до того, как Вы сможете действительно приступить к своему начинанию.


Великолепная возможность.


В той же самой Московской олимпиаде 1997 года Петр Митричев занял 6ое место. Только трех лучших участников олимпиады в Москве должны были отправить в следующий тур на Всероссийскую олимпиаду по программированию. Но руководитель группы Николай Владимирович Коробков решил выдвинуть в следующий тур 2 лучших участников и Петра - т.к. он был очень молод и для него это могло оказаться неплохим жизненным опытом. Последний тур Всероссийской олимпиады по программированию проводился в Санкт-Петербурге. В соревновании Петр смог решить только одну задачу из 6 и занял 60е место среди 100 участников. Но т.к. он был самым молодым участником, организаторы решили в виде поощрения наградить его компьютером. Но более важной наградой, чем компьютер, для него было приглашение в летний тренировочный лагерь для участников команды России, которая должна была выступить на Международной Олимпиаде по Информатике. Посещение тех же лекций и решение тех же задач, которые ставились перед лучшими российскими студентами, стало неоценимым стимулом для будущих достижений Петра.


Непрерывность.


С этого события в 1997 году его карьера в спортивном программировании уже не прекращалась. Он участвовал в шести Всероссийских олимпиадах по программированию для студентов и выиграл три из них (в 2000м, 2001м и 2002м годах). Также Петр принимал участие в шести летних лагерях по спортивному программированию и в пяти зимних в рамках подготовки Российской команды для участия в Международной Олимпиаде. Его учителями были признанные победители соревнований по программированию: Антон Лапунов, Виктор Матюхин, Анатолий Пономарев, Виталий Беров, Максим Бабенко, Владимир Мартьянов, Андрей Станкевич, Дмитрий Васюра, Илья Миронов, Марк Сандлер, Евгений Черепанов, Сергей Чернышев, Георгий Корнеев и другие.


Сам Петр говорит следующее: "Эти летние и зимние лагеря дали мне все знания алгоритмов, все навыки программирования и всю уверенность, которые есть у меня сейчас".


За исключением этих 4 недель в году, Петр продолжал учиться в 57 школе Москвы, хорошо известной в Москве за отличную подготовку в математических классах, которая также помогла Петру в улучшении навыков участия в олимпиадах по программированию.


Университетские годы.


Летом 2002 года Петр окончил 57 школу и поступил на Механико-математический факультет Московского Государственного Университета. Это было начало его карьеры в ACM, а также начало действительно серьезной математической подготовки и просто студенческой жизни. В соревновании ACM ICPCs 2002 года он присоединился к команде YaRiK. Эта команда стала "командой звезд", в которой три лучших программиста МГУ (в рамках участия в соревнованиях) объединились внутри команды российских участников ACM ICPC. Один из членов его команды был также участником проекта TopCoder под ником "evgeni". Учебные сессии проводились каждые две недели. Команду тренировали Олег Богданович Христенко и Евгений Васильевич Понкратьев. Тренеры делали все от них зависящее, но было очень мало того, чему можно было научить эту команду, она была практически непобедима. Они выиграли полуфинал NEERC и были очень близки к победе в Чемпионате Мира 2003 года. Команда Варшавского университета под руководством "tomek" оставила им второе место. Т.к. это было второе участие в Чемпионате Мира подряд для членов его команды, - они не могли принимать участие в чемпионатах 2003 и 2004 годов. Поэтому команда, в которой Петр выступал в эти годы, была полностью новой (к нему присоединились участники проекта TopCoder "Aldanur" и "Pawa"). Эта команда не дошла до финала, но еженедельные занятия сильно улучшили навыки Петра и членов его команды. В сезоне 2004-2005 команда снова смогла дойти до финала. С помощью Андрея Станкевича (участник проекта TopCoder "andrewzta"), тренера команды ЛИТМО, они были в очень хорошей форме перед финалом, и снова остались вторыми, на сей раз после команды Университета Шанхая.

Так Петр Митричев закончил очередной яркий этап своей карьеры в соревнованиях по программированию. На самом деле только немногие могут похвастаться двумя вторыми местами в финале такого важного чемпионата, как ACM - ICPC.


Вот как об этом говорит сам Петр: "Я считаю что два самых важных качества для победы в состязаниях по программированию это качество проведенных тренировок и умение качественно мыслить. Вы должны уметь решать очень много задач различных типов чтобы выиграть, - но также Вы должны быть готовы к решению математических задач и проблем на стыке программирования и математики. Математические головоломки и олимпиадные задачи очень хорошо готовят к этому. И самое главное - Вы должны быть уверены. Уверены в том, что обязательно добьетесь успеха. И в итоге обязательно придете к победе. И чувство победителя станет для Вас лучшей наградой за все трудности на этом пути.".


Получай удовольствие.


Многие скажут что достижение такого уровня подготовки к соревнованиям требует огромного объема тренировок и напряжения всех сил. Но количество не всегда переходит в качество. Вот слова самого Петра: "Соревнования по программирования всегда были очень небольшой частью моей жизни. Пять часов в неделю - это бал максимум, за исключением летних и зимних лагерей для подготовки к участию в международных соревнованиях". Как говорит старинная мудрость, "Mens sana in corpore sano". Это позволяет Петру жить активной и интересной жизнью. Он получает удовольствие от встреч с друзьями, играет в футбол, волейбол, баскетбол, настольный теннис и любит участвовать в горных походах. Принцип не допускать чрезмерных тренировок важен в программировании также как и в других видах командного спорта. Вот что советует Петр, как ветеран этих соревнований: "Не посвящайте все свое время тренировкам, иначе у Вас не останется сил и стремления к победе в самом соревновании. Что бы Вы не делали - старайтесь получать от этого удовольствие. Как только Вы перестанете получать удовольствие от программирования - просто бросайте это занятие. Играйте в футбол, найдите подружку, изучите что-то не связанное с программированием. Просто живите своей жизнью. Соревнования по программированию - это только соревнования, и ничего больше. Не дайте им заполнить всю Вашу жизнь, т.к. в ней есть ещё очень много ярких и интересных впечатлений и событий. ".


Цель.


Закончив свою карьеру в ACM, Петр переключился на проект TopCoder. Он ему понравился, за исключением отсутствия Паскаля, который он использовал для всех соревнований 1997-2005 годов. Но т.к. он использовал C# в некоторых проектах, это не стало настоящей проблемой. В этом году, помимо обучения, участия в соревнованиях и занятий спортом, он также встречается с друзьями, катается на роликах, играет в старый добрый футбол и катается на велосипеде. Также он начал вести математику в своей родной 57ой школе. В этом году, с сентября 2004 года, он был занят многими проектами, - но самое главное, он действительно был счастлив делать то, что ему нравится. Этим летом он впервые примет участие в летнем лагере, теперь уже как тренер российской команды для участия в международном чемпионате по программированию. Затем, он на 2 дня вернется в Москву, и опять уедет, на этот раз в горы Хибин. После одного дня дома, у него опять начнется преподавание в Летней Школе Информатики для студентов. Опять две недели дома и снова путешествие, в главный офис компании Гугл, а затем в Петрозаводск для обучения команды МГУ для участия в ACM. И наконец к 1 сентября, началу очередного семестра, он вернется домой чтобы продолжить собственную учебу. В нескольких словах Петр описывает свою жизнь очень просто: "Я люблю этот мир".


Это восхитительная история успеха Петра Митричева. Она может быть Целью в любом смысле этого слова. Но любые рекорды создаются для того, чтобы в итоге они были побиты. И может быть недалек тот день, когда новый участник соревнований по программированию, имея все необходимые для победы качества, а также "схватив за хвост" удачу в виде такого тренера, как Петр Митричев, сможет определить следующее поколение участников соревнований проекта TopCoder.


Конец перевода этой статьи.


2 комментария:

  1. Этот комментарий был удален автором.

    ОтветитьУдалить
  2. Спасибо, очень интересная статья, но хотелось бы увидеть продолжение серии. :)

    ОтветитьУдалить