Uploaded avatar of angelikatyborska

Analizadores, representadores y temarios: ¿qué hay de nuevo en Exercism?

@angelikatyborska
hace Alrededor de 5 años
Vídeo

A principios de septiembre de 2021, Exercism v3 por fin se lanzó. Angelika Tyborska es una de las mantenedoras clave que nos ayudaron a cruzar la línea de meta. Además de ser cocreadora de los Ejercicios de aprendizaje y el Temario de Elixir, Angelika fue una voz clave durante el desarrollo de la v3, aportando ideas y puntos de vista en todo el proceso de creación. Es una colaboradora clave de Exercism.

En esta presentación en vídeo, Angelika nos explica qué problemas pretendía resolver la v3, algunas de las principales novedades de la plataforma y cómo encaja todo, explorando los Analyzers, los Representers y los nuevos Ejercicios de aprendizaje.

Transcripción

Historia de Exercism

Exercism lleva ya un tiempo entre nosotros. Lo creó por primera vez en 2013 Katrina Owen como herramienta para sus estudiantes. En la v1 era solo una colección de interesantes Ejercicios de práctica. En la v2 se convirtió en una plataforma de mentoría de código gratuita.

v3 🚀 01.09.2021

El 1 de septiembre se publicó la versión 3 de Exercism.

En este vídeo te explico los cambios de la v3, por qué se hicieron y cómo mejorarán tu experiencia en Exercism.

Sobre mí

Esta soy yo [foto mostrada en 0:38]. Soy Angelika. Junto a mi comantenedor Tim construimos las herramientas y más de 30 ejercicios de aprendizaje para el track de Elixir de Exercism v3. Creo que, en su nueva forma, Exercism tiene el potencial de convertirse en la mejor herramienta para aprender nuevos lenguajes de programación.

¿Qué hay de nuevo en la v3?

¿Qué hay de nuevo en Exercism v3? Respuesta corta: mucho.

Todos los cambios importantes introducidos en la v3 están pensados para resolver los mayores problemas que la gente experimentaba en la v2.

Problemas de la v2

Hay tres problemas clave que la v3 aborda.

Uno: una configuración inicial difícil; dos: práctica de código sin aprendizaje; tres: tiempos de respuesta largos de los mentores.

Problema 1. Configuración inicial difícil

Problema número uno: la configuración inicial difícil. Para empezar con Exercism, tienes que instalar la CLI de Exercism, el lenguaje de programación que quieras probar, y sentirte cómodo en la terminal. Tienes que configurar tu editor para que aplique coloreado de sintaxis al nuevo lenguaje, y cosas así. Para los desarrolladores avanzados, toda esa configuración es una pérdida de tiempo molesta. Pero para los principiantes puede ser un obstáculo imposible de superar.

La solución: dejar que la gente programe en el navegador. Sin configuración inicial.

Para facilitarlo, Exercism tiene ahora un editor web, y cada lenguaje de programación tiene su propio Test Runner dedicado a ejecutar las pruebas de los ejercicios de Exercism.

Editor web

Este es el editor web [captura mostrada en 2:25]. Tiene dos paneles, el código fuente a la izquierda y las instrucciones y la suite de pruebas a la derecha.

No tiene ninguna funcionalidad llamativa, porque su objetivo no es sustituir tus herramientas favoritas. Su objetivo es permitirte posponer la instalación de todas las herramientas y dependencias necesarias hasta que te sientas más cómodo con el nuevo lenguaje de programación y sepas que quieres seguir trabajando con él.

El editor web es totalmente opcional. Puedes seguir usando la CLI y trabajar con tus herramientas favoritas en tu propio ordenador.

Test Runners

Para que el editor web sea usable, tiene que haber una forma de ejecutar las pruebas contra la solución que escribes en el navegador. De eso se encarga un Test Runner.

Cada lenguaje de Exercism tiene su propio Test Runner. El Test Runner se encarga de informar de los resultados de las pruebas, pero eso no es todo. También tiene que extraer el cuerpo de la prueba para que sepas qué código se está ejecutando y puedas interpretar el mensaje de error, y además capturar la salida de la prueba para que puedas depurar tu código en el navegador usando puts, print, console.log o cualquier función de impresión que ofrezca tu lenguaje.

Los Test Runners son fundamentales para resolver ejercicios en el navegador, pero también se usarán en las soluciones enviadas a través de la CLI. Cuando explores las soluciones de la comunidad de un ejercicio concreto, o cuando mentorices a un estudiante, podrás ver si la solución pasa las pruebas sin necesidad de descargarla y ejecutarla en local.

Problema 2. Práctica de código sin aprendizaje

Problema número dos: Exercism es una plataforma para practicar código, pero no ofrecía ningún recurso para aprender un lenguaje concreto desde cero. Tenías que hacerlo antes en otro sitio.

Los ejercicios de Exercism estaban diseñados para ser interesantes y desafiantes, pero a veces incluso los más fáciles son demasiado difíciles para servir de punto de entrada a un nuevo lenguaje de programación. Esto es especialmente cierto cuando intentas aprender un lenguaje con una sintaxis completamente distinta o que incluso usa un paradigma de programación diferente.

La solución: ofrecer aprendizaje junto con la práctica.

Con la incorporación del Temario y los Ejercicios de aprendizaje, Exercism se ha convertido ahora en una excelente herramienta para sumergirte directamente en un nuevo lenguaje de programación.

Temario

¿Qué es un Temario? Un Temario es un árbol de conceptos que componen cada lenguaje de programación. El Temario es único para cada track de Exercism, porque cada lenguaje de programación es diferente y tiene conceptos distintos.

Los conceptos dependen unos de otros y forman distintas ramas del árbol. Tienes que aprender el concepto anterior de la rama para desbloquear el siguiente.

Por ejemplo, este es el comienzo del Temario de Elixir [captura mostrada en 5:10]. Empieza con un concepto llamado «basics», que abarca: cómo definir un módulo, cómo definir una función con nombre y dónde encontrar la documentación de la biblioteca estándar. Estos conocimientos son necesarios para cada uno de los ejercicios de Exercism. Tienes que aprender basics para desbloquear cualquier otro concepto. Puedes aprender, por ejemplo, sobre Boolean y, una vez que conoces Boolean, puedes aprender sobre la expresión cond, y así sucesivamente.

Para que te hagas una idea, este es el Temario completo de Elixir [captura mostrada en 6:16]. Ahora mismo contiene más de 50 conceptos, pero aún hay que ampliarlo.

Arriba encontrarás conceptos como: strings, listas, mapas y tuplas. En el medio están: el módulo Enum, las expresiones regulares, los structs y la escritura de typespecs. Y al final están: los protocolos, los procesos y las tareas.

Ejercicios de aprendizaje

Aprendes los conceptos del Temario resolviendo Ejercicios de aprendizaje. Los Ejercicios de aprendizaje son distintos de los Ejercicios de práctica. Están diseñados para enseñar conceptos de programación a estudiantes que no conocen en absoluto el lenguaje de programación en cuestión, pero que sí conocen al menos otro lenguaje y los conceptos básicos de programación.

Introducción

Cada ejercicio de aprendizaje empieza con una introducción. La introducción describe información básica sobre los conceptos que enseña ese ejercicio. La mayoría de los Ejercicios de aprendizaje enseñan un solo concepto, pero hay excepciones.

Este ejemplo muestra una introducción sobre los mapas de Elixir [captura mostrada en 7:12]. Explica qué son los mapas, cómo definir un mapa, cómo acceder a un valor de un mapa, etc. Contiene algunos ejemplos de código para mostrar la nueva sintaxis, pero no demasiados, de modo que no puedas limitarte a copiar y pegar la introducción para resolver el ejercicio.

Instrucciones

Después están las instrucciones. Las instrucciones de los Ejercicios de aprendizaje se dividen en pequeñas tareas. Las tareas están diseñadas para animar al estudiante a usar las partes más importantes de cada concepto.

Por ejemplo, el ejercicio de aprendizaje que enseña los mapas hará que el estudiante cree un mapa, luego lea un valor de un mapa, luego actualice un valor en un mapa, luego obtenga todas las claves de un mapa, etc.

Cada ejercicio de aprendizaje tiene una historia, pero la historia no es tan importante. Está ahí para que no tengas que usar valores sin sentido como «foo bar» y «1 2 3», pero no desempeña un papel importante en el ejercicio como ocurre en los Ejercicios de práctica.

Pistas

Cada tarea incluye una pequeña lista de pistas por si el estudiante se queda atascado. Las pistas suelen revelar qué función concreta usar en cada tarea y te llevan a la documentación de esa función.

Practicar los conceptos

Pero resolver un solo ejercicio de aprendizaje no basta para dominar de verdad el concepto. También tienes que practicarlo. Por eso revisamos todos los Ejercicios de práctica que ya existían en la v2 y elegimos unos cuantos que pueden usarse para practicar cada concepto.

Así se ve un solo concepto en el árbol [captura mostrada en 9:01]. Los puntos representan ejercicios. El primer punto, con el icono de bombilla, es un ejercicio de aprendizaje, y los demás puntos son Ejercicios de práctica.

Así se ve un concepto después de resolver unos cuantos ejercicios [captura mostrada en 9:37]. Fíjate en que algunos de los Ejercicios de práctica de este concepto siguen bloqueados, aunque el ejercicio de aprendizaje esté completado. Esto se debe a que los Ejercicios de práctica no se limitan a practicar un solo concepto. Puede que tengas que aprender más conceptos, además de átomos [concepto mostrado en la captura], antes de que se desbloqueen esos ejercicios.

Se supone que los Ejercicios de aprendizaje son triviales para quienes ya dominan un lenguaje determinado. Pero no te preocupes, son totalmente opcionales. Puedes cambiar del modo aprendizaje al modo práctica, lo que te dará acceso inmediato a todos los interesantes Ejercicios de práctica sin tener que recorrer antes el Temario.

Temario = un esfuerzo enorme

Un detalle importante que tengo que mencionar para ajustar tus expectativas es que desarrollar el Temario es un esfuerzo ENORME. No todos los tracks tienen suficientes mantenedores activos como para tener un Temario listo ahora mismo.

En el momento en que grabo este vídeo [4 de septiembre de 2021], los Ejercicios de aprendizaje solo están disponibles en: Common Lisp, C#, Elm, Elixir, F#, Go, Java, JavaScript, Python, Ruby, Rust y Swift. El track de Julia lanzará su Temario pronto.

Problema 3. Tiempo de respuesta largo de los mentores

Problema número tres: el largo tiempo de respuesta de los mentores. No todos los tracks tienen suficientes mentores. Algunos tracks tienen tan pocos mentores que el tiempo de espera para recibir mentoría puede llegar a un mes. Esto siempre ha sido tremendamente desalentador para los estudiantes. Es un problema tan central para Exercism que se está abordando desde tres ángulos distintos.

Feedback automatizado

La solución número 1 es ofrecer feedback automatizado. Gran parte del feedback que los mentores escriben a los estudiantes es repetitivo. Poder detectar errores comunes de forma automática e informar de ellos directamente al estudiante lo cambia todo.

Recibir feedback automatizado sobre errores comunes permitirá al estudiante mejorar su solución incluso antes de pedir mentoría, lo que también hará más fácil el trabajo del mentor. Ahorrará a los mentores tener que mencionar detalles tediosos como snake_case frente a camelCase y podrán centrarse en la esencia de la solución. En algunos casos, el feedback automatizado bastará para satisfacer al estudiante, que ni siquiera pedirá mentoría.

En la v3, hay dos tipos de herramientas para el feedback automatizado: los Analyzers y los Representers.

Analyzers

El Analyzer es una herramienta que busca características concretas en una solución y devuelve al estudiante una lista de comentarios predefinidos sobre lo que encuentra. Qué características busca depende enteramente del lenguaje y del ejercicio concreto.

Por ejemplo, Elixir tiene una convención de nombres muy concreta para funciones y variables. Una de las comprobaciones que el Analyzer de Elixir hace para cada ejercicio es revisar todos los nombres de variables y de funciones. Si encuentra un nombre que no está escrito con snake_case, le recordará al estudiante cuál es la convención de nombres.

Otra comprobación que puede hacer el Analyzer de Elixir es detectar el uso de un módulo concreto. Por ejemplo, esta comprobación [captura mostrada en 13:20] para no usar el módulo Enum es específica del ejercicio de aprendizaje de recursión. Usar el módulo Enum frustra el propósito del ejercicio de aprendizaje, así que el Analyzer le recordará al estudiante que no lo haga y que use recursión en su lugar.

Representers

La segunda herramienta que nos ayudará a ofrecer feedback automatizado en Exercism es el Representer. El Representer toma la solución y elimina las partes no esenciales. Normaliza el formato, elimina los comentarios y la documentación, y sustituye los nombres de funciones y variables por marcadores de posición.

La salida del Representer se llama representación. Cada solución enviada a Exercism se pasará al Representer y su representación se almacenará en la plataforma junto con la solución.

Los mentores tendrán entonces acceso a una interfaz donde pueden explorar las representaciones de las soluciones enviadas. Para cada representación única, un mentor puede dejar feedback sobre esa representación. Después, ese feedback se mostrará a todos los estudiantes que envíen una solución similar que tenga la misma representación. Un mentor solo tiene que escribir el feedback una vez, y el feedback puede llegar a todos los que lo necesiten.

Los propios Representers ya están implementados y desplegados para algunos lenguajes, pero en el momento en que grabo este vídeo [4 de septiembre de 2021], la interfaz para mentores todavía no está en la plataforma, así que tendremos que esperar un poco hasta que esta funcionalidad esté totalmente disponible.

Evitar sesiones de mentoría no deseadas

Otra solución para las largas colas de mentoría es evitar las sesiones de mentoría no deseadas. En la v2, la mentoría era obligatoria para los ejercicios principales. Enviar un ejercicio principal implicaba que solicitabas mentoría automáticamente, y no podías pasar al siguiente ejercicio principal sin la aprobación de un mentor. Muchos estudiantes aprendían el lenguaje resolviendo los ejercicios principales, así que necesitaban la mentoría para guiarlos durante el proceso de aprendizaje.

Esto ya no es así. El papel didáctico de los ejercicios principales y la aprobación de los mentores lo han asumido los Ejercicios de aprendizaje y los Analyzers. En la v3, la mentoría siempre es opcional y hay que solicitarla de forma explícita.

Solicitud de mentoría

Para solicitar mentoría, tienes que responder a 2 preguntas: ¿qué esperas aprender de este track? y ¿cómo puede ayudarte un mentor con tu solución? Al saber de antemano cuáles son las expectativas del estudiante respecto a la sesión de mentoría, el mentor puede elegir las solicitudes de mentoría que mejor encajen con sus conocimientos y su estilo de mentoría, lo que hace más probable que ambas partes salgan satisfechas de la sesión.

Cola de mentoría y favoritos

En la nueva cola de mentoría, los mentores pueden ver estadísticas sobre el historial de mentoría del estudiante. Pueden ver qué estudiante nunca ha recibido mentoría antes y quizá necesite una revisión más cuidadosa, y qué estudiante ha pasado por mentoría muchas veces y entiende cómo funciona.

Los mentores también pueden por fin encontrar a estudiantes a los que mentorizaron antes y entablar una relación con ellos. Los mentores incluso pueden añadir estudiantes a favoritos y usar eso para priorizar la mentoría de estudiantes con los que antes tuvieron una buena experiencia.

Listas de bloqueo

Después de cada sesión de mentoría, tanto el estudiante como el mentor tienen la opción de bloquear a la otra persona. Hay dos listas de bloqueo, la de estudiantes bloqueados y la de mentores bloqueados. Si yo, como mentor, te bloqueo a ti como estudiante, es posible que más adelante tú me mentorices a mí. La otra persona, por supuesto, no tendrá ni idea de que la han bloqueado, así que no puede tomar represalias contra ti.

Puedes bloquear a alguien por el motivo que sea, pero si esa persona está infringiendo el Código de Conducta, asegúrate también de reportarla explícitamente para proteger a los demás usuarios.

Mitigar las consecuencias negativas de las esperas largas

Por último, el último paso para lidiar con el problema de los largos tiempos de espera es asegurarse de que, aunque a veces tengas que esperar, las consecuencias negativas de la espera sean mínimas. En la v3, esperar mentoría no te impide resolver otros ejercicios. Puedes seguir avanzando por el track.

Una sesión de mentoría puede terminarla cualquiera de las dos partes. Si eres estudiante y no te gusta el enfoque que está adoptando un mentor concreto contigo, siempre puedes pedir un enfoque distinto, o puedes optar por abandonar la sesión. Independientemente de cómo termine la sesión de mentoría, el estudiante puede solicitar una nueva sesión de mentoría con otro mentor para la misma solución.

Huecos de mentoría

En cada track, puedes tener de 1 a 4 huecos de mentoría. Tener varios huecos de mentoría puede ayudarte cuando quieres solicitar mentoría para un ejercicio difícil que probablemente no reciba mentoría con rapidez, y aun así poder recibir mentoría para otros ejercicios al mismo tiempo.

Los huecos de mentoría se pueden desbloquear ganando reputación. La reputación se otorga por publicar tus soluciones para que todo el mundo pueda consultarlas, por mentorizar a estudiantes y por contribuir a cualquiera de los repositorios de Exercism. Esto significa que los estudiantes que contribuyen más a la plataforma pueden recibir más mentoría.

Resumen

Estas son algunas de las principales formas en que Exercism cambió el 1 de septiembre de 2021.

Añadimos Ejercicios de aprendizaje para que puedas aprender sin salir de la plataforma, un editor web para que puedas programar sin instalar nada, y Analyzers y Representers para que recibas feedback automatizado de inmediato. También eliminamos muchos bloqueos frustrantes del proceso de mentoría.

Y hay muchísimo más por descubrir: nuestra sección de contribución, insignias, perfiles nuevos, una página de trayectoria con todo tu historial de Exercism y mucho más.

Pásate por exercism.org y pruébalo.

Gracias.

11 de septiembre de 2021 · ¿Te ha resultado útil?