
Como parte do projeto AichiHype, gravamos uma
entrevista em vídeo com Andrei Stankevich , o lendário treinador da equipe de programação esportiva da Universidade ITMO , que vence todos os anos em competições internacionais.
E para aqueles que não estão muito interessados na versão em vídeo, preparamos uma transcrição detalhada da entrevista, onde Andrei fala sobre as nuances da programação esportiva, preparando os alunos para as Olimpíadas, educação russa, salários e reuniões com presidentes.
Sobre a programação da Olympiad
Stas Tsyganov: Vamos primeiro falar sobre a programação da Olimpíada. Diga-me o que são os torneios e quais são as regras para essas competições?Andrew : O maior torneio da programação da Olimpíada é o campeonato mundial entre os estudantes. Tem a história mais longa. Começou, nem mesmo eu, ou você, provavelmente, não estava lá, nos anos 70 do século passado, como um torneio de faculdades americanas.
Este é um torneio por equipes, agora já é o campeonato mundial internacional. A final acontece todos os anos em um país diferente. No ano passado eu estava em Pequim. Lá, o time da Universidade Estadual de Moscou se tornou o campeão. Este torneio foi ganho recentemente apenas por estudantes russos. E nossa universidade, ITMO, Universidade Estadual de São Petersburgo e Universidade de Moscou, estão ganhando nos últimos sete anos.
Era originalmente um torneio americano, e era um torneio por equipes. Existem equipes de três estudantes que resolvem problemas por um tempo. A competição dura cinco horas. Você terá 11 a 13 tarefas, precisará resolver o máximo possível. Mais ao longo do tempo de penalidade. Uma multa é a soma do tempo necessário para resolver todos os problemas.
Stas: Acontece que quanto mais cedo a tarefa for concluída, menor será o tempo de penalidade?Andrew: Quanto menos, sim. Precisa mais rápido.
Stas: E pelas tentativas?Andrew: Para tentativas de retirada também. Há uma penalidade de 20 minutos se você tentar resolver o problema errado. Você pode tentar resolvê-lo quantas vezes quiser. E imediatamente o resultado é relatado - certo ou errado.
Stas: É interessante discutir linguagens de programação. Quando eu era estudante, resolvia problemas em nossa casa, onde era necessário conhecer o tamanho e a velocidade. Isso impôs restrições em algumas linguagens de programação.Andrei: Agora ainda há limites de tempo, mas não o tamanho. Há uma restrição condicional no tamanho da fonte, mas é muito grande, quase ninguém a alcança. Basicamente, agora todos usam o C ++ como uma linguagem poderosa, rápida e flexível.
Mas ele também tem suas desvantagens especificamente para as Olimpíadas. Essas desvantagens não são apenas para olimpíadas, mas também para programação real. É difícil procurar erros no código C ++. É mais difícil entender exatamente onde seu programa falha e assim por diante. Mas, no entanto, devido à velocidade, todo mundo está realmente usando agora.
Existem equipes que usam Java. Nesse sentido, é mais fácil encontrar erros, mais memória controlada, mais código controlado. Porém, mais lixo sintático, programas mais longos acabam. E eles trabalham um pouco mais devagar por causa da máquina virtual.
Eu mesmo tentei ensinar as equipes da nossa universidade em Java há cerca de 10 anos, usamos Java ativamente. Mas desde então, o C ++ também deu um passo adiante.
E outra linguagem de programação que as crianças em idade escolar usam mais é o Python. É muito mais lento, é ainda mais difícil cumprir o prazo. Mas existem programas muito compactos, eles são muito rápidos de escrever.
Às vezes, quando o limite de tempo não desempenha um papel nas tarefas, o Python é escolhido. O tempo de penalidade não é dado pela duração do programa, mas pelo tempo desde o início da competição até que você passe na tarefa. Portanto, é importante escrever mais rapidamente.
E o último idioma que foi adicionado à Copa do Mundo no ano passado é o Kotlin.
Stas: Eu sei que muitas vezes há uma pessoa em uma equipe responsável pela parte matemática da tarefa. Quaisquer outros papéis?Andrew: Isso acontece de maneira muito diferente. Cada equipe tem sua própria composição única. Existem vários modelos de sucesso. Um é realmente um matemático que resolve problemas. Na verdade, ele já foi longe o suficiente da matemática, porque, no entanto, as tarefas do programador, algoritmos e estruturas de dados também estão presentes. Essa pessoa cria algoritmos, cria idéias.
E o resto dos codificadores. O que significam codificadores? Eles também devem conhecer esses algoritmos muito bem, porque não serão capazes de programar o algoritmo linha por linha sob o ditado deste matemático. Quando ele resolverá os problemas de maneira diferente? Eles se concentram mais em algoritmos, na implementação, em como escrever código com cuidado para que ele funcione imediatamente, para que você possa encontrar rapidamente um erro se algo não funcionar. Existe esse modelo.
Outras equipes - as equipes de ITMO mais bem-sucedidas - trabalharam em um modelo diferente quando as três pessoas na equipe são codificadores muito legais. E os algoritmos também sabem. Alguns deles são melhores, outros são piores, outros são especializados em geometria, outros em estruturas de dados complexas, outros em strings. E eles estão prontos para substituir um ao outro em coisas mais simples.
Matemático dedicado - sempre existe um perigo de que ele não decida algo, e é tudo. Não foi o seu tema que apareceu. E assim, quando todas as três pessoas entendem, têm uma idéia, parece-me que essas equipes são mais confiáveis.
Sobre olympiadnikov
Stas: Você falou sobre o fato de que essas são principalmente competições de estudantes. Até onde eu sei, em algumas competições existem certas regras nas quais um atleta não pode participar mais do que em um determinado número de torneios. Qual o motivo disso?Andrew: Realmente. Isso se aplica principalmente ao campeonato mundial entre os estudantes. Existem duas limitações. Em primeiro lugar, você não pode participar mais de duas vezes na final e mais de cinco vezes em geral. Em qualquer competição qualificatória - não mais que cinco vezes.
A idéia principal dessa regra era que mais e mais estudantes deveriam se juntar a esse movimento. Por exemplo,
Gennady Korotkevich me procurou pelo primeiro ano, e é tudo, por seis anos estou livre, posso relaxar, beber chá e ver como Gena ganha tudo consecutivamente. Não, eu tenho que lembrar o tempo todo que apenas duas vezes ele pode se apresentar nas finais. Durante esse período, tenho que preparar uma mudança, novos participantes que serão os melhores no próximo ano, depois que os principais sairem agora. Este é o primeiro.
Por exemplo, Gennady Korotkevich me procurou no primeiro ano, e é tudo, por seis anos estou livre, posso relaxar, tomar chá e ver como Gena ganha tudo
Segundo, você não pode viver para sempre apenas com essa programação da Olympiad. Precisa seguir em frente. Para que todo aluno entenda que ele realmente irá para a final duas vezes, tente vencer. Mas ele continuará a ter uma vida diferente. Ele deve se envolver em ciência, ou entrar na indústria, ou se envolver em educação, ou algo mais. Ela definitivamente não poderá estudar as Olimpíadas ad infinitum.
Stas: Obviamente, o código que foi escrito no torneio não será usado em nenhum outro lugar. Pode não ser escrito no melhor estilo. O mais importante é que ele execute a tarefa, caber no tempo reservado. Mas na indústria, eles não escrevem código assim.Andrew: Os Jogos Olímpicos e o código industrial estão em contato com o fato de usarem as mesmas linguagens de programação e algoritmos. Mas há muitas diferenças.
Não que você precise procurar por empresas olímpicas para conseguir imediatamente um funcionário que escreva o código perfeito. É benéfico para a empresa obter esse código perfeito. Eles desenvolvem suas diretrizes, eles têm seus próprios princípios, como a programação funciona. Quando contratam uma Olimpíada, conseguem uma pessoa que pensa bem. E ele terá que adaptar seu código, estilo de escrita e assim por diante enquanto estiver trabalhando na empresa.
Quando uma empresa é contratada, ou seja, uma seleção de candidatos para esse cargo. Eles devem escolher o que melhor se adequa à empresa. Existe um nível médio de pessoas que os procuram. Existe algum tipo de variação. Esse nível médio no ambiente das olimpíadas é alterado, porque as pessoas já são treinadas, bem versadas em algoritmos e pensam mais rapidamente.
Stas: Eu estava familiarizado com os participantes da Olimpíada de Matemática da Rússia. E eles me disseram que os problemas das olimpíadas são muito diferentes do que ensinam na universidade. Como isso funciona na programação das olimpíadas?Andrei: Inicialmente, os problemas das olimpíadas são modelos simplificados de problemas reais. As pessoas que vieram e fizeram as tarefas - eram principalmente pessoas da ciência que fizeram algumas coisas, projetaram-nas nas tarefas das olimpíadas, de alguma forma simplificadas, reformuladas. Quando eu estava escrevendo uma dissertação, um dos algoritmos também foi dado como um problema de olimpíada.
Mas acontece que algumas tarefas de algumas competições, especialmente em um nível mais baixo, já foram pensadas por algum motivo: vamos encerrar, isso, isso, será um problema das olimpíadas, você pode dar. Tradicionalmente, consideramos as competições em que eles não fizeram isso e onde muitos membros do júri notaram tarefas interessantes de suas práticas e as transformaram em olimpíadas mais interessantes.
Stas: Já aconteceu que, nas Olimpíadas, eles tomam como tarefas mais difíceis alguns problemas cujas soluções ainda não foram resolvidas? E se uma solução for encontrada, ela será usada na indústria.Andrew: Sim e não. Em competições olímpicas clássicas como o Campeonato Mundial de Programação, elas não fazem isso. Sempre existem tarefas claras: o autor da tarefa conhece sua solução. Essa poderia ser uma nova abordagem para todos os outros. Acontece que ele chegou a ter uma nova classe de problemas. Mas sempre deve haver uma solução.
Mas há competições mais longas, maratonas, nas quais são dadas tarefas pelas quais a solução não é conhecida exatamente. E os patrocinadores dessas competições costumam ser todos os tipos de empresas interessantes, como a NASA. Eles fornecem tarefas, talvez também simplificadas, mas com uma solução exata desconhecida. E a equipe, os participantes competem, que melhor apresentem uma solução para esse problema. E então, talvez, eles estejam tentando aplicá-lo de alguma forma.
Sobre o trabalho de um treinador
Stas: O que faz um treinador funcionar?Andrew: Na verdade, evolui com o tempo. Quando há 15 anos, no início dos anos 2000, eu estava apenas começando a trabalhar como treinador, havia minhas tarefas. Então, o principal trabalho do treinador era contar alguns algoritmos, alguns truques na programação. Ou seja, para preparar uma equipe de um ponto de vista fundamental, fale sobre como resolver problemas. Encontre tarefas de treinamento, configure um sistema de treinamento.
Agora, existem muito mais desses cursos. No campo da educação em ciência da computação, experimentamos um certo salto e agora existem muitos bons cursos nas universidades russas. Os alunos já estão mais preparados, estavam se preparando para as olimpíadas na escola, estavam em diferentes escolas de verão e foram para um círculo. Algoritmos são principalmente pessoas que já conhecem.
Encontrar um treino também não é problema agora. Existem arquivos online com muitas das melhores competições dos últimos anos, que podem ser resolvidas no modo de competição virtual. A qualquer momento, você pressiona e compete com todas as equipes que já decidiram esta competição.
Portanto, agora o principal trabalho dos treinadores é mais no campo do plano organizacional e da motivação da equipe. É necessário descobrir de quem exatamente formar uma equipe, motivar os alunos a fazer isso. Além disso, na universidade, muitos não estão interessados em olimpíadas, realizam estágios, já estão tentando planejar uma carreira e assim por diante.
Novamente, formar uma equipe não é tão simples, porque os membros da equipe devem se complementar, a equipe deve ter um bom clima psicológico. O trabalho do treinador agora está mudando mais para as atividades organizacionais. Mas, especificamente, eu continuo executando cursos na universidade relacionados ao conteúdo. E existem treinadores que não estão diretamente conectados ao conteúdo, à teoria, à ciência da computação, mas fazem o trabalho organizacional. E alguns assistentes cobrem problemas de conteúdo.
Os membros da equipe devem se complementar, a equipe deve ter um bom clima psicológico.
Stas: Em outros esportes, especialmente em esportes coletivos, há clubes e equipes nacionais. Os participantes desses clubes que representam o país são selecionados para a equipe nacional. Existe algo semelhante na programação das olimpíadas?Andrew: Esse não é o caso nas competições estudantis. Não há equipes nacionais. São precisamente os representantes das universidades que estão competindo por lá. Naturalmente, a universidade ainda está localizada em algum país. Portanto, quando um time de uma universidade russa vence a Copa do Mundo, é claro que toda a comunidade russa vence. Mas é precisamente a competição dos países - não existe esse formato.
Mas os alunos simplesmente têm. Os alunos têm uma olimpíada escolar internacional e quatro pessoas de cada país podem vir e se apresentar, representando seu país. Temos todo um sistema de preparação para esta Olimpíada. Selecionamos crianças em idade escolar para a Olimpíada de Toda a Rússia. Depois os colecionamos, treinamos em campos de treinamento especiais. E lá selecionamos os melhores para ir ao país. Tínhamos quatro pessoas este ano. Duas medalhas de ouro e duas de prata. Além disso, esse resultado é considerado não muito bom. Lutamos apenas por medalhas de ouro em competições escolares.
Stas: Isso também é uma competição por equipes?Andrew: Não, há uma competição pessoal. Todo mundo fala por si mesmo, mas no final todo mundo assiste como as crianças de cada país falaram em medalhas. A propósito, interessante sobre as medalhas, quero contar. Todo mundo que assiste a algum tipo de esporte, como o atletismo, pensa: há uma medalha de ouro, uma de prata, uma de bronze e é tudo. Três prêmios.
Nas competições escolares em ciência da computação, em matemática não é assim. Lá, as medalhas são concedidas com bastante generosidade. Cerca de metade dos competidores recebem medalhas. E, portanto, há um valor particular uma medalha de ouro, que recebe 1/12 dos participantes da competição. Nas Olimpíadas das escolas internacionais, você precisa entrar no top 28. Grosso modo, entre os 30 melhores do mundo.
Os alunos recebem medalhas como esta. Para os quatro melhores lugares - ouro, quatro - prata, os próximos quatro - bronze. 12 prêmios.
Sobre suporte e prêmios
Stas: Falando dos vencedores, além das medalhas, o que pode ser ganho em tais competições?Andrew: Em geral, os prêmios não são muito grandes. Houve um aumento nos prêmios em algum momento entre 2007 e 2008, quando grandes empresas patrocinadoras vieram, em particular a Microsoft, a IBM. Eles começaram a aumentar os prêmios por um tempo. Então começou a declinar um pouco, e agora os prêmios são principalmente simbólicos.
Em uma competição pessoal realizada por empresas, Google ou Yandex, há um prêmio pelo primeiro lugar - algo em torno de 5 a 10 mil dólares. E para o segundo e mais baixo - prêmios quase simbólicos. Na final da Copa do Mundo, o prêmio de primeiro lugar na equipe é de cerca de 15 mil dólares, e eles também diminuem rapidamente. Apenas medalhas recebem prêmios. Por uma medalha de bronze - 3 mil dólares por prêmio da equipe.
Ninguém competirá por prêmios, porque esse dinheiro pode ser ganho em programação muito mais, muito mais fácil do que participar de competições, treinando por vários anos.
Em vez disso, além de medalhas, algum tipo de RP, glória, mérito. Algumas reuniões, às vezes com altos funcionários do estado. Alguns prêmios já estão em seu próprio país, talvez na universidade. Mas o apoio financeiro geral agora não é muito grande.
Sobre a educação russa
Egor Tolstoy: Andrei, como os estudantes devem estar preparados para a programação esportiva das Olimpíadas? E como está organizado em nosso país agora?Andrew: Existem dois aspectos nessa questão. Em primeiro lugar, dependendo de qual propósito. Há crianças em idade escolar que participam principalmente de olimpíadas para entrar na universidade. Eles, é claro, precisam entender aproximadamente o seu nível. As Olimpíadas também são de níveis diferentes. E é necessário resolver os problemas desse plano, encontrados nas Olimpíadas que ele escolheu. Aprenda algoritmos, programe, participe de competições, resolva competições online.
Para os participantes que já estão no nível mais alto e pretendem vencer a Olimpíada de Toda a Rússia ou passar para a Olimpíada internacional - tudo realmente se transforma em esporte por lá. Programação esportiva. Você precisa estudar seriamente, pelo menos duas vezes por semana, ir a algum clube, realizar competições online, se não houver clube na cidade onde o aluno está localizado.
Egor: O sistema de ensino de informática, que agora está disponível nas escolas secundárias comuns, de alguma forma leva os rapazes a isso? Ou você precisa procurar conscientemente alguns círculos, como você disse?Andrei: Parece-me que na maioria das escolas na Rússia agora a ciência da computação não está no mais alto nível. Isso não é compartilhado, mas a ciência da computação inclui não apenas programação. As Olimpíadas entre crianças em idade escolar - a maior parte está concentrada precisamente no aspecto da programação. É necessário não apenas criar um algoritmo e depois programá-lo.
Ao mesmo tempo, a ciência da computação na escola, além da programação, inclui, em primeiro lugar, as coisas necessárias para a Olimpíada e geralmente úteis - ciência da computação teórica, teoria da informação, funções, algumas dessas coisas. Naturalmente, em um nível básico, mas mesmo assim. Há também coisas para o usuário: trabalhar com suítes de escritório, trabalhar na Internet. Isso, é claro, ajuda pouco na preparação para as Olimpíadas.
Ainda há atividade de projeto em boas escolas. Pode haver algumas coisas quando as crianças fazem um projeto, que podem ser enviadas para a competição. Isso também é útil. Esta é a preparação para possíveis estágios. Mas as Olimpíadas de maneira alguma ajudam.
Ou seja, em uma escola russa comum, a ciência da computação está longe de ter sucesso na Olimpíada em ciência da computação ou programação. Todos os alunos das regiões que estão obtendo algum tipo de sucesso obviamente começaram a estudar por conta própria ou foram a algum clube ou a alguma escola de verão.
Egor: Por que você acha que isso acontece? De fato, na mesma matemática, física, o programa é semelhante em todos os lugares. Quanto ao ensino de programação ou ciência da computação, realmente existem coisas completamente diferentes acontecendo de escola para escola.Andrei: Primeiro, matemática, física já são assuntos muito mais estabelecidos. Eles têm uma história de centenas de anos. E dezenas de ciência da computação apenas até agora. Em segundo lugar, nessas décadas, um grande período caiu sobre a crise do financiamento da educação. Quando professores talentosos, muitos simplesmente não podiam ir à educação, porque era difícil financeiramente.… - . , 1980-, 1980-, , , , , .
, . , . , : – . , .
, . . , . , , , . . , , - . : « ».
: « ».
, , . . , 1990- – 2000- , , , . , , , , .
, , Python. , , . , . , , .
: , ?: , – . , - – .
, , , . , – , . , , - . , , . , , , , , . , , .
: , ?: , . - . , , , . . 280-300 , . , , – . , , . .
, . , , , . – .
: ? ? ?: - , - - , , , , , - , , , – , . . - , – – , , - , , .
… , - … , .
Egor: O ensino na universidade agora é competitivo com o trabalho no setor privado? Você falou sobre os caras que estavam na equipe, que acabaram saindo para trabalhar no Google, em Valley. O que agora motiva a permanecer professor, como eles trabalham com isso?Andrey: Agora há uma estratificação bastante forte. Universidades onde há grandes problemas com dinheiro, onde o trabalho dos professores não é digno. E é muito difícil para as pessoas encontrar motivação para trabalhar como professores lá. É necessário cancelar algumas concessões em paralelo ou trabalhar em paralelo em algum lugar. Você ensina metade do tempo, metade do trabalho em uma empresa. Muito difícil., . – «5-100», 21 .
, , -, Computer science . , , -, , , .
.
. – –
« » . , , , , .
– JetBrains, , ., – , , , , , .
: , ? ?: . , , , , . – 10-20-30. .
, - , «5-100», . , .
: , ? , .: . . , , 10-15 , , , .
, , , : - , , . . . ?
, , , , , , , . , , . .
Egor: Em 2009, você e Dmitry Medvedev se encontraram com a equipe vencedora da Olimpíada. Encontrei a transcrição da entrevista. Há momentos maravilhosos em que você lê os textos das tarefas. Eles em alguns casos entendem, em outros não. Eu tinha um forte pressentimento de que você o trollava com cuidado no processo. Foi intencional ou aconteceu?Andrei: Você precisa entender que essas reuniões são realizadas para câmeras. Nessas reuniões, nada está decidido. Se algum problema for resolvido, será possível cronometrar realmente para coincidir com esta reunião. Mas, na realidade, uma reunião é uma campanha de relações públicas.Em um resumo desta reunião, fomos informados de que o presidente estaria interessado em saber sobre o que eram as tarefas. Analisamos as tarefas da última final e selecionamos algumas para as quais os textos correspondem a pelo menos algumas questões cotidianas. Às vezes, é difícil até para um aluno despreparado explicar a declaração da tarefa de um programador. Escolhemos lendas bastante divertidas, como nos pareceu. Eu não sei, talvez algum elemento de corrico.. – – 2004 , . , . , .
: ? , ?: , . , , 2016 , , . , , .
, , -. – , , .
, , .
: , ?: , , - . , . . . , , , , , .
- , . : - , «5-100», .
, ? . , , .
Youtube . , .
:, , . .
- - . ? ?
, ! ,
– , , IT.