April 8, 2019

Introducción a TDD en AsturiasHacking

Los pasados días 4 y 5 de abril impartí mi primer taller de introducción a TDD en AsturiasHacking. Después de varios años (co-)organizando esta comunidad, tenía claro que el tema levantaba cierto interés entre los participantes, que siempre intentaban algún tipo de aproximación cuando realizamos actividades prácticas (como el Global Day of Coderetreat).

Mi objetivo para el taller era introducir test-driven development desde una perspetiva nada dogmática, basada en mi experiencia y donde quedara evidente que se trata de otra herramienta más, útil especialmente de cara a diseñar software y poco efectiva de cara a realizar labores exhaustivas de quality assurance.

La manera de organizar el taller se dividió en dos tardes, con dos horas de duración cada sesión. Durante el primer día realizamos una introducción teórica a la metodología: cuáles son sus "normas" y beneficios. Para después dedicar un rato a programar en parejas para poder aplicar los conceptos aprendidos.

El segundo día, sin embargo, lo aprovechamos para discutir diferentes estrategias para enfrentarnos a código legacy y cómo relacionar nuestro código con el resto de colaboradores de un sistema ya en producción. Para ello, introdujimos el concepto de test doubles, con sus diferentes tipos y propósitos, para terminar con una parte práctica donde los participantes debían enfrentarse a un código sin pruebas, con un diseño muy acoplado y sobre el que realizar una pequeña extensión de su funcionalidad.

El feedback sobre la sesión fue muy positivo. Por ejemplo, las siguientes citas ilustran bastante bien las conclusiones que salieron en el closing circle:

He aprendido, más bien descubierto, una nueva forma de afrontar o aproximarme a la creación de código nuevo.

Me ha sorprendido la forma real de usar TDD ya que sí creía que era únicamente [hacer] tests.

Me ha sorprendido como trabajar en pequeños pasos ayuda a centrarte en el problema.

En este enlace os dejo un documento con todos los recursos y bibliografía utilizados durante la sesión.