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

Пролог

TopCoderПро TopCoder я случайно узнал в далеком 2005 году. Зашел на сайт, зарегистрировался, стал еженедельно получать email’ы с анонсом каких-то SRM’ов с призовым фондом $5000, но так и не решился поучаствовать – думал, нереально какому-то самоучке состязаться с профессионалами и еще претендовать на денежное вознаграждение. На участие сподвигнул меня Андрей Лопатин – двукратный чемпион мира по версии ACM ICPC, приехавший в Алматы в качестве тренера на школьные сборы в мае 2006. С тех пор я участвую почти в каждом Rated Event в секции Algorithm и ничуть не жалею об этом, даже если «сливаю» матч вчистую. Из материального заработал я немного – всего $523, которые при вычете налогов сильно уменьшаются в размере, несколько футболок и почти бесполезных вещиц. Но неоценим нематериальный вклад: возможность вживую пообщаться с легендарными личностями, посмотреть, как пишут программы профессионалы, шанс быть принятым на работу в известную компанию, ну и просто наслаждение и польза от самого процесса.

Итак, начнем-с…

TopCoder регулярно проводит несколько видов соревнований. Понемногу о каждом.

Algorithm CompetitionsAlgorithm Competitions – соревнования по алгоритмическому программированию. В полной мере отражают смысл словосочетания «спортивное программирование»: 75 минут на кодирование трех задач, 5 минут на регуляцию уровня адреналина, 15 минут на поиск багов в чужих решениях, и еще 5 минут бесконтрольного выброса адреналина в ожидании результатов.

Single Round Matches проводятся практически каждую неделю (следующий, кстати, будет в субботу в 22.00, разыгрывается $5000). Кроме этого раз в год проводится неофициальный индивидуальный чемпионат мира по программированию среди студентов – TopCoder Collegiate Challenge, и среди всех желающих – TopCoder Open, с довольно внушительными призами.

Плюсы:

  • вышеописанная «спортивность»;
  • приемлемый (в большинстве случаев) уровень задач;
  • разделение участников на дивизионы – если вы не хотите уделять много времени подготовке, а просто хотите оставаться в форме, участвуйте во 2-м дивизионе;
  • призы, иногда;
  • возможность следить за своим прогрессом;
  • учит думать быстро и безошибочно.

Минусы:

  • очень желательно хорошо понимать тексты на английском;
  • базовых знаний языка программирования может быть недостаточно – требуются начальные знания ООП (класс, метод) и стандартной библиотеки;
  • отсутствует возможность использовать Pascal, хотя я считаю, что это больше плюс, чем минус.

Marathon MatchesЕсли вы любите долго обдумывать программу, постоянно что-то оптимизировать, то для вас есть Marathon Matches. Одна сложная, возможно, NP-полная задача, срок – одна или две недели.

Плюсы:

  • решение необязательно должно быть полным, оно лишь должно быть лучше других.

Минусы:

  • требует, на мой взгляд, достаточного количества свободного времени.

High School CompetitionsHigh School Competitions – то же, что и Algorithm Competitions, но участвовать могут только школьники.

Architecture, Design, Development, Assembly CompetitionsSoftware Architecture, Design, Development, Assembly, Testing Competitions – соревнования для тех, кто предпочитает промышленное программирование: разработка архитектуры, проектирование, реализация, сборка и тестирование программного обеспечения. Есть заказчик, есть задание, кто сделает лучше, тот и победил. Можно рассматривать как аналог фриланса.

Сюда можно включить также относительно новый вид Bug Races, в вольном переводе «Погоня за багами», – соревнование по исправлению обнаруженных багов.

Плюсы:

  • призы есть всегда, хотя их лучше рассматривать как заработную плату.

Минусы:

  • хотя призы есть, при отсутствии должного опыта шансы получить хоть какую-то оплату минимальны;
  • требует большого количества свободного времени.

TopCoder StudioИ, наконец, TopCoder – это соревнования не только для разработчиков. Если вы дизайнер или просто умеете рисовать, то присмотритесь к TopCoder Studio.