TopCoder – все, что вы хотели узнать, но боялись спросить…
Продолжаю описывать известные мне соревнования по программированию. На этот раз – не только по спортивному программированию, но и по разработке программного обеспечения и графическому дизайну.
Пролог
Про TopCoder я случайно узнал в далеком 2005 году. Зашел на сайт, зарегистрировался, стал еженедельно получать email’ы с анонсом каких-то SRM’ов с призовым фондом $5000, но так и не решился поучаствовать – думал, нереально какому-то самоучке состязаться с профессионалами и еще претендовать на денежное вознаграждение. На участие сподвигнул меня Андрей Лопатин – двукратный чемпион мира по версии ACM ICPC, приехавший в Алматы в качестве тренера на школьные сборы в мае 2006. С тех пор я участвую почти в каждом Rated Event в секции Algorithm и ничуть не жалею об этом, даже если «сливаю» матч вчистую. Из материального заработал я немного – всего $523, которые при вычете налогов сильно уменьшаются в размере, несколько футболок и почти бесполезных вещиц. Но неоценим нематериальный вклад: возможность вживую пообщаться с легендарными личностями, посмотреть, как пишут программы профессионалы, шанс быть принятым на работу в известную компанию, ну и просто наслаждение и польза от самого процесса.
Итак, начнем-с…
TopCoder регулярно проводит несколько видов соревнований. Понемногу о каждом.
Algorithm Competitions – соревнования по алгоритмическому программированию. В полной мере отражают смысл словосочетания «спортивное программирование»: 75 минут на кодирование трех задач, 5 минут на регуляцию уровня адреналина, 15 минут на поиск багов в чужих решениях, и еще 5 минут бесконтрольного выброса адреналина в ожидании результатов.
Single Round Matches проводятся практически каждую неделю (следующий, кстати, будет в субботу в 22.00, разыгрывается $5000). Кроме этого раз в год проводится неофициальный индивидуальный чемпионат мира по программированию среди студентов – TopCoder Collegiate Challenge, и среди всех желающих – TopCoder Open, с довольно внушительными призами.
Плюсы:
- вышеописанная «спортивность»;
- приемлемый (в большинстве случаев) уровень задач;
- разделение участников на дивизионы – если вы не хотите уделять много времени подготовке, а просто хотите оставаться в форме, участвуйте во 2-м дивизионе;
- призы, иногда;
- возможность следить за своим прогрессом;
- учит думать быстро и безошибочно.
Минусы:
- очень желательно хорошо понимать тексты на английском;
- базовых знаний языка программирования может быть недостаточно – требуются начальные знания ООП (класс, метод) и стандартной библиотеки;
- отсутствует возможность использовать Pascal, хотя я считаю, что это больше плюс, чем минус.
Если вы любите долго обдумывать программу, постоянно что-то оптимизировать, то для вас есть Marathon Matches. Одна сложная, возможно, NP-полная задача, срок – одна или две недели.
Плюсы:
- решение необязательно должно быть полным, оно лишь должно быть лучше других.
Минусы:
- требует, на мой взгляд, достаточного количества свободного времени.
High School Competitions – то же, что и Algorithm Competitions, но участвовать могут только школьники.
Software Architecture, Design, Development, Assembly, Testing Competitions – соревнования для тех, кто предпочитает промышленное программирование: разработка архитектуры, проектирование, реализация, сборка и тестирование программного обеспечения. Есть заказчик, есть задание, кто сделает лучше, тот и победил. Можно рассматривать как аналог фриланса.
Сюда можно включить также относительно новый вид Bug Races, в вольном переводе «Погоня за багами», – соревнование по исправлению обнаруженных багов.
Плюсы:
- призы есть всегда, хотя их лучше рассматривать как заработную плату.
Минусы:
- хотя призы есть, при отсутствии должного опыта шансы получить хоть какую-то оплату минимальны;
- требует большого количества свободного времени.
И, наконец, TopCoder – это соревнования не только для разработчиков. Если вы дизайнер или просто умеете рисовать, то присмотритесь к TopCoder Studio.