Baby steps

by Francho Joven

11 Jun 2016

. Comments

baby steps

Los programadores debemos estar formándonos continuamente. El hacer katas (pequeños ejercicios de programación enfocados a aprender “movimientos”) es una forma divertida de hacerlo.

Una de las katas que me gusta repetir de vez en cuando es la Guilded Rose, un ejercicio de refactorización de un código espagueti legado. Es una kata bastante famosa y está disponible para la mayoría de lenguajes de programación. Suelo hacerla a modo de “hola mundo” cuando empiezo a aprender un nuevo lenguaje o cuando quiero probar nuevos enfoques (a lo funcional, orientada a objetos, con patrones, sin ifs…). En definitiva, la he escrito tantas veces que ya he perdido la cuenta.

Ayer acudí al dojo organizado por Agile Aragon y los Senpai Devs a practicar de nuevo con esta kata. Me apetecía hacerla en Ruby para aplicar lo que he aprendido en los últimos años. Así que me puse de pareja con @SAReyes_ que no conocía el lenguaje y quería probarlo. Partimos de un código cubierto por unos tests que encontré por internet (me gustaron por el uso de la librería rspec/given).

Los primeros pasos fueron bastante bien pero llegados a un punto nos quedamos atascados (no podíamos continuar sin hacer un megarefactor). Al tratar de explicar nuestro enfoque a @gualison que ejercía de facilitador nos dimos cuenta que estaba demasiado condicionado con la solución a la que pretendía llegar (tenía en la cabeza la que implementé la última vez)… ¡habíamos hecho sobreingeniería!

Tratamos de recular, pero el tiempo se nos echó encima, así que me fui a casa con la mosca detrás de la oreja.

Como me conozco y sabía que no iba a poder dormir si no me la quitaba decidí hacer de nuevo la kata. Con la música sonando a todo trapo en los cascos traté de dejar la mente en blanco, olvidando cualquier solución previa que pudiera condicionarme, y fui avanzando en pequeños pasos, optando primero por el paso más sencillo o el más evidente. Esto me permitió retrasar decisiones de diseño hasta los últimos commits.

El código resultante me gusta bastante y es mucho mas bonito que el que tenía en mente cuando acudí al dojo. Está claro que cuando nos enfrentamos a problemas de este tipo, con código mostruoso los “baby steps” ayudan mucho… ¡lección aprendida!

¿Y a vosotr@s que os parece como ha quedado?… se admiten code reviews ;)