Si alguna vez practicaste kárate o judo estarás familiarizado con el concepto de kata (型 ó 形), término japonés que significa literalmente «forma», y que designa conjuntos de movimientos prefijados que se utilizan para aprender y practicar diversas técnicas, así como para mejorar la precisión, la fluidez o la velocidad con las que estas se ejecutan. El kata Heian Shodan del estilo Shotokan, por ejemplo, uno de los primeros que aprende un estudiante, permite practicar algunas de las técnicas más elementales del kárate, como giros, desplazamientos y golpes de puño.
El concepto de kata, no obstante, no es exclusivo de las artes marciales. Lo podemos encontrar también en otros ámbitos de la tradición japonesa, como son el teatro kabuki, la caligrafía, o la ceremonia del té.
Aplicado a la programación, el concepto de kata de código, acuñado por Dave Thomas, co-autor de «The Pragmatic Programmer», del que os hablé en 10 libros míticos sobre programación que todo desarrollador debería leer, se traduce en pequeños ejercicios, de menos de 1 hora de duración, que nos ayudan a aprender y mejorar; especialmente, pequeños retos de programación diseñados por terceros, con un propósito específico en mente.
Las katas de código, de igual forma que las katas de las artes marciales, se pueden practicar sólos o por parejas, siguiendo las mejores tradiciones de las metodologías ágiles (pair programming), y pudiendo así beneficiarse de los intercambios de opiniones, y las sugerencias de la otra persona. Igualmente, así como en el kárate se utilizan los combates de práctica (kumité) como sistema fundamental de aprendizaje, también es interesante publicar nuestras soluciones y compararlas con las de otros programadores, embarcándonos en una sana competición por la búsqueda de la mejor solución posible.
Si estás interesado en el concepto de kata de código, no dudes en apuntarte en tu dojo de programación más cercano… ¡o crear uno tú mismo!
Hola Mundo Geek 😉
Justo ahora que sacas ese tema hace unos meses que surgió la iniciativa #12meses12katas a través de este post http://www.sharpbites.com/2011/01/new-year-resolutions.html y partiendo de ahí http://www.12meses12katas.com por si quieres echarle un vistazo y recomendarlo en el blog 🙂 Las katas son una muy buena manera de aprender.
Un saludo
Tiene buena pinta. ¿Es una iniciativa tuya, katero?
Entiendo pues que es un concepto muy similar al Project Euler (http://projecteuler.net/) o Code Golf (http://codegolf.com/), ¿no?
A mi personalmente Project Euler me ha gustado mucho para practicar un poco, pero es demasiado «matemático». No estaría mal una recopilación de sitios web que ofrezcan estos ejercicios tan recomendables.
¡Saludos!
Sí, todos los ejercicios de Project Euler podrían considerarse katas.
Oh, gracias!, no conocía el project Euler.
Ya me he apuntado 😀
Pingback: Todo un desproposito :: Ejercicios de programación :: March :: 2011
Mi memoria es lamentable, ya no me acordaba que tenía en mis favoritos guardadas un montón de páginas. Pongo en enlace a mi blog (donde acabo de pegarlas) porque es bastante largo, pero creo que a alguno le interesará:
http://desproposito.blogsome.com/2011/03/02/ejercicios-de-programacion/
¡Perdón por el autobombo!
Para nada tienes que pedir perdón. Seguro que a más de uno le es de utilidad 🙂
TopCoder?
uva.onlinejudge.org?
SPOJ?
http://www.sql-ex.ru/
Tiene excelentes katas (o mini katas) para practicar SQL 😉
Yo practicaba Judo y no tenía idea de esto O.O
Pues macho, yo hice Judo unos cuantos años y si se habla de katas osotogari, son llaves, etc etc, pero si es verdad que es mças típico de karate que de Judo.
Yo también hice Judo. Las series de katas son para cinturón negro. Para el primer dan son tres series de tres movimientos. Creo que para el segundo dan son otras 2, pero ya no llegué tan lejos 🙂
Pingback: 12 meses, 12 katas
Pingback: 12 meses 12 katas « TeKNo dUKe's Blog
Hace años que no escuchaba de las Kata
Pingback: El lenguaje de los grandes programadores
Pingback: Mama quiero ser programador « "No claudicar en actitud vencida"