Recientemente David Heinemeier Hansson, creador del framework Rails, publicó un artículo titulado TDD is dead, long live testing que causó cierto debate con referentes de la disciplina. Incluso Uncle Bob y Kent Beck dedicaron incluso algunas líneas a la cuestión.
Personalmente creo que TDD es una práctica muy útil, la uso a menudo, pero no todo el tiempo ni para todo. Me gusta y suelo usar TDD cuando tengo que escribir lógica negocio. Generalmente no uso TDD cuando tengo que escribir lógica de presentación y cosas por el estilo.
Lo que destaco de este intercambio de opiniones es que me ha dado material para trabajar con mis alumnos :-).
Había leído lo que dijo DHH, pero no lo de Uncle Bob (que me parece que se va por las ramas al defenderse de un ad-hominem que no veo) y de Kent Beck (a quien veo más centrado a la hora de contestar).
Como casi cualquier «buena práctica» que anda dando vueltas, creo que TDD es un Camino y una Herramienta, y no el destino; El destino es entregar soluciones (no necesariamente de Software) a los interesados.
Personalmente, TDD me sirve cuando no estoy seguro sobre el diseño de lo que quiero implementar, pero sí cómo lo quiero usar (o cuando puedo descubrir eso fácilmente). Una vez definida la interfaz y lo que espero que ésta resuelva, puedo empezar a trabajar para adentro, agregando la implementación.
Coincido respecto de lo de Uncle Bob.
Gracias por el aporte.
Yo apenas soy un novato en TDD, pero me parecen acertadas las observaciones en este post referente a los niveles de experticia Shu-Ha-Ri: @tooky: «To TDD or not to TDD? That is not the question!» – @sebrose http://t.co/ONW8Fl9mor