
Un noche de enero del 2007 Dave Thomas, uno de los autores del magnífico libro The Pragmatic Programmers, estaba haciendo un programa en Ruby para implementar un pequeño contador de ciertas palabras que aparecían en los artículos de su blog. Para comprobar el rendimiento creo un test y se puso a probar diferentes técnicas de búsqueda y comparación, observando las enormes diferencias de rendimiento entre distintas formas de solucionar el problema.
Supongo que la mayoría de nosotros nos hubiéramos quedado bastante contentos con haber optimizado el código y que funcionara correctamente. Pero no así Dave, el cual escribió esta magnífica anotación en su blog: A menudo, el verdadero valor de algo no es el que tiene en sí mismo, sino que lo es la actividad que lo creó.
Dave, como nos cuenta en su blog, estando en la ducha se da cuenta que su práctica de 45 minutos la noche anterior era muy similar al ensayo de un músico. Se pregunta qué es lo que había hecho que la ha convertido en una sesión de práctica, y las conclusiones a las que llega las comparte con el resto de la comunidad.
¿A que es obvio y simple?. Pues sobre estos principios tenemos una gran herramienta para probar, equivocarnos, investigar y aprender. Pero Dave no solamente compartió sus reflexiones si no que fue publicando semanalmente un listado de ejercicios a los que llamó Code-Katas. Kata es el nombre que se le da a un tipo de ejercicios de Karate que consisten en repeticiones de ciertas posiciones y movimientos, buscando la mejora constante en pequeños pasos; y es el nombre que eligió Dave y con el que conocemos a esta técnica de aprendizaje.
La llegada de TDD le ha dado una vuelta de tuerca a las Code-Katas ya que le sumamos el ciclo red-green-refactor y utilizamos la práctica para hacernos a esta nueva técnica de desarrollo que es tan extraña para quien no está acostumbrada a ella.
La única precaución que se debe tener en cuenta es que estamos haciendo prácticas con ejemplos ideales y dirigidos. Es decir, muy raramente nos vamos a encontrar problemas tan simples y sencillos en el mundo real. Y, como dice el dicho, la realidad siempre supera la ficción. También hay que no caer en la tentación de igualar Code-Kata con TDD. Se puede hacer una Code-Kata sin tan siquiera test unitarios, siempre que el feedback sea el suficiente.
Practicar, practicar, practicar.
Vía: Code-Kata. How It Started.
Más información: 12 meses, 12 katas, Coding Dojo