Почему школьная и районная олимпиады — скорее отборочные, а не соревновательные
На днях я написал во вКонтакте большой пост про проблемы на школьном этапе Всероссийской олимпиады школьников в Нижегородской области. В нем, в частности, была следующая фраза: «Нет никакого смысла гордиться тем, что вы победитель школьного или, допустим, призер районного этапа. Весь смысл школьного и районного этапов — отобрать участников областной олимпиады <…>, и соответственно участвовать в школьном и районном этапе имеет смысл либо с целью выйти на область <…>, или чисто в качестве тренировки, чтобы уже в будущем году выйти на область». В последовавшей дискуссии я более доформализовал и подробнее расписал, почему я так считаю, и здесь публикую еще более расширенный и отредактированный ответ.
Целевая аудитория
Во-первых, конечно, я обращаюсь (как и в этом блоге, так и у себя на стене во вКонтакте) в первую очередь к ученикам моего курса. И я всегда говорю, что мой курс ориентирован на сравнительно сильных, а не средне-слабых, школьников, основная цель у меня — не научить 1000 школьников писать hello world, а научить 10 школьников прилично выступать на областной олимпиаде (и выше). Конечно, я не запрещаю слабым школьникам заниматься у меня в курсе (в частности, я принципиально делаю так, что никакого отбора ко мне в курс нет), и я рад, если у них что-то получается, и, насколько могу, помогаю им, но все-таки это больше побочный эффект, чем основная цель. (На аналогичную тему я еще писал в одном из прошлых постов)
И, естественно, от таких сравнительно сильных школьников я ожидаю как минимум участия в областной олимпиаде, а не просто победы на школьном этапе, и поэтому и считаю, что к школьным и районным олимпиадам они должны относиться как к проходному, или тренировочному этапу.
(Помимо цели научить сильных школьников, у алгопрога есть вторая крупная цель — учить уже студентов и даже выпускников вузов, дать им знания алгоритмов и смежных тем, которые будут полезны как в собеседованиях, так и в реальной работе. Вопрос про школьные олимпиады касается, конечно, школьников, хотя и про студентов-и-старше можно сформулировать очень близкий критерий: минимальный уровень понимания алгоритмов и смежных тем, который имеет хоть какой-то смысл — это как раз уровень, соответствующий невысоким результатам на областной олимпиаде. То есть если взять те же студентов, занимающихся на алгопроге хоть сколько-то успешно, и посадить их на школьные олимпиады, то они тоже должны без особых проблем пройти на областную олимпиаду. Про это я еще немного пишу ниже.)
Общий результат за много лет
Во-вторых, я, конечно, говорю не про результат одного конкретного года, а про общий результат участия в олимпиадах. Если всё, чего школьник добился за свою школьную жизнь — это стал победителем на школьном этапе, то это ни о чем. (Это не обозначает, конечно, что школьник очень слабый и потерян для программирования, знаю ряд примеров, когда серьезно заниматься программированием люди начинали в 11 классе или вообще в вузе — и становились сильными программистами — но это как раз-таки это обозначает, что таким людям гордиться именно школьными достижениями нечем.)
Конечно, да, для школьника, особенно младших классов, первый год участвующего в олимпиадах, даже победа на школьном этапе может быть достижением, но он должен понимать, что это в любом случае просто тренировка к более серьезным олимпиадам на будущий год, и что стремиться надо именно к хорошим результатам на будущих олимпиадах. Именно поэтому я и говорю, что школьный и районный этапы — это скорее тренировка.
Ну и отдельно отмечу, что если мы говорим именно про школьника младших классов (младше 9 класса), то у них зачастую в принципе нет конкуренции на школьном этапе. Восьмиклассники, участвующие в олимпиадах по программированию, сравнительно редки, семиклассники тем более, а уж чтобы в одной школе было два восьмиклассника-олимпиадника — такое бывает только в наиболее крутых школах. Соответственно, зачастую восьмикласснику, чтобы победить на школьном этапе, достаточно просто на него заявиться. Чем тут гордиться? Гордиться, конечно, можно своими результатами в сравнении со старшеклассниками, но если восмиклассник решает действительно на уровне хороших девятиклассников, то в принципе у него будут неплохие шансы и пройти на областную олимпиаду.
Помимо изложенных выше причин, есть еще и более существенные, что ли, аргументы, и уже далеко не так привязанные к конкретно моему курсу или моему посту.
Разный уровень школ
Конечно, уровень школьных олимпиад очень сильно варьируется. Победитель школьного этапа (или призер районного) в одной школе/районе, если бы он учился в другой школе, мог бы даже не попасть в топ. Поэтому гордо говорить «я победитель школьного этапа» — странно. Конечно, есть несколько десятков, может быть, сотня-другая школ России, где статус победителя школьного этапа — это действительно неплохо, — но победители школьного этапа в таких школах потом и на регионе выступят очень хорошо, и гордиться будут не победой на школьном этапе, а результатом региона или РОИ.
Поэтому, если уж говорить, что вы победитель школьного этапа, то обязательно надо уточнять, в какой именно школе. И, если вы не учитесь в топовой школе, то внезапно может оказаться, что статус победителя школьного этапа, с уточнением школы, звучит далеко не так гордо.
Тут же, кстати, надо отметить, что и собственно критерии «победителя» и «призеров» тоже очень сильно варьируются. В одном районе «призерами» могут назначать всех, кто набрал 50% баллов, в другом районе — только топ-10% участников. Последний подход, хоть и распространен шире и, в целом, больше соответствует духу Порядка проведения ВсОШ, тем не менее, конечно, странен, потому что тогда квота призеров напрямую зависит от того, сколько участников смогли взять на район, и легко может получиться так, что в двух соседних районах порог призеров сильно разный тупо потому, что в одном районе нашлось больше компьютеров для участников. Это, кстати, справедливо даже про областные олимпиады — несмотря на то, что они проводятся по одним и тем же задачам и тестам во всех регионах, критерии призеров могут быть сильно разными. Пару лет назад один нижегородский школьник сильно страдал, что, набрав 400+ баллов на регионе, он не стал призером, в то время как в Москве призеры начинались от 300+eps баллов. Конечно, здесь в первую очередь виноваты наши нижегородские организаторы олимпиад, но это лишний раз подчеркивает, что статус «призеров» и «победителей» не столь принципиален, и не стоит из-за него сильно переживать. Тем более что, конечно, на следующие этапы отбирают не по статусам, а по набранным баллам.
Рандомность результатов
Далее, на школьном, да и на районном этапе, как правило, есть разные проблемы в организации, да и просто высок уровень рандома. Например, если школьники пишут школьный этап из дома, то никто не контролирует, пишет ли школьник сам, или за него пишет кто-то другой. Если мы считаем школьный этап соревновательным, если считаем, что победа на школьном этапе — это большое достижение, то тогда становятся разумными вопросы и обиды вида «вот я сам все делал и набрал 490 баллов, а за Васю писал папа и он набрал 500 баллов, почему?». Или, аналогично «вот я писал вечером, когда тестирующая работала совсем плохо, и набрал 400 баллов, а Васе повезло, он писал утром, тестирующая хоть как-то работала, и он набрал 500 баллов, перепроведите тур». И так далее, таких вопросов может быть очень много. Именно поэтому я предлагаю считать школьный этап просто отборочным, не соревновательным, и тогда совершенно не важно, сколько там набрал Вася, важно, что конкретный школьник набрал выше нужного порога. И совершенно не страшно, если 1% участников читерят.
(Собственно, именно это и произошло в этом году как минимум в Нижегородской области — тестирующая система работала очень плохо, и поэтому разные школьники писали в разных условиях, и мой исходный пост во вКонтакте был посвящен именно этому.)
Может показаться, что предыдущие абзацы — это наезд на онлайн-систему проведения школьного этапа, но, конечно, это не так. Наоборот, в некотором смысле онлайн-система уменьшает долю рандома и огранизационных проблем. Раньше рандом на школьном, районном, и даже областном этапе был еще сильнее. Я уже не помню в деталях, что было, когда я был школьником, но хорошо помню, как школьный и районный этапы проводились в Нижобласти лет 10 назад, когда я только начинал учить школьников. Тестирование было вручную, без серьезного контроля времени (максимум на глаз), на очень неполном наборе тестов. Так что рандом был всегда, и аналогичные вопросы точно так же могли возникать («Почему в условии было ограничение $N \leq 10\,000$, а реально в тестах не было тестов с $N>10$, и Вася написал тупой перебор и получил максбалл, а я написал решение для $10\,000$, но с багом, и не получил максбалл?» — это реальный случай, хотя там все задействованные участники понимали ситуацию, и именно обид и наездов не было). Не говоря уж о том, что контролировать даже очное проведение школьного этапа в множестве школ никогда не было возможно, я практически уверен, что были неоднократные случаи читерства на школьном этапе в не-крутых школах (и на районном этапе где-нибудь в глухих районах области), причем скорее всего с ведома учителей.
Даже на областной всё такое было — когда я был школьником, типичная ситуация была что в каждой задаче было 5 тестов, и за непрохождение любого теста итоговый балл по задаче снижался в 1.5 раза (т.е. итоговый балл был равен $X/1.5^k$, где $X$ — максимальный возможный балл за задачу, а $k$ — число непройденных тестов). Естественно, рандом тут был тоже очень и очень сильный. Но ситуацию с областными олимпиадами выправили уже довольно давно, когда стали делать единые условия и тесты на всю Россию.
Онлайн-формат, конечно, добавляет возможностей читерить, но зато сильно снижает рандомность, хотя бы за счет того, что набор тестов уже нормальный, условия сформулированы более строго, и т.д.
Олимпиады — не самоцель в принципе
Олимпиады и результаты на олимпиадах — это не самоцель вообще (по крайней мере на начальных уровнях, мы не говорим про межнар). Целью должно быть получение знаний и навыков, причем знаний и навыков, которые где-то еще полезны. Грубо говоря, если уж заниматься программированием, то надо заниматься так, чтобы быть способным писать нормальные программы когда и где надо. Школьный этап во многих школах можно выиграть, не умея вообще хоть как-то нормально писать программы, не обладая минимальными навыками отладки, понимания кода и т.д., а просто тыкаясь в коде наобум. Да, конечно, типичный победитель школьного этапа что-то может, и очевидно может лучше одноклассников, но я бы не сказал, что для какого-нибудь внешнего наблюдателя он сильно выделяется из одноклассников. Он, скорее всего, не сможет написать хоть сколько-то сложную программу, не сможет пройти хоть какие-то собеседования на стажировку или в какие-нибудь школы разработки, и т.д. — в общем, он не сможет применить навыки программиста в реальной жизни. (Еще раз, я говорю про типичного победителя школьного этапа, а не про победителя школьного этапа из топ-100 школ России.) А вот школьник, набирающий 200 баллов на регионе, уже, как правило, действительно что-то может.
Говоря по-другому, любой нормальный программист, будь то сотрудник IT-компании, ученый, использующий программирование для своих целей, или т.п., должен быть способен набрать хотя бы баллов 100 на задачах регионального этапа — возможно, конечно, не с ходу, а после некоторой разумной подготовки (в том же стиле, как готовятся к собеседованиям). Перефразируя известные анекдоты и мемы, если в самолете спрашивают «есть ли среди пассажиров программист», а вы не можете набрать 100 баллов на регионе — значит, вам не имеет смысла откликаться. (Это, конечно, шутка, но в любой шутке есть доля истины.) Поэтому все победы на школьных и районных этапах — это, конечно, полезные начальные шаги, но на практике не особо применимые. А вот некоторый минимальный результат на области — это уже показатель.
Достижения и «достижения»
Наконец, собственно, вся дискуссия насчет моего поста началась с утверждения, что школьникам важно иметь чем гордиться, что любые достижения для школьника важны как подтверждение того, что он что-то умеет, как подтверждение правильно выбранного пути.
С одной стороны да, это оправданно. Но с другой стороны, я в целом считаю, что в современных тенденциях обучения разным «достижениям» уделяется слишком много внимания. Школьник не только должен понимать, что он что-то умеет, он должен также понимать, что он много чего еще не умеет. Поэтому излишняя похвальба, особенно за не очень крупные достижения — это, на мой взгляд, только будет мешать школьнику. Сейчас в целом развелось огромное количество олимпиад, курсов и т.д., которые создают у школьника (и его родителей!) впечатление, что они что-то знают, хотя по факту не требуют особых знаний — и это, на мой взгляд, довольно вредно. В эту же копилку любимые сейчас в школах «портфолио», куда предлагается приносить аболютно любые дипломы и грамоты, без разбора, какие из них ценные, а какие нет.
Всероссийская олимпиада школьников, от школьного до заключительного этапа — это, конечно, серьезная олимпиада, а не какая-нибудь инфознайка, но начальные этапы (в том числе в силу описанных выше причин) все-таки, на мой взгляд, не являются теми достижениями, которые надо сильно праздновать, и не надо искусственно повышать их статус с мотивировкой, что надо же школьнику чем-то гордиться. В конце концов, на начальных этапах обучения стоит гордиться не абсолютными результатами олимпиад, а прогрессом в обучении, допустим, тем, сколько уровней школьник прошел на алгопроге. Да и даже если хотите именно олимпиады, есть много олимпиад начального уровня, которые разумнее организованы и в целом имеют меньше проблем. При этом, конечно, участвовать в школьной олимпиаде надо как только школьник может написать хоть какую-то нормальную программу, но относиться к этому надо сразу как к отбору и/или тренировке, а не как к самостоятельной соревновательной олимпиаде.
Мой курс по алгоритмическому программированию (и подготовке к олимпиадам) для школьников, студентов и всех желающих — algoprog.ru