Uno de los aspectos menos populares de TDD es el de la productividad. La tendencia es pensar que TDD nos hace ir más lentos en el desarrollo ya que nos detenemos a pensar y a escribir ejemplos para ir diseñando el código de producción. Sin embargo, la experiencia nos dice que a medio y largo plazo la inversión en tiempo es de sobra recuparada gracias a un código más fácil de mantener y con un menor número de defectos.
Lo que es menos evidente es que TDD aumenta nuestra productividad al mantenernos concentrados en todo momento en lo que hacemos. Leyendo a David Allen en “Getting things done, the art of stress-free productivity” podemos observar una cantidad enorme de similitudes entre las técnicas de productividad descritas por el autor y TDD. David lleva décadas ayudando a personal de empresas de diverso tipo a trabajar de una manera más productiva y es considerado un experto en la materia.
Basicamente nos habla de que la productividad pasa por tener la cabeza limpia de preocupaciones y tareas pendientes, algo que en TDD cumplimos con nuestra libreta. La libreta nos permite tener una lista de próximas tareas a implementar a la vez que nos permite tener la cabeza vacía y centrada tan sólo en el ejemplo que estamos abordando. Gracias a que los tests nos proporcionan un feedback rápido, el ritmo de ir abordando tareas de la libreta puede llegar a ser muy productivo, siempre que respetemos las reglas de TDD, tales como escribir tests que se ejecuten en milisegundos.

Cuando nos lanzamos a escribir código de producción sin ejemplos (tests) de uso primero, nuestra cabeza está llena de ruido y aumenta la probabilidad de introducir defectos en el código, además de que se nos vaya el santo al cielo.

Una página del libro de David dice:

¿Por qué le damos vueltas a las cosas en la cabeza?

  • Porque no tenemos claro cual es el resultado que queremos obtener
  • Porque no hemos decidido cual es la siguiente acción que deberíamos afrontar
  • No hemos escrito en ningún sitio el resultado que queremos ni las próximas acciones

Está claro que todo eso nos lo quitamos de encima practicando TDD. Según el autor la cantidad de cosas que tenemos en la cabeza es inversamente proporcional a nuestra productividad. Es decir, cuanto más ruido en la cabeza menos producimos. De hecho, la principal causa de atasco en los proyectos no es la falta de tiempo, sino la ausencia de definición de cosas por hacer o tareas pendientes. “No hay razón para tener un pensamiento dos veces, salvo que te guste ese pensamiento.” Extrapolando: ¿Por qué seguir preocupados por aquel caso en que la función lanza aquella excepción?

La sensación de que estamos siendo productivos nos lleva a la sensación de que estamos avanzando en los proyectos que a su vez nos produce la satisfacción del trabajo bien hecho. Esta filosofía de la mente vacía y clara no solo aparece en el libro de David Allen sino que podemos leer el mismo mensaje en otras corrientes como las artes marciales, etc…

Ante la pregunta clásica de … “¿qué pasa si haciendo TDD se te olvida un ejemplo y se produce un bug?” mi respuesta siempre es… “¿acaso la probabilidad de que eso pase, disminuye cuando NO haces TDD?”.

Cuando compagino TDD con la técnica del pomodoro soy todavia más productivo. A día de hoy recomiendo muchísimo la técnica del pomodoro 🙂