Atualização: é com entusiasmo que anunciamos que a Mozilla atribuiu-nos um Open Source Support Award para este projeto. Podes ler mais aqui.
Este artigo assinala o início do Projeto de Apoio Automatizado à Mentoria do Exercism, no qual vamos desenvolver um framework que analisa programaticamente as soluções dos utilizadores, para melhorar o ciclo de feedback de quem aprende e reduzir o esforço dos mentores. A curto prazo, o nosso objetivo é aprovar automaticamente as soluções que cumpram determinados critérios de aceitação e dar feedback sobre melhorias frequentes.
O objetivo deste artigo é descrever o problema que estamos a tentar resolver e o plano geral para o abordarmos nos próximos meses. Vamos publicar mais artigos que aprofundam o contexto do problema e a história da análise automatizada no Exercism, bem como mais detalhes sobre a nossa estratégia de implementação.
Porquê apoio automatizado à mentoria?
A maior barreira do Exercism é conseguir lidar com a escala.
Os nossos mentores voluntários são essenciais para o sucesso do Exercism. São eles que revêem as soluções dos estudantes, analisam se cumprem os critérios de sucesso do exercício ou se precisam de ser melhoradas, compreendem com empatia o raciocínio de quem está a aprender, dão feedback útil e incentivador e orientam as pessoas nos idiomatismos da linguagem. Hoje, conseguimos, com dificuldade, acompanhar a procura de mentoria. Se queremos crescer, precisamos de uma estratégia melhor do que "arranjar mais mentores".
Nos exercícios principais que formam a espinha dorsal de um percurso de uma linguagem no Exercism, estimamos que cerca de 25% das submissões são suficientemente boas para serem marcadas como concluídas à primeira tentativa. Outros 55% das submissões têm problemas que se enquadram em categorias comuns e que podem ser objeto de mentoria através de copiar e colar excertos de feedback. Apenas cerca de 20% das soluções exigem que um mentor seja criativo e atento no seu feedback.
Os 80% de soluções que não envolvem verdadeiramente o cérebro do mentor são uma perda de tempo frustrante para quem está disposto a oferecer o seu tempo a ajudar os outros, e não tiram o melhor partido da sua experiência.
Da mesma forma, um estudante pode esperar entre um dia e uma semana até receber feedback e, entretanto, não consegue avançar no percurso. Para quem submeteu uma iteração que faz parte dos 25% de soluções perfeitamente válidas, este atraso é extremamente frustrante. Para os restantes, é, na melhor das hipóteses, pouco satisfatório. Os estudantes perdem muitas vezes o ímpeto por causa deste atraso e ficam frustrados com o processo.
Ao desenvolver um sistema que consegue analisar automaticamente uma solução e aprová-la ou dar feedback predefinido para problemas conhecidos, estimamos que conseguiremos reduzir drasticamente a carga de trabalho dos mentores, eliminando as partes "aborrecidas", e ao mesmo tempo melhorar significativamente a experiência de quem aprende. Como bónus adicional, as pessoas receberão feedback mais consistente no que diz respeito a questões estruturais e de estilo, o que as prepara para conversas mais interessantes sobre os temas menos óbvios.
Como vai funcionar?
O nosso objetivo a longo prazo é desenvolver algoritmos de aprendizagem profunda que consigam analisar as Árvores de Sintaxe Abstrata (ASTs) das quase um milhão de submissões enviadas desde o lançamento do Exercism, em 2013. Uma ferramenta destas poderia detetar padrões comuns e os comentários dos mentores associados a esses padrões. A curto prazo, o nosso objetivo é usar análise estática para determinar que feedback pode ser dado com base nos erros mais repetidos que os mentores observam.
O projeto divide-se, de forma geral, nas seguintes áreas:
- Alterações ao produto: Precisamos de perceber como é que esta análise automatizada se encaixa na interface de mentoria atual, como comunicamos este feedback (mensagens de sistema, um "bot", etc.) e, depois, implementar isto no site do Exercism.
- Infraestrutura: Vamos conceber e construir a infraestrutura capaz de suportar, de forma eficiente, a execução de análise estática em várias linguagens.
- Protótipo de análise estática: Desenvolver um analisador de exemplo que aprove automaticamente boas soluções para o Two-fer de Ruby e documentar este processo, para que a comunidade em geral possa contribuir.
Pretendemos lançar o protótipo inicial em meados de 2019. Assim que tivermos as bases prontas, contamos alargá-lo a outras linguagens além de Ruby e a outros exercícios além do Two-fer. Embora só tenhamos o framework pronto para integrar outras linguagens e exercícios no site depois de avançarmos com o protótipo, se queres começar já a escrever analisadores para as tuas linguagens e exercícios preferidos, não há razão para esperar! Abre um issue no repositório GitHub deste projeto e diz-nos o que gostarias de fazer.
Estamos muito entusiasmados por trabalhar com outras pessoas da comunidade do Exercism que já usam análise estática para ajudar na mentoria, como tehsphinx e bitfield, que desenvolveram uma ferramenta de análise estática para mentores do percurso de Go. A forma como essa ferramenta levou o percurso de uma enorme lista de espera a ser um dos percursos de linguagem mais rápidos a responder no Exercism mostra o impacto que o apoio automatizado à mentoria pode ter.
Nas próximas semanas, vamos explicar melhor estes primeiros passos fundamentais e como tudo vai funcionar.
Teremos todo o gosto em responder às tuas perguntas na secção de comentários abaixo! :)