Привет, Codeforces! Вчера случился важный для спортивного программирования прецедент: в России полностью провалился школьный этап ВСОШ по информатике. В тестирующей системе нельзя было выбрать язык, она не тестировала и не сохраняла посылки на протяжении всего контеста, а организаторам пришлось прямо во время олимпиады переписывать регламент…
Причина для нашей страны не нова — кумоство и некомпетентность. Я был волонтёром в одной из школ, в которых проводился этап, и могу рассказать, как всё случилось.
Вопрос тестирующей системы
Раньше школьный этап был децентрализован: каждый регион придумывал свои задачи и сам выбирал удобную ему тестирующую систему. Иногда это вызывало “косяки” на местах, иногда поступали жалобы на неравную сложность задач, но в целом система работала.
В какой-то момент Москва решила, что так дело не пойдёт, и в прошлом году пересадила 80% Российских регионов на новую тестирующую систему от образовательного центра Сириус.
Тут стоит сделать небольшое отступление и сказать, что стабильная тестирующая система — чрезвычайно сложный в разработке продукт, который нужно полировать годами. Почти все олимпиады в РФ используют ejudge (запомните эту систему), Яндекс. Контест или Codeforces — эти проекты не новы (всем более 10 лет) и не идеальны, но хотя бы проверены временем и разрабатываются компетентными авторами.
Из попыток создать новую ТС можно отметить разве что Sort Me, но в целом это считается неподъёмной и ненужной задачей. Сириус захотел решить её самостоятельно, и скоро мы узнаем, почему.
Что произошло в прошлом году
Итак, вместо готового решения Сириус заявил новую тестирующую систему Сириус.Курсы. В прошлом году на ней в тестовом режиме прошёл ВСОШ, и все её проблемы стали сразу заметны.
Я знаком с пятью преподавателями по программированию из пяти разных регионов. Каждый из них пожаловался мне, что Сириус.Курсы совершенно не готовы к нагрузкам: “Огромные очереди на тестирование”, “невозможно зайти”, “постоянные падения” — это прямые цитаты. Отдельно стоит причина “нет контроля за списыванием” — Сириус.Курсы забрали даже базовую возможность анализировать решения на похожесть.
В том году я так же волонтёрил на школьном этапе в Москве, и рад был бы дать свой отзыв о Сириус.Курсах… Если бы Москва сама использовала то, что создала! :) Видимо, увидев, что система не готова, этап тихонько перенесли на локально поднятый ejudge.
Как это объяснили организаторы
Официальная причина — “какой-то не очень удобный скоринг”. Организатор соревнований Денис Кириенко вполне открыто об этом говорит в своём посте, зачем-то вбрасывая фейки вроде “Сириус умеет держать нужную нагрузку”. Давайте сделаем небольшой фактчек.
Она [система сириуса] специально была разработана для проведения подобных мероприятий
Инсайд: изначально Сириус.Курсы задумывались как аналог Stepik и предназначались для олимпиад по математике, химии и прочим предметам, где от участника требовалось решить задачу на листочке и вписать текстовый ответ. Поддержка задач по программированию появилась в последнюю очередь — мол, в тех задачах мы просто сравнивали ответ, а в этих будем программы людей запускать. Любой программист понимает, что спроектированная так система не может работать нормально.
Стандартные алгоритмы [антисписывания], которые используются на подобных соревнованиях (предполагающие попарное сравнение подозрительных решений членом жюри), здесь не сработают, потому что решений и списываний очень много, сравнивать попарно решения нет никакой возможности.
Денис говорит, что антиплагиат и не нужен вовсе, потому что участников слишком много! Только вот возможность сравнить попарно решения есть — и это децентрализация, как и многие годы до этого. Люди писали туры на своих задачах маленьким регионом, а местные преподаватели прогоняли свой небольшой набор решений через антиплагиат.
Проблем с тестирующей системой не было, но, к сожалению, отбиться от DDOS-атак без потерь не удалось. […] По моим оценкам, трудности доступа к тестирующей системе […] возникли у 30% участников олимпиады
Денис, если вы своими руками развернули тестирующую систему, но ваш сервер уничтожили школьники — это тоже проблема с тестирующей системой! В частности, проблема в том, что вы не захотели использовать облачные решения и переоценили свои силы по настройке серверов.
В своей статье Денис так же “надеется, что в дальнешем сможет использовать Сириус.Курсы”. Я тогда морально простил этот фейл организаторам — ошибки при внедрении новых систем не исключены, но в следующем году всё поправят и централизуют. Ведь правда?
Что произошло в этом году
25 октября 2022 года я пришёл в родную Московскую школу помогать с организацией контеста. Участникам открыли Сириус.Курсы, выдали одноразовые коды, олимпиада началась. Я был уверен, что в этом году Сириус.Курсы сделают лучше, и теперь они точно выдержат нагрузку. Я никогда так не ошибался. 
Удивительно, но за год Сириус сделали ещё хуже, он стал абсолютно непригоден для соревнований! По пунктам:
- Посылки не тестируются в принципе Не знаю, что именно Сириус.Курсы там намудрили, но очередь забилась настолько, что за время тура не успело провериться почти НИ ОДНО решение.
- Вы не можете менять язык программирования Если вы отправили решение скажем, на Python, то отправить решение на C++ уже не сможете. Даже если при первой посылке случайно поставили не тот язык. Как признались позже организаторы, это баг, а не задумка.
- Решения не сохраняются Надежды на тестирование уже нет, отдебажили всё локально и сдали? Тогда помолитесь, чтобы решение вообще сохранилось в системе. На всякий случай заскриншотьте, что сдали.
Потрясающе дополняет эту картину сообщение Дениса Кириенко, которое он в спешке начал рассылать участникам:

В общем, тестирующих систем много, но мы сделаем свою. Кто-то же должен быть худшим. Глупые регионы не умеют проводить олимпиады, лучше отдайтё все Московской группе экспертов, они всё даже без тестирующей системы проведут.
Корень проблемы
Зачем Сириус взялся за разработку новой системы, если их решение не справляется? Ответ — Сириус не разрабатывал новую систему. Он испортил старую.
Как выяснилось из переписок, Сириус.Курсы — всего лишь оболочка над старой системой ejudge.

То есть вся история была пшиком. Сириус не предложил какую-то альтернативу — он просто:
- Спрятал старое open-source решение под своим логотипом
- Не смог его настроить, но решил, что и так сойдёт
- В течение года ничего не делал для улучшения системы
- С помощью админресурса навязал всем регионам свои костыли
- Сорвал школьный этап самой важной олимпиады в стране
Когда система работает плохо — это некомпетентность. Когда некомпетентность появляется в образовании, предполагающем принцип меритократии, это обычно называется кумоством. Говорят, что коррупция и кумоство боятся гласности — поэтому я и пишу этот пост.
Вместо заключения
Я полюбил программирование, когда впервые пришёл на школьный этап ВСОШ. Мне понравилось решать задачки, мои глаза загорелись. Но сегодня я видел в глазах школьников лишь разочарование, негодование и опустившиеся руки.
Дорогие Денис Кириенко и Сириус, если ваша цель — чтобы наши школьники и студенты перестали быть лучшими программистами в мире и расхотели брать золотые медали на мировых чемпионатах, то вы всё делаете правильно.



