Koans, Katas y Études

El pasado 22 de julio estuve dando una charla a un grupo de estudiantes de un curso de programación dado por Fernando de Sopinet y surgió la pregunta de ¿cómo mejorar en la programación? ¿qué podemos hacer para mejorar nuestra forma de programar?

En ese momento me vino a la cabeza un artículo que escribí tiempo atrás sobre Études de Erlang y recordé que había otros terminos que había escuchado también en foros ágiles como koans o katas. En este artículo quiero hacer un repaso a cada una de estas técnicas y dejar algunos sitios que puedan ser de utilidad para mejorar en nuestras destrezas de programación.

Études

El término viene del francés y significa Estudio. Está basado en los estudios musicales o prácticas que realizan músicos cada día para mantenerse en forma y progresar poco a poco en sus destrezas como músicos.

El libro de Études de Erlang propone una serie de ejercicios para mejorar nuestro desarrollo en este lenguaje y en las diferentes áreas de que dispone el lenguaje. Además, a día de hoy podemos seguir también los Études de Elixir que de la misma forma nos permite explorar el mensaje y abrir nuestra mente para conseguir solucionar de forma más rápida cada uno de los problemas a los que nos enfrentamos a la hora de programar.

Para otros lenguajes más conocidos como Python también existe un libro Études for Python publicado por O’Reilly.

De forma general podemos encontrar el libro Études for Programmers que de forma abstracta nos da una guía de ejercicios básicos y avanzando en dificultad, pero siempre con la idea de que podamos aprender, progresar y agilizar nuestra forma de programar y de Pragmatic Programmers este Exercises for Programmers basado también en la idea de los Études.

En el blog de The ByteBaker se puede leer una frase en su entrada Etudes for programming con el sentido que buscamos a la hora de buscar estos recursos:

Me di cuenta esta semana que soy un programador bastante lento. He ido mejorando con los años pero soy aún lento, especialmente si hay implicada una gran cantidad de diseño de API. Aunque creo que escribir un montón de código me hará más rápido con el tiempo, me hubiese gustado tener un enfoque más estructurado, centrado.

Así comienza su análisis con el que concluye que le gustaría encontrar aún más études estructurados junto con los libros que utiliza para aprender.

Koans

Adoptado de la tradición zen, un Koan es un problema que un maestro plantea a un alumno para comprobar sus progresos. Normalmente un Koan te obliga a pensar de otra forma para poder llegar a un mejor entendimiento y progresar.

Ruby tiene una página dedicada a koans llamada RubyKoans. De la página podemos descargar todos los koans disponibles e ir repasando y aprendiendo poco a poco. Algo menos elaborado podemos encontrar otros koans para otros lenguajes como:

Además de una página que almacena una colección de koans bastante extensa y en muchos y diferentes lenguajes.

Igualmente de forma general podemos encontrar el libro The Codeless Code disponible para lectura online con muchos problemas y en muchos lenguajes disponibles. Realmente vale la pena echarle un vistazo.

Por último mencionar que Laura Diane Hamilton, Technical Product Manager de Groupon, escribió en su web la forma de aprender un lenguaje de programación mediante koans.

Katas

Kata es una palabra japonesa que significa forma. Se usa en artes marciales, teatro y otras doctrinas artísticas. Indica una serie de movimientos que se han de practicar solo. Se comienza con katas simples y se va aumentando la dificultad y rapidez a medida que el alumno está preparado.

El blog de Bitix escribió en 2014 un artículo explicando la necesidad de utilizar este tipo de enseñanza (katas) para interiorizar todas las buenas prácticas de programación que otros libros solo exponen de forma teórica.

En la página 12 meses, 12 katas proponen cada mes una nueva práctica con la que poder progresar y no quedarnos estancados en el ámbito de la programación. Al igual que los koans, con las katas nos plantean problemas sencillos que requieren de cierta reflexión y así poder ir incrementando nuestro conocimiento del lenguaje y nuestra capacidad de resolver problemas más rápidamente.

En este artículo la web de CodeKata nos propone 21 katas para progresar en nuestro conocimiento de los lenguajes de programación.

Como puedes ver por los enlaces, los katas no están ligados a un lenguaje en específico. Se basan más en tu capacidad para resolver el problema y traducirlo al lenguaje específico.

Algunos sitios no solo se han centrado en proponer katas, sino que han creado un dojo, un coding dojo, donde poder reunirse con otras personas (física o virtualmente) y tratar los problemas, soluciones y perfeccionar su conocimiento con ayuda de otros.

Desafíos

Además de todo lo anterior, también podemos ver competiciones donde no solo nos proponen ejercicios, sino que se plantean como un desafío dado el nivel de dificultad que suelen tener y la velocidad a la que hay que resolverlos para poder optar a una posición en el ranking.

Aunque hay muchos hackaton distribuidos por toda la geografía española, que se celebran con regularidad y algunos son incluso a nivel internacional, se han hecho muy conocidos y famosos la HackerCup de Facebook y el Google CodeJam. Ambos se desarrollan de una forma muy similar y se basan en resolver los problemas que plantean en un tiempo determinado.

Conclusiones

Estas prácticas no son solo buenas para el aprendizaje, sino también para refrescar la memoria. No todos los días empleamos el lenguaje de programación al 100%, por lo que con el tiempo puede que vayamos olvidando algunas cosas. Viene bien recordar la forma en la que resolver ciertos tipos de problemas por si se presentan en el futuro o al día siguiente en el trabajo, que podamos resolverlos fácilmente como hacemos el desarrollo de otros problemas más cotidianos en nuestro día a día.

¿Realizas algún tipo de ejercicio para mantener en forma tu habilidad de programación?, ¿te has planteado unirte o buscar un coding dojo?, ¿necesitas más información sobre los ejercicios para tus propios koans, katas o études? ¡Déjanos un comentario!