Actualización: Nos hace mucha ilusión anunciar que Mozilla nos ha concedido un Open Source Support Award por este proyecto. Puedes leer más aquí.
Esta entrada de blog marca el inicio del Proyecto de apoyo automatizado a la mentoría de Exercism, en el que desarrollaremos un framework que analice de forma programática las soluciones de los usuarios para mejorar el ciclo de comentarios de los estudiantes y reducir la carga de los mentores. A corto plazo, nuestro objetivo es aprobar automáticamente las soluciones que cumplan unos criterios de aceptación determinados y ofrecer comentarios sobre las mejoras más habituales.
El propósito de esta entrada es describir el problema que intentamos resolver y el plan general para abordarlo durante los próximos meses. Publicaremos más entradas en las que profundizaremos en los antecedentes del problema y en la historia del análisis automatizado en Exercism, además de ofrecer más detalles sobre nuestra estrategia de implementación.
¿Por qué apoyo automatizado a la mentoría?
El mayor obstáculo al que se enfrenta Exercism es poder asumir su escala.
Nuestros mentores voluntarios son fundamentales para el éxito de Exercism. Se encargan de revisar las soluciones de los estudiantes, analizar si cumplen los criterios de éxito del ejercicio o necesitan mejoras, comprender con empatía el proceso de pensamiento del estudiante, ofrecer comentarios alentadores y útiles, y enseñar a cada persona las expresiones idiomáticas del lenguaje. Hoy por hoy, apenas conseguimos mantener el ritmo de la demanda de mentoría. Si queremos crecer, necesitamos una estrategia mejor que «añadir más mentores».
En los ejercicios fundamentales que constituyen la columna vertebral de una ruta de lenguaje de Exercism, calculamos que alrededor del 25% de los envíos son lo bastante buenos como para marcarse como completados en el primer intento. Otro 55% de los envíos tienen problemas que caen en categorías habituales, que se pueden resolver con solo copiar y pegar fragmentos de comentarios. Solo en torno al 20% de las soluciones requieren que el mentor sea creativo y reflexivo en sus comentarios.
El 80% de las soluciones que no suponen un verdadero reto para el cerebro del mentor son una frustrante pérdida de tiempo para quienes están dispuestos a dedicar su tiempo a ayudar a los demás, y no aprovechan al máximo sus conocimientos.
Del mismo modo, un estudiante puede esperar entre un día y una semana antes de recibir comentarios, y mientras tanto no puede seguir avanzando en la ruta. Para quienes han enviado una iteración que entra dentro del 25% de soluciones perfectamente válidas, esta demora es enormemente frustrante. Para el resto, es como poco mejorable. Los estudiantes a menudo pierden el impulso por culpa de esta demora y acaban frustrándose con el proceso.
Si desarrollamos un sistema capaz de analizar automáticamente una solución y aprobarla o facilitar comentarios estándar sobre problemas conocidos, calculamos que podremos reducir drásticamente la carga de trabajo de los mentores eliminando las partes «aburridas», a la vez que mejoramos de forma notable la experiencia del estudiante. Como ventaja añadida, las personas recibirán comentarios más coherentes en lo que respecta a cuestiones estructurales y de estilo, lo que los prepara para mantener conversaciones más interesantes sobre los temas menos claros.
¿Cómo funcionará?
Nuestro objetivo a largo plazo es desarrollar algoritmos de aprendizaje profundo capaces de analizar los árboles de sintaxis abstracta (AST) de los casi un millón de envíos realizados desde que Exercism se lanzó en 2013. Una herramienta así podría detectar patrones comunes y los comentarios relacionados que hacen los mentores. A corto plazo, nuestro objetivo es usar el análisis estático para determinar qué comentarios se pueden ofrecer a partir de los errores que los mentores ven repetirse con más frecuencia.
El proyecto se divide aproximadamente en las siguientes áreas:
- Cambios en el producto: tenemos que decidir cómo encaja este análisis automatizado en la interfaz de mentoría actual, cómo comunicamos estos comentarios (mensajes del sistema, un «bot», etc.) y, después, implementarlo en el sitio web de Exercism.
- Infraestructura: diseñaremos y crearemos una infraestructura capaz de soportar de forma eficiente la ejecución de análisis estáticos en varios lenguajes.
- Prototipo de análisis estático: desarrollar un analizador de ejemplo que apruebe automáticamente las soluciones correctas de Two Fer en Ruby, y documentar este proceso para que la comunidad en general pueda contribuir.
Nuestro objetivo es lanzar el prototipo inicial para mediados de 2019. Una vez tengamos los cimientos listos, esperamos ampliarlo a otros lenguajes además de Ruby y a otros ejercicios además de Two Fer. Aunque no tendremos listo el framework para integrar otros lenguajes y ejercicios en el sitio web hasta que hayamos avanzado con el prototipo, si quieres empezar a escribir analizadores para tus lenguajes y ejercicios favoritos, ¡no hay motivo para esperar! Abre una incidencia en el repositorio de GitHub de este proyecto y cuéntanos qué te gustaría hacer.
Nos hace mucha ilusión trabajar con otras personas de la comunidad de Exercism que ya venían usando el análisis estático como apoyo a la mentoría, como tehsphinx y bitfield, que han desarrollado una herramienta de análisis estático para los mentores de la ruta de Go. El modo en que ha llevado a la ruta desde tener una acumulación enorme de trabajo pendiente hasta ser una de las rutas de lenguaje que responde más rápido en Exercism demuestra el impacto que puede tener el apoyo automatizado a la mentoría.
Durante las próximas semanas iremos detallando más estos primeros pasos clave y cómo funcionarán las cosas.
¡Nos encantaría responder a tus preguntas en la sección de comentarios de abajo! :)