Um_nik's blog

By Um_nik, history, 3 years ago, In Russian

В связи с финалом ICPC в Москве журналисты пытаются писать что-то про спортивное программирование. Меня (а также manoprenko и Farhod) попросили ответить на несколько вопросов для целевой аудитории школьников, которые могут быть заинтересованы в олимпиадах по информатике и спортивном программировании, а также их родителей. Результат можно почитать здесь, а я хочу выложить свой оригинальный текст, который я отправил журналистам. Обратите внимание, что и текст ТАСС, и мои ответы не предназначены для спортивных программистов, но могут быть интересны/полезны для той аудитории, которая была заявлена целевой. (я не понял, как сделать так, чтобы после [cut] нормально отобразился заголовок, поэтому здесь есть этот текст). Алсо спасибо lperovskaya за помощь в редактуре.

Как вы начинали изучать программирование? В каком возрасте? Что именно делали (собирали конструкторы и писали программы, сразу учились писать настоящий код?)

Формально именно "программирование" я начал изучать в 9 классе, после перехода в СУНЦ УрФУ (Специализированный Учебно-Научный Центр Уральского Федерального Университета (Екатеринбург), школа для "одарённых" детей. Также СУНЦы есть при МГУ (Москва) и НГУ (Новосибирск), при них есть интернаты, в СУНЦ МГУ большая часть учеников из разных городов со всей России, и, если я не ошибаюсь, ученики из Москвы тоже живут в интернате при школе. У нас ситуация была не совсем такая, примерно половина учеников жили в Екатеринбурге в своих домах, остальные были из разных городов, в основном Свердловской области, либо близлежащих регионов). Родом я из небольшого закрытого города Новоуральск в Свердловской области, до 9-го класса я учился в хорошей школе в Новоуральске, но информатики у нас не было, как и преподавателей серьезного уровня. Но на самом деле дело в основном не в преподавателях, а в учениках вокруг тебя. В обычных школах дети, которые интересуются учебой и участием в олимпиадах, чаще становятся изгоями, а у учителей нет на них времени, потому что надо подтягивать двоечников до приемлемого уровня, а не выводить лучших на мировой уровень. Когда я попал в среду, где все в классе имеют те же склонности и интересы в точных науках, что и ты, завёл друзей, которым было интересно обсуждать со мной математику, прогресс стал намного более стремительным. Жизнь в интернате тоже помогает, потому что ты постоянно остаёшься в этой среде заинтересованных людей, а не возвращаешься домой к родителям. Мама всегда поддерживает меня, она дала мне возможность развиваться в том, что мне нравится, но после какого-то времени я уже не мог обсуждать с ней задачки. Поэтому возможность учиться и жить в СУНЦе и почти круглосуточно общаться "со своей стаей" была очень полезна.

Я сказал, что "формально" начал изучать программирование в 9 классе, потому что программирование, особенно спортивное программирование и алгоритмы, стоит на плечах математики. Математикой я начал интересоваться с 6 лет, очень рекомендую книги "Занимательная математика" Перельмана (и другие из его серии) и "Как же называется эта книга?" Смаллиана, их точно можно читать в 7-8 лет: не обещаю, что все будет понятно, но если у вас есть тяга к математике, то точно будет интересно. В олимпиадах по математике я участвовал с младших классов школы, помню ежегодный конкурс "Кенгуру". Это, конечно, не настоящая серьёзная олимпиада по математике, но тоже неплохо. Сколько я себя помню, я всегда любил математику, и к моменту поступления в СУНЦ был достаточно хорош в ней.

Именно программированием и олимпиадами по программированию я стал заниматься уже после поступления в СУНЦ, и познакомили меня с этим не преподаватели, а одноклассники: я начал изучать язык программирования Pascal под руководством моей подруги, она же показала мне сайт с задачами по олимпиадному программированию timus.online. Самые простые задачи отлично можно использовать для изучения основ языка программирования, в моём случае — Pascal. Когда я освоил совсем базовые вещи, такие как ветвление, циклы, массивы, со мной начал обсуждать задачки другой мой одноклассник — Никита Сивухин (sivukhin), в будущем золотой медалист IOI (Международная Олимпиада по Информатике), мой сокомандник и серебряный медалист финала ICPC 2016. Олимпиады по информатике — это, по сути, олимпиады по некоторым разделам математики + алгоритмы + специфичное мышление + компьютер, поэтому, хоть я и делал только первые шаги в программировании, со мной можно было обсуждать задачи, потому что я был сильным математиком. Через полгода после начала изучения Pascal, я уже мог относительно успешно участвовать в локальных олимпиадах (результаты моей первой олимпиады, я на 17-м месте). Правда, с тех пор уровень школьных олимпиад сильно вырос, вряд ли я смог бы так же за полгода достичь ненулевых результатов в 2021. Фактически, к той олимпиаде я не знал почти ничего, зато один из самых базовых алгоритмов — двоичный поиск — я придумал в ходе самой олимпиады, что позволило мне решить на одну задачу больше и было большим поводом для гордости.

После 9 класса я уже был интересным кандидатом для команд СУНЦ, и командные олимпиады, пожалуй, были тем фактором, которые влюбили меня в спортивное программирование. Я активно участвовал в олимпиадах по физике и математике, но там ты просто 4 часа проводишь наедине с задачками и бумагой. Командные олимпиады по спортивному программированию дают совершенно другие ощущения — это работа в команде, обсуждение задач, разные люди дают разные взгляды на задачу, это очень увлекательно. Ещё один фактор, который делает соревнования по программированию (не только командные) более увлекательными и более похожими на спорт, — это то, что результаты соревнования обновляются в реальном времени, это даёт гораздо более сильное ощущение соперничества с конкретными людьми, нежели только с задачами.

Я уже сказал, что подготовка к олимпиадам по программированию это на 50% подготовка к олимпиадам по математике, но на самом деле любое интеллектуальное развитие помогает, да и не интеллектуальное наверное тоже (это мне сложнее оценить на своём опыте). Многие топовые спортивные программисты успешно играют в интеллектуальные игры (по типу Что?Где?Когда?), в шахматы, умеют играть на музыкальных инструментах и т.д.

Олимпиады — кому полезны, и что именно дают? А кому и в каких случаях не полезны? По вашему мнению, как родителям/взрослым понять: кого развивать в спортивном программировании, а кого — нет?

Мне кажется, что единственная адекватная причина заниматься спортивным программированием на серьёзном уровне, — это если человек хочет им заниматься и, в некотором смысле, просто не может иначе. Лично я получаю огромное удовольствие от процесса решения задач, поэтому я этим занимаюсь. Я не заставляю себя решать задачки через силу чтобы стать лучше: если прямо сейчас я не хочу решать задачки, то я могу посмотреть Brooklyn Nine-Nine или поиграть в Зельду. Если внутреннего желания нет, то это не имеет никакого смысла. Это хорошо сформулировал Матеуш Радеки (Radewoosh) (золотой медалист финала ICPC 2019).

По моему мнению, родители должны детям рассказать и показать, в чём вообще можно развиваться, а выбрать ребёнок должен сам, и выбирать нужно не по будущей зарплате, а по тому, к чему лежит душа. "Выбери себе работу по душе, и тебе не придётся работать ни одного дня в жизни". Звучит глупо и претенциозно, но для меня это не пустые слова. Это сейчас может выглядеть как "совет" от человека, который никогда не знал нужды, ведь айтишники зарабатывают деньги, несравнимые с другими профессиями, но это не так. Я не из богатой семьи, и 5 лет я жил на какие-то специальные стипендии, призовые со соревнований (которые во многом случайны) и какие-то нерегулярные подработки типа преподавания в летних школах. Сейчас я сделал спортивное программирование своим источником заработка, но это стало возможно только потому, что 8 лет перед этим я решал задачки, потому что у меня горели глаза, и я за это время стал весьма хорош (глаза продолжают гореть и сейчас).

Как вас изменили олимпиады? Что они привнесли в вашу жизнь?

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

Как не выгореть и не убить мотивацию?

Мотивация не должна быть внешней (результатами, рейтингом, поступлением в университет, строчкой в резюме etc.), тогда она не сможет умереть от внешних воздействий. А если умерла внутренняя мотивация, то значит пришло время заняться чем-то другим.

После тренировочных сборов всегда хочется отдыхать, и ученики у меня спрашивали, что делать. Я отвечаю, что если хочется отдыхать, значит нужно отдыхать. Когда желание решать задачи вернётся, идите решать задачи. Если оно не вернётся, то не возвращайтесь к решению задач только потому что это кому-то надо. Если это не надо вам внутри, то кому это надо?

От чего придется отказаться ради спортивного программирования?

От душевного спокойствия когда долго не решаешь задачи (см. выше). Но на самом деле если у вас было это душевное спокойствие, то вам не нужно спортивное программирование.

Конечно, достижение высоких результатов требует больших вложений времени. От чего конкретно придётся отказаться определённому человеку зависит от того, чем они занимали это время.

Вам помогут олимпиады и победы в них в будущем? Будет ли это преимуществом при поступлении? При поиске работы?

Да, наверное.

Есть олимпиады из списка ректоров, которые дают поступление в вуз без экзаменов. Есть всероссийская олимпиада школьников, с ещё более сильными эффектами. Многие вузы предлагают повышенную стипендию абитуриентам победителям олимпиад. Но мне кажется глупым занятием участвовать в олимпиадах ради поступления в университет. В университет можно поступить по ЕГЭ, подготовиться к ЕГЭ куда проще. Есть, конечно, фактор того, что на ЕГЭ нужно с первого раза сделать всё хорошо, а олимпиад много. Но я всё равно не считаю, что оно того стоит.

Не знаю, смотрят ли HR-специалисты на олимпиады в резюме, но технические интервью в IT-компаниях это примерно олимпиадные задачи, причём не особо сложные. Я не знаю, почему так, я не вижу в этом никакого смысла, но оно так есть, поэтому да, я мог бы пройти техническое интервью примерно в любую компанию, и меня регулярно зовут. Я не хочу. Наверное, работа в IT — это действительно мечта многих людей. Какая доля этих людей мечтает о высокой зарплате, а не об интересных задачах на работе — это другой вопрос.

И, как я уже сказал, спортивное программирование — это далеко не самый прямой путь ни в вуз, ни в IT-компании. Заниматься им стоит только если это греет душу. Вообще чем-либо стоит заниматься только если это греет душу.

  • Vote: I like it
  • +122
  • Vote: I do not like it