Actualización: nos entusiasma anunciar que Mozilla nos otorgó 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 analiza 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. Nuestro objetivo a corto plazo es aprobar automáticamente las soluciones que cumplan ciertos criterios de aceptación y dar comentarios sobre las mejoras que se ven con más frecuencia.
El objetivo de esta entrada es describir el problema que intentamos resolver y el plan general de cómo lo abordaremos durante los próximos meses. Después 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 dar más detalles sobre nuestra estrategia de implementación.
¿Por qué apoyo automatizado a la mentoría?
El mayor obstáculo de Exercism es poder manejar la escala.
Nuestros mentores voluntarios son fundamentales para el éxito de Exercism. Son los responsables de revisar las soluciones de los estudiantes, analizar si cumplen los criterios de éxito del ejercicio o si hay que mejorarlas, entender con empatía el razonamiento del estudiante, dar comentarios alentadores y útiles, y guiar a las personas en los modismos de un lenguaje. Hoy apenas si logramos seguir el ritmo de la demanda de mentoría. Si queremos crecer, necesitamos una estrategia mejor que «añadir más mentores».
En los ejercicios principales que forman la columna vertebral de un track de lenguaje de Exercism, calculamos que alrededor del 25% de los envíos son lo bastante buenos como para marcarse como completos en el primer intento. Otro 55% de los envíos tiene problemas que caen en categorías comunes, a los que se les puede dar mentoría copiando y pegando fragmentos de comentarios. Solo alrededor del 20% de las soluciones requiere que un mentor sea creativo y cuidadoso con sus comentarios.
El 80% de las soluciones que no ponen realmente a trabajar el cerebro de un mentor son una frustrante pérdida de tiempo para quienes están dispuestos a ofrecer su tiempo como voluntarios para ayudar a los demás, y no aprovechan al máximo su experiencia.
Del mismo modo, un estudiante puede esperar entre un día y una semana antes de recibir comentarios y, mientras tanto, no puede avanzar en el track. Para quienes han enviado una iteración que entra dentro de ese 25% de soluciones perfectamente válidas, esta demora es sumamente frustrante. Para el resto, en el mejor de los casos dista de ser óptima. Los estudiantes a menudo pierden el impulso por esta demora y se frustran con el proceso.
Al desarrollar un sistema que pueda analizar automáticamente una solución y aprobarla o dar comentarios predefinidos para 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 significativa la experiencia del estudiante. Como beneficio adicional, las personas recibirán comentarios más consistentes en lo que respecta a cuestiones estructurales y de estilo, lo que las prepara para tener conversaciones más interesantes sobre los temas menos definidos.
¿Cómo funcionará?
Nuestro objetivo a largo plazo es desarrollar algoritmos de aprendizaje profundo que puedan analizar los árboles de sintaxis abstracta (AST) de casi el millón de envíos que se han enviado desde que Exercism se lanzó en 2013. Una herramienta así podría detectar patrones comunes y los comentarios relacionados de los mentores. En el corto plazo, nuestro objetivo es usar el análisis estático para determinar qué comentarios se pueden dar 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: necesitamos definir cómo encaja este análisis automatizado con la interfaz de usuario actual de mentoría, cómo comunicamos estos comentarios (mensajes del sistema, un «bot», etc.) y luego implementarlo en el sitio web de Exercism.
- Infraestructura: diseñaremos y crearemos una infraestructura que pueda soportar de forma eficiente la ejecución de análisis estático en varios lenguajes.
- Prototipo de análisis estático: desarrolla un analizador de ejemplo que apruebe automáticamente las buenas soluciones de Ruby / Two-fer y documenta este proceso para que el resto de la comunidad pueda contribuir.
Nuestro objetivo es lanzar el prototipo inicial para mediados de 2019. Una vez que tengamos las bases listas, esperamos extenderlo a otros lenguajes además de Ruby y a otros ejercicios además de Two Fer. Aunque no tendremos el framework listo 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 razón para esperar! Abre un issue en el repo de GitHub de este proyecto y cuéntanos qué te interesa hacer.
Nos entusiasma mucho trabajar con otras personas de la comunidad de Exercism que ya han estado usando el análisis estático para ayudar con la mentoría, como tehsphinx y bitfield, quienes desarrollaron una herramienta de análisis estático para los mentores del track de Go. El hecho de que haya llevado al track desde tener una enorme acumulación de soluciones pendientes hasta convertirlo en uno de los tracks de lenguajes que responden 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 sobre estos primeros pasos clave y sobre cómo funcionarán las cosas.
¡Nos encantaría responder a cualquiera de tus preguntas en la sección de comentarios de abajo! :)