Atualização: estamos muito felizes em anunciar que a Mozilla nos concedeu o Open Source Support Award para este projeto. Você pode ler mais aqui.
Este post marca o início do Projeto de Apoio Automatizado à Mentoria do Exercism, no qual vamos desenvolver um framework que analisa programaticamente as soluções enviadas pelas pessoas que usam a plataforma, para melhorar o ciclo de feedback de quem está aprendendo e aliviar a carga dos mentores. Nossa meta, no curto prazo, é aprovar automaticamente as soluções que atendam a determinados critérios de aceitação e oferecer feedback sobre melhorias que aparecem com frequência.
A ideia deste post é descrever o problema que queremos resolver e o plano geral de como vamos atacá-lo nos próximos meses. Vamos publicar outros posts que vão a fundo no contexto do problema e na história da análise automatizada no Exercism, além de mais detalhes sobre a nossa estratégia de implementação.
Por que automatizar o apoio à mentoria?
O maior obstáculo do Exercism é dar conta da escala.
Nossos mentores voluntários são essenciais para o sucesso do Exercism. São eles que revisam as soluções de quem está aprendendo, analisam se elas atendem aos critérios de sucesso do exercício ou se precisam melhorar, procuram entender com empatia o raciocínio da pessoa, dão um feedback incentivador e útil e orientam cada um no uso das construções idiomáticas da linguagem. Hoje, estamos conseguindo acompanhar a demanda por mentoria com muito esforço. Se quisermos crescer, precisamos de uma estratégia melhor do que "adicionar mais mentores".
Nos exercícios principais que formam a espinha dorsal de uma trilha de linguagem do Exercism, estimamos que cerca de 25% das submissões já estão boas o suficiente para serem marcadas como concluídas na primeira tentativa. Outros 55% das submissões têm problemas que se encaixam em categorias comuns, e podem ser resolvidos com copiar e colar de trechos de feedback. Só cerca de 20% das soluções exigem que um mentor seja criativo e atento no feedback.
Os 80% de soluções que não exigem de verdade o cérebro de um mentor consomem um tempo frustrante de quem está disposto a doar seu tempo para ajudar outras pessoas, e não aproveitam ao máximo a experiência de quem mentoriza.
Da mesma forma, quem está aprendendo pode esperar de um dia a uma semana até receber feedback e, nesse meio-tempo, não consegue avançar na trilha. Para quem enviou uma iteração que está entre os 25% de soluções perfeitamente válidas, essa demora é extremamente frustrante. Para o restante, é, na melhor das hipóteses, longe do ideal. É comum que as pessoas percam o ritmo por causa dessa demora e fiquem frustradas com o processo.
Ao desenvolver um sistema capaz de analisar automaticamente uma solução e aprová-la ou oferecer feedback padrão para problemas conhecidos, estimamos que conseguiremos reduzir drasticamente a carga de trabalho dos mentores, eliminando as partes "chatas", e ao mesmo tempo melhorar bastante a experiência de quem aprende. Como bônus, as pessoas vão receber um feedback mais consistente em questões estruturais e de estilo, o que abre espaço para conversas mais interessantes sobre os temas menos óbvios.
Como vai funcionar?
Nossa meta de longo prazo é desenvolver algoritmos de aprendizado profundo capazes de analisar as Árvores de Sintaxe Abstrata (ASTs) das quase um milhão de submissões enviadas desde que o Exercism foi lançado, em 2013. Uma ferramenta assim poderia detectar padrões comuns e os comentários relacionados feitos pelos mentores. No curto prazo, nossa meta é usar análise estática para determinar que feedback pode ser dado com base nos erros que os mentores veem se repetir com mais frequência.
O projeto se divide, em linhas gerais, nas seguintes áreas:
- Mudanças no produto: precisamos definir como essa análise automatizada se encaixa na interface de mentoria atual, como comunicamos esse feedback (mensagens do sistema, um "bot" etc.) e, depois, implementar tudo isso no site do Exercism.
- Infraestrutura: vamos projetar e construir uma infraestrutura capaz de sustentar com eficiência a execução de análises estáticas em várias linguagens.
- Protótipo de análise estática: desenvolver um analisador de exemplo que aprove automaticamente boas soluções de Ruby / Two-fer e documentar esse processo, para que a comunidade em geral possa contribuir.
Nossa meta é lançar o protótipo inicial em meados de 2019. Assim que tivermos a base pronta, pretendemos estender isso para outras linguagens além de Ruby e outros exercícios além do Two Fer. Embora ainda não tenhamos o framework pronto para integrar outras linguagens e exercícios ao site enquanto não avançarmos no protótipo, se você quiser começar a escrever analisadores para suas linguagens e exercícios favoritos, não há motivo para esperar! Abra uma issue no repositório do projeto no GitHub e conte para a gente o que você gostaria de fazer.
Estamos muito animados para trabalhar com outras pessoas da comunidade do Exercism que já vêm usando análise estática para ajudar na mentoria, como tehsphinx e bitfield, que desenvolveram uma ferramenta de análise estática para mentores da trilha de Go. O fato de essa ferramenta ter levado a trilha de um backlog gigantesco a ser uma das trilhas de linguagem que respondem mais rápido no Exercism mostra o quanto o apoio automatizado à mentoria pode fazer diferença.
Nas próximas semanas, vamos detalhar mais esses primeiros passos e como tudo vai funcionar.
Vamos adorar responder às suas perguntas na seção de comentários abaixo! :)