Uploaded avatar of angelikatyborska

Analisadores, representadores e programas de estudo: o que há de novo no Exercism?

@angelikatyborska
Aproximadamente 5 anos atrás
Vídeo

No início de setembro de 2021, o Exercism v3 finalmente foi lançado. Angelika Tyborska é uma das principais mantenedoras que nos ajudaram a cruzar a linha de chegada. Além de ser co-criadora dos Exercícios de Aprendizagem e do Syllabus de Elixir, Angelika foi uma voz fundamental ao longo do desenvolvimento do v3, contribuindo com ideias e percepções durante todo o processo de construção. Ela é uma contribuidora fundamental do Exercism.

Nesta apresentação em vídeo, Angelika explica quais problemas o v3 foi criado para resolver, algumas das principais novidades da plataforma e como tudo se encaixa, explorando os Analyzers, os Representers e os novos Exercícios de Aprendizagem.

Transcrição

A história do Exercism

O Exercism já existe há um tempo. Foi criado em 2013 por Katrina Owen como uma ferramenta para seus estudantes. No v1, era apenas uma coleção de Exercícios de Prática interessantes. No v2, virou uma plataforma de mentoria de código gratuita.

v3 🚀 01.09.2021

No dia 1º de setembro, a versão 3 do Exercism foi lançada.

Neste vídeo, vou explicar as mudanças do v3, por que elas foram feitas e como elas vão melhorar sua experiência no Exercism.

Sobre mim

Esta sou eu [foto mostrada em 0:38]. Sou a Angelika. Junto com meu co-mantenedor Tim, construímos as ferramentas e mais de 30 exercícios de aprendizagem para a trilha de Elixir do Exercism v3. Acredito que, na sua nova forma, o Exercism tem o potencial de se tornar a melhor ferramenta para aprender novas linguagens de programação.

O que há de novo no v3?

O que há de novo no Exercism v3? Resposta curta: muita coisa.

Todas as grandes mudanças introduzidas no v3 visam resolver os maiores problemas que as pessoas enfrentavam no v2.

Problemas no v2

Há três problemas principais que o v3 resolve.

Um: configuração inicial difícil. Dois: prática de código sem aprendizado. Três: tempo de resposta longo dos mentores.

Problema 1. Configuração inicial difícil

Problema número um: configuração inicial difícil. Para começar no Exercism, você precisa instalar a CLI do Exercism, a linguagem de programação que quer experimentar, e precisa se sentir à vontade no terminal. Você precisa configurar seu editor para colorir a sintaxe da nova linguagem, e por aí vai. Para desenvolvedores experientes, toda essa configuração é uma perda de tempo incômoda. Mas para quem está começando, pode ser um obstáculo impossível de superar.

A solução: deixar as pessoas programarem no navegador. Nenhuma configuração inicial necessária.

Para viabilizar isso, o Exercism agora tem um editor web, e cada linguagem de programação tem seu próprio Test Runner dedicado a rodar os testes dos exercícios do Exercism.

Editor web

Este é o editor web [captura de tela mostrada em 2:25]. Ele tem dois painéis: o código-fonte à esquerda e as instruções e a suíte de testes à direita.

Ele não tem nenhum recurso sofisticado, porque seu objetivo não é substituir suas ferramentas favoritas. Seu objetivo é permitir que você adie a instalação de todas as ferramentas e dependências necessárias até se sentir mais à vontade com a nova linguagem de programação e ter certeza de que quer continuar trabalhando com ela.

O editor web é totalmente opcional. Você pode continuar usando a CLI e trabalhar com suas ferramentas favoritas no seu próprio computador.

Test Runners

Para que o editor web seja utilizável, é preciso haver uma forma de rodar os testes contra a solução que você escreve no navegador. Essa é a função do Test Runner.

Cada linguagem no Exercism tem seu próprio Test Runner. O Test Runner é responsável por reportar os resultados dos testes, mas não é só isso. Ele também precisa extrair o corpo do teste para que você saiba qual código está sendo executado e possa interpretar a mensagem de falha, além de capturar a saída do teste para que você possa depurar seu código no navegador usando puts, print, console.log ou qualquer função de impressão que sua linguagem ofereça.

Os Test Runners são essenciais para resolver exercícios no navegador, mas também serão usados em soluções enviadas pela CLI. Ao navegar pelas soluções da comunidade de um determinado exercício, ou ao mentorar um estudante, você consegue ver se a solução passa nos testes sem precisar baixá-la e executá-la localmente.

Problema 2. Prática de código sem aprendizado

Problema número dois: o Exercism é uma plataforma de prática de código, mas não oferecia nenhum recurso para aprender uma linguagem específica do zero. Você tinha que fazer isso em outro lugar primeiro.

Os exercícios do Exercism foram criados para serem interessantes e desafiadores, mas às vezes até os mais fáceis são difíceis demais para servir de porta de entrada a uma nova linguagem de programação. Isso vale especialmente quando você está tentando aprender uma linguagem com uma sintaxe completamente diferente ou que usa até um paradigma de programação diferente.

A solução: oferecer aprendizado junto com a prática.

Com a adição do Syllabus e dos Exercícios de Aprendizagem, o Exercism agora se tornou uma excelente ferramenta para mergulhar de cabeça em uma nova linguagem de programação.

Syllabus

O que é um Syllabus? Um Syllabus é uma árvore de Conceitos que compõem cada linguagem de programação. O Syllabus é exclusivo de cada trilha no Exercism, porque cada linguagem de programação é diferente e tem Conceitos diferentes.

Os Conceitos dependem uns dos outros, formando vários ramos da árvore. Você precisa aprender o conceito anterior do ramo para desbloquear o próximo conceito.

Por exemplo, este é o começo do Syllabus de Elixir [captura de tela mostrada em 5:10]. Ele começa com um conceito chamado "basics", que aborda: como definir um módulo, como definir uma função nomeada e onde encontrar a documentação da biblioteca padrão. Esse conhecimento é necessário para cada exercício do Exercism. Você precisa aprender basics para desbloquear qualquer outro conceito. Você pode aprender, por exemplo, sobre Boolean e, depois de conhecer Boolean, pode aprender sobre a expressão cond, e assim por diante.

Para você ter uma ideia, este é o Syllabus completo de Elixir [captura de tela mostrada em 6:16]. No momento, ele contém mais de 50 Conceitos, mas ainda precisa ser ampliado.

No topo, você encontra Conceitos como: strings, listas, mapas e tuplas. No meio, há: o módulo Enum, expressões regulares, structs e a escrita de typespecs. E no final, há: protocolos, processos e tarefas.

Exercícios de aprendizagem

Você aprende os Conceitos do Syllabus resolvendo Exercícios de Aprendizagem. Os Exercícios de Aprendizagem são diferentes dos Exercícios de Prática. Eles foram criados para ensinar conceitos de programação a estudantes que não conhecem a linguagem de programação específica de jeito nenhum, mas que já conhecem pelo menos uma outra linguagem e conceitos básicos de programação.

Introdução

Cada exercício de aprendizagem começa com uma introdução. A introdução descreve informações básicas sobre os Conceitos que esse exercício ensina. A maioria dos Exercícios de Aprendizagem ensina um único conceito, mas há exceções.

Este exemplo mostra uma introdução sobre mapas de Elixir [captura de tela mostrada em 7:12]. Ela explica o que são mapas, como definir um mapa, como acessar um valor em um mapa e assim por diante. Ela contém alguns exemplos de código para mostrar a nova sintaxe, mas não contém muitos, para que você não consiga simplesmente copiar e colar a introdução para resolver o exercício.

Instruções

Depois, há as instruções. As instruções dos Exercícios de Aprendizagem são divididas em pequenas tarefas. As tarefas foram criadas para incentivar o estudante a usar as partes mais importantes de um determinado conceito.

Por exemplo, o exercício de aprendizagem que ensina mapas fará o estudante criar um mapa, depois ler um valor de um mapa, depois atualizar um valor em um mapa, depois obter todas as chaves de um mapa, e assim por diante.

Cada exercício de aprendizagem tem uma história, mas a história não é tão importante. Ela está lá para que você não precise usar valores sem sentido como "foo bar" e "1 2 3", mas não tem um papel importante no exercício como acontece nos Exercícios de Prática.

Dicas

Cada tarefa vem com uma pequena lista de dicas, caso o estudante fique preso. As dicas muitas vezes revelam qual função específica usar em qual tarefa e levam você à documentação dessa função.

Praticando conceitos

Mas resolver um único exercício de aprendizagem não é suficiente para dominar de verdade o conceito. Você também precisa praticá-lo. Foi por isso que revisamos todos os Exercícios de Prática que já existiam no v2 e escolhemos alguns que podem ser usados para praticar cada conceito.

É assim que um único conceito aparece na árvore [captura de tela mostrada em 9:01]. Os pontos representam exercícios. O primeiro ponto, com o ícone de lâmpada, é um exercício de aprendizagem, e os outros pontos são Exercícios de Prática.

É assim que um conceito aparece depois de resolver alguns exercícios [captura de tela mostrada em 9:37]. Repare que alguns dos Exercícios de Prática desse conceito ainda estão bloqueados, mesmo com o exercício de aprendizagem concluído. Isso acontece porque os Exercícios de Prática não se limitam a praticar um único conceito. Talvez você precise aprender mais Conceitos além de atoms [conceito mostrado na captura de tela] para que esses exercícios sejam desbloqueados.

Os Exercícios de Aprendizagem devem ser triviais para quem já é fluente em uma determinada linguagem. Mas não se preocupe, eles são totalmente opcionais. Você pode alternar do modo de aprendizagem para o modo de prática, o que dá acesso imediato a todos os Exercícios de Prática interessantes, sem precisar percorrer o Syllabus primeiro.

Syllabus = um esforço enorme

Um detalhe importante que preciso mencionar para ajustar suas expectativas é que desenvolver o Syllabus é um esforço ENORME. Nem toda trilha tem mantenedores ativos suficientes para ter um Syllabus pronto agora.

No momento em que gravo este vídeo [4 de setembro de 2021], os Exercícios de Aprendizagem estão disponíveis apenas em: Common Lisp, C#, Elm, Elixir, F#, Go, Java, JavaScript, Python, Ruby, Rust e Swift. A trilha de Julia lançará seu Syllabus em breve.

Problema 3. Tempo de resposta longo dos mentores

Problema número três: tempo de resposta longo dos mentores. Nem toda trilha tem mentores suficientes. Algumas trilhas têm tão poucos mentores que o tempo de espera por mentoria pode chegar a um mês. Isso sempre foi extremamente desanimador para os estudantes. É uma questão tão central no Exercism que está sendo tratada por 3 ângulos diferentes.

Feedback automatizado

A solução número 1 é oferecer feedback automatizado. Muito do feedback que os mentores escrevem para os estudantes é repetitivo. Conseguir detectar erros comuns automaticamente e reportá-los diretamente ao estudante muda tudo.

Receber feedback automatizado sobre erros comuns permite que o estudante melhore sua solução antes mesmo de pedir mentoria, o que também facilita o trabalho do mentor. Isso poupa os mentores de ter que mencionar detalhes tediosos como snake_case vs camelCase e os deixa focar na essência da solução. Em alguns casos, o feedback automatizado será suficiente para satisfazer o estudante, e ele nem vai pedir mentoria.

No v3, há dois tipos de ferramentas para feedback automatizado: Analyzers e Representers.

Analyzers

O Analyzer é uma ferramenta que procura características específicas em uma solução e devolve ao estudante uma lista de comentários predefinidos sobre o que encontra. Quais características, isso depende inteiramente da linguagem e do exercício específico.

Por exemplo, Elixir tem uma convenção de nomenclatura muito específica para funções e variáveis. Uma das verificações que o Elixir Analyzer faz em cada exercício é checar todos os nomes de variáveis e de funções. Se ele encontrar um nome que não esteja escrito em snake_case, vai lembrar o estudante da convenção de nomenclatura.

Outra verificação que o Elixir Analyzer pode fazer é detectar o uso de um módulo específico. Por exemplo, esta verificação [captura de tela mostrada em 13:20] de não usar o módulo Enum é específica do exercício de aprendizagem de recursão. Usar o módulo Enum vai contra o propósito do exercício de aprendizagem, então o Analyzer vai lembrar o estudante de não fazer isso e usar recursão em vez disso.

Representers

A segunda ferramenta que vai nos ajudar a oferecer feedback automatizado no Exercism é o Representer. O Representer pega a solução e remove as partes não essenciais. Ele normaliza a formatação, remove comentários e documentação e substitui nomes de funções e variáveis por placeholders.

A saída do Representer é chamada de representação. Cada solução enviada ao Exercism será passada ao Representer, e sua representação será armazenada na plataforma junto com a solução.

Os mentores então terão acesso a uma interface onde podem navegar pelas representações das soluções enviadas. Para cada representação única, um mentor pode deixar feedback nessa representação. Então, esse feedback será apresentado a todo estudante que enviar uma solução parecida que tenha a mesma representação. O mentor só precisa escrever o feedback uma vez, e o feedback pode alcançar todos que precisam dele.

Os próprios Representers já estão implementados e implantados para algumas linguagens, mas no momento em que gravo este vídeo [4 de setembro de 2021], a interface para mentores ainda está faltando na plataforma, então precisamos esperar um pouco até esse recurso estar totalmente disponível.

Evitando sessões de mentoria indesejadas

Outra solução para as longas filas de mentoria é evitar sessões de mentoria indesejadas. No v2, a mentoria era obrigatória para os exercícios principais. Enviar um exercício principal significava que você automaticamente pedia mentoria, e você não podia avançar para o próximo exercício principal sem a aprovação do mentor. Muitos estudantes aprendiam a linguagem percorrendo os exercícios principais, então precisavam da mentoria para guiá-los pelo processo de aprendizado.

Isso não é mais assim. O papel de ensino dos exercícios principais e a aprovação do mentor foram assumidos pelos Exercícios de Aprendizagem e pelos Analyzers. No v3, a mentoria é sempre opcional e precisa ser solicitada explicitamente.

Solicitação de mentoria

Para solicitar mentoria, você precisa responder a 2 perguntas: O que você espera aprender com esta trilha? e: Como um mentor pode ajudar você com sua solução? Sabendo de antemão quais são as expectativas do estudante em relação à sessão de mentoria, o mentor pode escolher as solicitações que melhor se encaixam em seu conhecimento e estilo de mentoria, o que torna mais provável que ambos os lados saiam satisfeitos da sessão de mentoria.

Fila de mentoria e favoritos

Na nova fila de mentoria, os mentores podem ver estatísticas sobre o histórico de mentoria do estudante. Eles podem ver qual estudante nunca foi mentorado antes e pode precisar de uma análise mais cuidadosa, e qual estudante já passou por mentoria muitas vezes e entende como ela funciona.

Os mentores também podem, finalmente, encontrar estudantes que mentoraram antes e desenvolver relacionamentos com eles. Os mentores podem até adicionar estudantes aos favoritos e usar isso para priorizar a mentoria de estudantes com quem tiveram uma boa experiência anteriormente.

Listas de bloqueio

Depois de cada sessão de mentoria, tanto o estudante quanto o mentor têm a opção de bloquear a outra pessoa. Existem duas listas de bloqueio: estudantes bloqueados e mentores bloqueados. Se eu, como mentor, bloqueio você como estudante, ainda assim você pode mais tarde me mentorar. A outra pessoa, é claro, não terá ideia de que foi bloqueada, então não pode retaliar contra você.

Você pode escolher bloquear alguém por qualquer motivo, mas se essa pessoa estiver quebrando o Código de Conduta, certifique-se de também denunciá-la explicitamente para proteger os outros usuários.

Atenuar as consequências negativas de longas esperas

Por fim, o último passo para lidar com o problema das longas esperas é garantir que, mesmo precisando esperar às vezes, as consequências negativas da espera sejam mínimas. No v3, esperar por mentoria não impede você de resolver outros exercícios. Você ainda pode avançar pela trilha.

Uma sessão de mentoria pode ser encerrada por qualquer um dos lados. Se você é estudante e não gosta da abordagem que um determinado mentor está adotando com você, pode sempre pedir uma abordagem diferente ou escolher sair da sessão. Independentemente de como a sessão de mentoria termina, o estudante pode solicitar uma nova sessão de mentoria com outro mentor para a mesma solução.

Vagas de mentoria

Para cada trilha, você pode ter de 1 a 4 vagas de mentoria. Ter várias vagas de mentoria pode ajudar quando você quer pedir mentoria para um exercício difícil, que tem menos chance de receber mentoria rápido, e ainda conseguir mentoria em outros exercícios ao mesmo tempo.

As vagas de mentoria podem ser desbloqueadas ganhando reputação. A reputação é concedida por publicar suas soluções para todos verem, por mentorar estudantes e por contribuir com qualquer um dos repositórios do Exercism. Isso significa que os estudantes que contribuem mais com a plataforma podem conseguir mais mentoria.

Resumo

Essas são algumas das principais mudanças do Exercism no dia 1º de setembro de 2021.

Adicionamos os Exercícios de Aprendizagem para que você possa aprender sem sair da plataforma, um editor web para que você possa programar sem instalar nada, e Analyzers e Representers para que você receba feedback automatizado imediato. Também removemos vários bloqueios frustrantes do processo de mentoria.

E há muito mais novidades para explorar: nossa seção de contribuição, medalhas, novos perfis, uma página de jornada com todo o seu histórico no Exercism e muito mais.

Venha para o exercism.org e experimente.

Obrigada.

11 de setembro de 2021 · Achou útil?