Conversamos com Andrey sobre programação esportiva, preparação para competições e seu trabalho como treinador. Sob o corte - conselhos úteis e prejudiciais aos participantes da competição, questões de motivação, histórias da competição, atitude em relação ao Exame Estadual Unificado e à escola de programação esportiva em Irkutsk.
Finais do Concurso de Programação da Equipe de Alunos do ICPC em 2016 (fonte: ICPC Live)
Andrey Chumachenko - fundador e líder da comunidade de programação em Irkutsk, aluno de mestrado na ISU em informática fundamental, vencedor das semifinais do campeonato mundial estudantil em programação ICPC - 2018, 2019 (entre os países da CEI), vencedor das Olimpíadas da Sibéria em homenagem a I.V. Pottosina - 2018, 2019 (entre os países da CEI), vencedora das quartas de final do campeonato mundial estudantil em programação (entre os alunos da Sibéria Oriental) - 2018, 2019, vencedora da Altai Universiade em programação - 2019 (entre alunos e escolares da Rússia), finalista do campeonato de programação BSUIR - 2018, 2019.Andrey
chamou a atenção de nossos radares quando conduziu um curso intensivo gratuito sobre problemas de programação esportiva no Ponto de Ebulição de Irkutsk... Como o assunto é quente, decidimos descobrir tudo detalhadamente.
Com o que é comido
- O que é "programação esportiva" e quais tarefas eles estão resolvendo lá agora?
- Para mim, isso é antes de mais nada uma competição, uma preparação para eles e, claro, uma comunidade especial de pessoas.
Afinal, programar para alguém é como o biatlo para Shipulin: esporte real, paixão, fogo.
Quanto às tarefas, tudo é simples: levam aquelas que podem ser resolvidas em cinco horas, principalmente algorítmicas, matemáticas e tarefas de implementação.

2016, os alunos da UrFU acabam de ganhar o campeonato internacional de programação Challenge 24 em Budapeste. Em seguida, sete times da Rússia entraram no top ten (fonte: codeforces.com)
- Qual é a linguagem mais popular na programação esportiva hoje? Meu amigo da Moscow Poly in Applied Informatics (janka2330) estudou programação esportiva como matéria e passou no teste. Diz que foi legal. Eles competiram com outros alunos e enviaram tarefas para spoj.pl (spoj.com) e escreveram em Ruby on Rails.
- O idioma é altamente competitivo. Na maioria das vezes encontro C ++, Java, Python também são populares. Outro "novato" Kotlin vem ganhando força ultimamente. Ruby on Rails, ou apenas Ruby, raramente é usado, mas em algumas competições eles estavam na lista de linguagens suportadas. Eu mesmo sempre escrevo em C ++, e meus alunos também. Parece-me mais conveniente quando você precisa codificar algo rapidamente.
Idiomas mais comumente usados em competições
Como se preparar para vencer
- Conte-nos sobre a preparação para a competição. Você provavelmente tem seus segredos.
- Há vários anos que passei nesta área, percebi que cada um tem a sua forma de treinar. Quanto a mim, isso é prática, resolvendo problemas ao longo do ano. Pode-se fazer uma analogia com aprender a dirigir: quanto mais horas eu patinava, mais experiência ganhava. Então vamos com os alunos. Existem violações das regras, curvas perigosas, excesso de velocidade, mas no final chegamos ao objetivo desejado.
Para desenvolver problemas, usamos codeforces.com , regularmente realizadas rodadas online, durante as quais você precisa resolver problemas que trazem pontos para a classificação do participante.
Em seguida, monitoramos o progresso, comparamos os resultados e configuramos um debriefing para ter mais sucesso na próxima rodada.

Arquivo de problemas de olimpíadas codeforces.com
Também olhamos para acm.timus.ru - o maior arquivo de problemas de programação na Rússia com um sistema de verificação automática. Muitas coisas apareceram no YouTube agora, mas não o usamos regularmente. Se estiver interessado, posso aconselhar um programador polonês bacana sob o apelido de Errichto de lá, ele tem seu próprio canal , lá você pode descobrir um monte de coisas úteis.

O segundo canal do programador polonês sob o apelido de Errichto no YouTube
Bem, e livros, claro, como sem eles: "The Art of Programming" de Donald Knuth, por exemplo. Ou “Problemas de programação de olimpíadas. Guia de preparação de competição "por Steven Skiena e Miguel Revilla.
Life hacks para o participante
- Ok, o que pode impedir você de vencer a olimpíada de programação esportiva?
- Provavelmente o inimigo de todos os alunos é a preguiça (brincadeira). Mas, falando sério, você precisa se concentrar nas tarefas e desligar brevemente a parte do cérebro que é responsável por todos os tipos de atividades diárias.
Também é muito prejudicial treinar na noite anterior à competição, especialmente se você não se preparou por um ano.
Pelo contrário, eu aconselharia a fazer uma pausa de uma semana e não decidir nada. Se você trabalhou bem por muito tempo, o cérebro durante o resto colocará as coisas em ordem nos arquivos acumulados.
Nas próprias competições, é um grande erro não dar ouvidos ao seu comando e correr à frente da locomotiva. Isso ameaça com multas e problemas semelhantes. Bem, os programadores perfeccionistas correm o risco de bagunçar uma tarefa em busca da solução perfeita e código limpo. Isso não significa que você precise fazer tudo de qualquer maneira, mas o principal é não exagerar.
- O que você precisa fazer para vencer?
- Pelo que eu sinto, para ter sucesso você precisa ficar um pouco bravo, mas no início da carreira - tenha uma atitude tranquila, além de seguir o plano.
Quando se tornar um programador
- Conte-nos sobre sua trajetória na programação esportiva.
- Acho que comecei a mergulhar neste assunto bastante tarde: foi apenas nas séries finais da escola que comecei a estudar seriamente C ++ e a participar das Olimpíadas promovidas pelas universidades de Irkutsk. Aí, já tendo entrado na ISU, conheci um professor que apoiava o movimento de programação esportiva, e comecei a estudar com ele. Então, aos poucos, a programação esportiva para mim deixou de ser apenas um hobby, levei a sério, passei a participar ativamente de competições e me tornei treinador.

Andrey examina um dos problemas da Olimpíada no campo de treinamento de Irkutsk em agosto
- você acha que é tarde demais para começar no ensino médio? A programação pode realmente ser comparada a um esporte profissional, no qual as crianças são enviadas quase a partir dos três anos?
- Claro, não o suficiente para colocar uma criança em três anos para aprender algoritmos, embora se de repente ela achar interessante, então seja bem-vindo. Eu até conheço alguns tutoriais de programação para pré-escolares.
Mas, além de alunos do ensino médio, alunos e programadores já consagrados, nas competições conheci caras da quinta ou sexta série, que não são inferiores em conhecimento aos alunos, e até apreendem tudo na hora.
Portanto, quanto mais cedo melhor.
O exame é um assunto delicado
- Desde que começamos a falar sobre crianças em idade escolar, como você se sente sobre o Exame Estadual Unificado e padrões semelhantes pelos quais o conhecimento é medido? Afinal, a programação é uma especialidade criativa, embora puramente técnica.
- Definitivamente sou a favor do fato de que as disciplinas nas escolas, e principalmente nas universidades, eram opcionais, e uma pessoa podia escolher entre todas as que quiser. É muito mais agradável estudar desta forma, e o resultado é óbvio - você não pode comparar quando você faz tudo debaixo de uma vara.
Quanto ao Exame de Estado Unificado, este é um assunto delicado. Aqui posso contar a história de outro artigo.
O Unified State Exam, na verdade, contém algumas tarefas interessantes e úteis quando se trata do exame de matemática ou ciência da computação. Sim, não é perfeito, há falhas, experimentos, não há abordagem individual, mas de outra forma, o conhecimento de massa dos graduados não pode ser apreciado. O Exame Estadual Unificado tem falhas, mas nada melhor foi inventado ainda.
As admissões nas universidades também são feitas principalmente por professores, mas há menos objetividade e padrões, tudo é controlado por um pequeno grupo de pessoas. Com essa abordagem, não quero nem falar sobre corrupção, suborno e encher o saco de pessoas indesejadas.
Agora você pode entrar nas universidades com base nos resultados das Olimpíadas. E isso é bom para os melhores alunos, para 10%. E quanto ao resto? Apenas o exame.
Sim, existem olimpíadas simples de terceiro nível na lista, mas geralmente são ainda mais estranhas ou apresentam problemas do exame.
Outra coisa é a atitude e a apresentação do exame. Toda aquela histeria que é apanhada por pais, sociedade, professores, acima de tudo. É muito. Os mesmos professores costumam ser completamente incompetentes na preparação dos alunos para o exame. Não é sobre a dificuldade do exame - não há nada de sobrenatural nisso. A questão está no nível fraco dos professores, seus salários, a atitude do Estado em relação a eles. Os escolares também sofrem ao longo da cadeia.
Sobre os padrões em geral - é claro, a educação deve caminhar para a flexibilidade. Como eu disse, seria bom que os alunos escolhessem eles próprios as disciplinas de seu interesse. O exame não é ruim nesse aspecto: você pode fazer qualquer número de matérias. Mas o ideal é aprender a olhar para o aluno como um indivíduo.
- Você não vê um estereótipo semelhante na avaliação do conhecimento em olimpíadas de programação? Ou tudo está diferente aí?
- A essência dos problemas das Olimpíadas reside em sua imensa não padronização. Sim, de vez em quando você se depara com as tarefas de "acordeão de botão". Existem tarefas para algoritmos e técnicas fundamentais padrão. Mas o mais importante nas olimpíadas é saber aplicar essas técnicas, combiná-las, chegar ao ponto de usá-las e ver a ideia matemática de uma solução. Esta é definitivamente uma habilidade única que vai além de todos os modelos.
Por que os alunos aprendem programação esportiva
- Qual a motivação de alunos e escolares para ingressar em comunidades de programação esportiva e participar de olimpíadas? O que a programação esportiva pode ensinar a eles, que habilidades ajuda a desenvolver?
- A motivação é completamente diferente: alguém veio para aprender uma linguagem de programação e adquirir mais prática e conhecimento algorítmico, alguém quis então testar a si mesmo e sua força (a participação nas Olimpíadas é outro teste). Alguns recolhem carteiras para ingresso em uma universidade ou para trabalhos futuros, querem ser notados pelas empresas de TI durante as competições. Existem aqueles que vêm por uma questão de comunicação, para apoiar e desenvolver a comunidade.
. , , .
E, claro, trabalho em equipe, aqui tudo é como um adulto: para levar seu projeto à implementação, você precisa ser capaz de trabalhar com eficácia em equipe. Bem, o desenvolvimento dentro da programação (conhecimento da linguagem, algoritmos) não foi cancelado.
- O que você está fazendo na sua comunidade de programação esportiva?
- Hoje treino alunos, vamos às olimpíadas e competições de programação esportiva. Entre meus alunos estão os vencedores das quartas de final do campeonato mundial de programação estudantil (entre os estudantes da Sibéria Oriental) 2019, vencedores do site siberiano das semifinais do campeonato mundial de programação estudantil ICPC 2019, vencedores do Altai Universiade na programação de 2019, finalistas das Olimpíadas de Pottosin 2018 e 2019.
Há planos de criar uma escola de programação esportiva completa onde seja possível estudar com crianças a partir da quinta série. Esperamos lançá-lo em outubro.
Eu também tento construir conexões com empresas de TI para conseguir oportunidades de emprego para meus alunos.
Além disso, estamos organizando competições de programação e, não faz muito tempo, realizamos um intensivo que durou 11 dias. Quase todos os dias havia uma competição de cinco horas, seguida de análise de problemas - os chamados trabalhos sobre erros, e palestras (um pouco de teoria sobre algoritmos). Eu e meu amigo do MEPhI atuamos como treinadores. Os participantes do intensivo foram alunos do centro de treinamento ENTER Olympiad de Ulan-Ude (República da Buriácia) e alunos de Irkutsk, que participam regularmente de olimpíadas de programação esportiva.

— . , , . : , , . — — , , . : ? — , , …
- Eu acho que está bom. Sim, você precisa trabalhar rápido, mas ao mesmo tempo com clareza, pois senão o sistema não aceitará a tarefa. Para a resposta errada, também existem penalidades que ninguém quer receber. Você precisa estar atento aos detalhes, para que o nível de compreensão do problema seja bombado perfeitamente entre as Olimpíadas.
A limpeza do código às vezes é prejudicada, pois o ciclo de manutenção é de apenas cinco horas, mas quanto mais experiência um membro tem, mais de perto ele segue o código.
- Compartilhe histórias interessantes da competição.
- Todas as nossas histórias engraçadas geralmente estão relacionadas a tarefas. Por exemplo, uma vez eu lutei com uma solução por um longo tempo, porque não percebi que a frase nenhuma solução precisava ser exibida com as letras reorganizadas em um lugar - sem solução.
Ou, nas quartas de final do Campeonato Mundial do ano passado, enviamos o problema ao sistema para verificação dois segundos antes do final da competição, e no final o problema foi resolvido com sucesso. Essas coisas sempre acontecem com emoções que apenas adicionam excitação.
Um minuto de publicidade sobre nosso acelerador de projetos de IA.
Começamos a aceitar inscrições para o Archipelago 20.35 - um curso intensivo educacional para quem faz projetos usando aprendizado de máquina e métodos de análise de dados. O projeto pode ser comercial, social, científico - ou escreva sua versão. No Arquipélago 20.35, haverá uma grande chance de melhorar a si e ao seu projeto, montar uma equipe, conseguir uma bolsa, encontrar um patrocinador, já que fundos de desenvolvimento e empresas que estão implementando IA manifestaram interesse em empreendimentos.
O programa de treinamento de seleção e pré-aceleração é gratuito. E se você escrever sobre seu projeto no Habré, você ganha um bônus na classificação de qualificação! Contaremos sobre os projetos mais interessantes em nosso blog.
