Cómo facilitar un Coderetreat en tu próximo evento
Sergio
Un coderetreat es una actividad dedicada a la práctica deliberada de desarrollo de software. Se empezó a facilitar en grupos de software crafting y se ha popularizado mucho gracias al Global Day of Coderetreat: un día en el que decenas de comunidades alrededor del mundo se juntan para celebrar un coderetreat, aprender y pasar un rato divertido en compañía.
La mecánica de un coderetreat es sencilla: utilizando una kata de programación (fácil pero lo suficientemente compleja como para generar un mínimo de discusión, habitualmente El juego de la vida), un grupo de participantes lo resuelven en parejas a través de varias rondas donde se aplican (o no) restricciones. Pero lo más importante viene a continuación:
- El objetivo es pasárselo bien. Es un evento social y colaborativo.
- No es importante terminar el problema. Es una oportunidad para aprender, experimentar y poner el foco en los fundamentos de desarrollo de software (diseño de software, buenas prácticas).
- Después de cada ronda, se tiene que borrar el código y volver a empezar.
Formato
La duración habitual de un coderetreat es de una jornada (ocho horas), por lo que suele dar tiempo a practicar en torno a 5 ó 6 rondas. Además, hay una serie de puntos que ayudan a enriquecer la sesión y dotarla de mayor profundidad: la introducción, la explicación de cada ronda y el cierre.
Introducción
Aquí, las personas encargadas de facilitar el coderetreat, utilizan unos 20 minutos para crear el contexto adecuado para que el resto de asistentes puedan sacar el máximo partido de la actividad. Es importante remarcar las diferencias entre el trabajo del día a día y la oportunidad de practicar software de manera deliberada: sin presión, con el objetivo de retarse, aprender y pasar un rato divertido.
Hay metáforas muy recurrentes que suelen ayudar a transmitir este concepto de manera efectiva. Por ejemplo, el músico que practica escalas musicales durante varias horas al día para después ejecutar de manera correcta una pieza o la atleta que realiza diversos ejercicios durante el año para poder realizar una buena actuación en la siguiente competición. En un coderetreat, hay que adoptar la mentalidad del músico y la atleta.
Formación de parejas
Antes de cada ronda, las participantes tienen que organizarse en parejas. Un coderetreat es una actividad participativa y colaborativa, por lo que es muy importante proporcionar herramientas que permitan generar un espacio seguro que evite situaciones desagradables. Para ello, no olvides tener a punto un código de conducta y propocionar pegatinas donde cada persona pueda indicar su nombre y sus pronombres preferidos.
Además, ¡las pegatinas pueden ayudar a romper el hielo! Anima a las asistentes a que utilicen las etiquetas para indicar qué lenguajes o técnicas de programación conocen y cuáles les gustaría aprender.
Explicación de cada ronda: restricciones
Una de las cosas que hacen especial un coderetreat es que se trabaja, durante un día completo, en un único problema. Para favorecer que las parejas se animen a explorar nuevos caminos y se planteen soluciones alternativas, es habitual trabajar con nuevas restricciones en cada ronda que eviten que los participantes elijan siempre la solución más evidente o directa. Hay que recordar que el objetivo de un coderetreat no es terminar el problema (ni resolverlo más rápido o más despacio) sino disfrutar del proceso y reflexionar sobre los fundamentos del desarrollo de software.
En esa línea, las restricciones suelen estar orientadas a incentivar un pensamiento crítico. Por ejemplo:
- Resolver el problema sin poder escribir métodos/funciones de más de 4 líneas.
- Resolver el problema sin poder utilizar estructuras condicionales.
- Resolver el problema sin poder utilizar primitivas (
string
,int
,boolean
) como parte de la interfaz pública.
También se pueden utilizar restricciones divertidas, que ayuden a dinamizar la actividad (especialmente, para sesiones vespertinas donde ya se empieza a agotar la energía):
- Baby Steps: se trabaja en bloques de 2 minutos. La pareja sólo puede guardar los cambios si, al terminar el tiempo, todos sus tests están pasando. De lo contrario, se verán obligados a eliminar el código y volver a empezar.
- Silent Pair-Programming: la pareja no puede hablar entre sí, únicamente pueden comunicar su intención a través de código.
Al introducir cada ronda, es mejor no explicar qué se está buscando con cada restricción y permitir que las participantes reflexionen durante el transcurso de la sesión. Se pueden utilizar los minutos finales para poner en común los distintos puntos de vista.
Conclusiones de cada ronda
Al final de cada iteración, guárdate 10 minutos para poner en común impresiones sobre la ronda. Por ejemplo: qué les ha enseñado la restricción o qué les ha llamado la atención de la solución a la que han llegado con su pareja. Si el grupo no es muy participativo, puedes utilizar las notas recopiladas durante la sesión y utilizarlas como punto de partida para esta conversación.
Cierre de la actividad: closing circle
El closing circle es una manera refrescante de terminar la actividad, ya que permite a todo el mundo compartir las cosas que más le han llamado la atención del coderetreat y contribuye a reforzar la idea de que han sido unas horas bien invertidas 🙂
Para facilitarlo, reparte unos post-its y deja algo de tiempo para que se pueda responder a las siguientes tres preguntas:
- ¿Qué has aprendido hoy?
- ¿Qué te ha sorprendido hoy?
- ¿Qué piensas hacer distinto a partir de ahora?
Una vez pasado el tiempo, y en una disposición en círculo (si se trata de un evento presencial), cada persona escoge una de sus tres respuestas y la comparte públicamente.
Otras cosas a tener en cuenta
- Entornos de desarrollo, listos. Si no quieres perder varias rondas, es mejor que te asegures de que las personas que asistan al evento lo hagan con un entorno de desarrollo listo para empezar a trabajar. Por lo general, únicamente se necesitan un editor, un lenguaje de programación y un framework de testing instalado y funcionando. Comparte enlaces a repositorios con esqueletos de proyectos o facilita una sesión un par de días antes del coderetreat donde puedas ayudar a la gente a preparar su entorno.
- Se buscan: facilitadores y hosts. Por lo general, es recomendable dividir las labores de facilitación y host entre, al menos, dos personas. Un coderetreat necesita de bastante facilitación para asegurar que la gente entiende el objetivo, el problema y las restricciones, y eso es difícil de articular si hay que dedicar gran parte del tiempo a hostear el evento.
- El juego de la vida. Aunque no es obligatorio utilizar esta kata, se ha demostrado que funciona muy bien. Es un problema sencillo de entender pero con todos los elementos necesarios para generar discusión. Si vas a facilitar un coderetreat, no olvides tratar de resolverlo al menos una vez; te permitirá mantener conversaciones más ágiles con los participantes.
- Eliminar el código antes de cada ronda. Este es uno de los puntos fundamentales del coderetreat y, habitualmente, el más difícil de aceptar por las participantes. Si estás facilitando la actividad, ayuda a los asistentes a entender los beneficios de hacerlo (enfrentarse al problema desde cero en cada iteración, experimentar con distintos enfoques).
Recursos interesantes
- Coderetreat. Hosting and facilitation. Este libro de Adrian Bolboaca proporciona todo lo necesario para facilitar y albergar un coderetreat.
- Activity catalogue: Constraints. Además de los ejemplos descritos más arriba, aquí puedes encontrar más restrcciones para jugar durante la facilitación.
Crea una página para tu comunidad y empieza a programar eventos en pocos segundos.
Utiliza una plataforma independiente dedicada a comunidades tecnológicas que no utiliza anuncios ni compromete tu privacidad.