Продолжаю описывать известные мне соревнования по программированию. На этот раз - не только по спортивному программированию, но и по разработке программного обеспечения и графическому дизайну.
Пролог
Про 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.
TopCoder в википедии (на русском).
Кросспост с моего блога.