Concha Asensio

Mejorando nuestras habilidades con las katas de código

En programación, las katas de código son ejercicios mediante los cuales, a base de repetirlos, se pretende mejorar nuestra forma de desarrollar o practicar una determinada técnica de programación.

Como es probable que hayas imaginado, su nombre hace referencia a las katas de las artes marciales. Dentro de éstas, las katas consisten en una secuencia de movimientos (técnicas) que se pueden practicar tanto en solitario como en parejas y cuyo objetivo es entender mejor lo que se está haciendo y mejorar progresivamente, tanto la velocidad como los detalles en la ejecución de las distintas técnicas.

Tanto en las katas de código como en las de artes marciales, la repetición es la base no sólo del aprendizaje, sino de la interiorización de los distintos movimientos. No sólo son útiles para quienes están empezando o no tienen demasiada experiencia, sino que incluso a los “maestros”, el hecho de repetir muchas veces una misma kata, les sigue aportando valor y conocimiento.

En qué consiste y qué aporta “entrenarnos” realizando katas.

Centrándonos en las katas de código, se trata generalmente de ejercicios relativamente cortos y sencillos, en los que se plantea un problema a resolver que suele ir destinado a trabajar una técnica de programación concreta: TDD, refactorización, estructuras de datos, patrones de diseño, etc. El objetivo principal de las katas no es finalizar el ejercicio o resolver el problema, sino practicar e interiorizar ciertas formas de desarrollar.

Al igual que en artes marciales, también podemos realizar las katas de código solos, en parejas (pair programming) o en grupo (ensemble/mob programming). En mi caso, practicar de forma individual me ha servido (sobre todo al principio) para tener la calma necesaria para hacer las cosas a mi ritmo, sin la “presión” de tener a otra persona mirando o esperando. Me fue útil, sobre todo, para ganar algo de seguridad programando, hacerme (más o menos) con el manejo del IDE (atajos de teclado, refactors automáticos…) e ir adquiriendo ciertas formas de trabajar: simplificar, baby steps, descomponer el problema en problemas más pequeños, o el ciclo red-green-refactor de TDD.

Sin embargo, como más disfruto y siento que mejoro realmente es cuando las hago con alguien más, ya sea en pair o mob programming. De esta forma podemos sacarle más partido, puesto que además de practicar lo que hemos visto antes, conocemos otras formas de pensar y de hacer. Se crea un espacio en el que se comparten distintas ideas y visiones sobre cómo abordar el problema y eso es muy enriquecedor, pues aporta ya no sólo a nivel de código, sino que permite mejorar nuestras habilidades de comunicación, dar y recibir feedback y trabajo en equipo.

Por ello, creo que puede ser algo muy interesante para las empresas incorporar en sus equipos este tipo de prácticas como parte de su plan de aprendizaje y mejora. Una idea sería, por ejemplo, de forma periódica generar un espacio de tiempo en el que los miembros del equipo realicen una kata con unos objetivos determinados prefijados. Es importante tener en cuenta que este espacio debe ser seguro y lo más inclusivo posible, para que todas las personas se sientan libres de realizar sus aportaciones y se genere ese espacio de compartir conocimiento. También hay que tener en cuenta que no es una competición para ver quién llega antes a la solución, o quién tiene la mejor forma de hacer las cosas. Se trata de ejercicios cooperativos, donde el objetivo principal es practicar, aprender, compartir conocimiento y, por tanto, la mejora tanto individual como del equipo.

Algunos recursos para empezar a practicar.

Si te animas a practicar con ellas, te dejo por aquí algunos recursos donde puedes encontrar diferentes katas para ir “entrenando”:

👉🏻 CodeKata

👉🏻 Coding Dojo

👉🏻 Katalyst

Por otro lado, comentarte que en varias comunidades de Software Crafters, como la de Murcia o Vigo, se suelen organizar eventos (tanto en remoto como presencial) en los que se propone una kata para resolverla programando en grupo y en distintos lenguajes.

Por último, las chicas de CodingIsCaring resuelven katas en sus directos de Twitch. Y si no puedes verlas en directo, tienes todos los vídeos en su canal de YouTube.

Hajime!