Un Dojo es donde se practican las artes marciales. Es una palabra japonesa que significa "lugar donde se estudia el camino", por lo tanto tiene un componente filosófico que va más allá de un gimnasio. En un dojo se trabaja tanto el cuerpo como la mente.
Por lo tanto un coding dojo no es más que un espacio donde poder mejorar nuestras habilidades como programadores.
Un Dojo es donde se practican las artes marciales. Es una palabra japonesa que significa "lugar donde se estudia el camino", por lo tanto tiene un componente filosófico que va más allá de un gimnasio. En un dojo se trabaja tanto el cuerpo como la mente.
Por lo tanto un coding dojo no es más que un espacio donde poder mejorar nuestras habilidades como programadores, al igual que los músicos ensayan antes de los conciertos o los atletas entrenan antes de las competiciones deportivas, los informáticos debemos mejorar nuestras habilidades como desarrolladores de software antes de realizar proyectos para nuestros clientes.
El funcionamiento de un coding dojo es el siguiente, se propone un ejercicio y hay que intentar resolverlo. Si utilizamos la terminología correcta de los coding dojos tendremos que reescribir la frase de arriba de la siguiente manera. El facilitador propone una kata y mediante varios sprints y pair programming debemos intentar resolverla.
Por eso necesitamos saber que quieren decir cada una de las palabras en negrita:
- Facilitador: persona que "dirige" la sesión. Propone la kata, el objetivo y modera los debates
- Kata: es un ejercicio de programación, que mediante la práctica y la repetición, te ayuda a mejorar tus habilidades como desarrollador
Imagen cortesía de Michael Hultström
- Sprint: periodo de tiempo del que disponemos para realizar una tarea
- Pair programming: Se trata de "picar" código entre dos, uno programa (driver) y el otro revisa el código (observer), y cada poco tiempo se intercambian los roles
Cada coding dojo debe tener un objetivo, este objetivo debe hacer foco en mejorar una habilidad, ya sea de diseño, de test, de patrón de software, … y se escoge una kata que haga foco sobre el objetivo a conseguir.
Una vez que tenemos el objetivo y la kata hacemos un sprint para intentar resolverla. Una vez finalizado sprint se abre un periodo de debate, donde, entre todos, comentamos ¿que ha ido bien?, ¿donde nos hemos atascado?, ¿cómo podemos mejorar?, ¿qué debemos evitar?, … A continuación, se empieza un nuevo sprint.
En función de la kata, el objetivo o los participantes, en este nuevo sprint se pueden introducir modificaciones en el enunciado (añadir un requisito más, borrar todo los códigos hecho hasta ahora y empezar de nuevo, añadir una restricción, intercambiar parejas, ….) y de nuevo un debate al finalizar. Y se van haciendo sprints y debates hasta finalizar el coding dojo.
Como ejemplo, si un coding dojo dura 2h se puede hacer una breve presentación de la kata (5 minutos), dos sprints de 45 minutos y dos debates 10-15 minutos. O bien 3 sprints de 30 minutos y 3 debates de 10 minutos.
Después de esta explicación seguro que todavía tiene dudas:
- Qué IDE utilizamos?
Utiliza aquel que más conozcas, para centrarte en la kata y no en el entorno.
- ¿Qué lenguaje de programación utilizamos para resolverla?
Esta respuesta dependen del facilitador o bien de ti mismo. Si el facilitador quiere hacer foco en un lenguaje de programación en concreto seguramente será fijado, si no utiliza aquel en el que tú quieras mejorar o te sientas más cómodo.
- ¿Qué hacemos con el código al finalizar?
Tirarlo, borrarlo, eliminarlo. El objetivo es mejorar tus habilidades como desarrollador, no que tengas códigos de ejemplo para cuando te encuentres casos similares. Si practicas menudo y mejoras tus habilidades cuando te encuentres casos similares los podrá resolver fácilmente.
- ¿Cuánta gente puede asistir el coding Dojo?
Depende, se pueden hacer coding dojos con más de 30 personas o bien entre 4 o 5, incluso tú solo. Cada día antes de empezar a desarrollar haces un sprint de 30 minutos para resolver una kata concreta.
Como reflexión final: los últimos años en el inLab FIB hemos cambiado muchas cosas, cambiamos de nombre (antes nos decíamos LCFIB), hemos arrancado el programa TalentSI (un programa de formación interno) entre nuestros colaboradores en formación y hemos empezado a utilizar las metodologías Agile para desarrollar proyectos de software. Todos estos cambios se pueden ver reflejados en una sola liturgia, los Coding dojo. Mejoramos nuestras habilidades para desarrollar proyectos que satisfagan nuestros clientes.