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.