No sé si hay mucho que pueda decirle a personas para convencerlos del valor de TDD. Puede citar lo que los expertos nos han contado al respecto, y sus propias experiencias personales, pero si la gente no está dispuesta a intentarlo, es probable que compartir esta información con ellos sea muy útil.
Mi experiencia con TDD fue básicamente que sonaba como una muy buena idea, pero nunca funcionó de la forma en que se suponía. Entonces, un día lo probé de nuevo en una nueva tarea y terminé con una solución al problema que era más simple de lo que hubiera creído posible, debido enteramente al hecho de que había usado TDD. Creo que cuando los desarrolladores tienen este tipo de experiencia, cambia la forma en que ven las cosas, y los hace más dispuestos a probarlo en otras situaciones.
El desafío es poder demostrar esto a los otros desarrolladores. Una forma en que puedes hacer esto es con el uso de un TDD Kata como this one de Roy Osherove (lo usa en su Curso Máster de TDD). Está diseñado específicamente para demostrar el valor de trabajar en pequeños pasos, implementando solo el código que se necesita para hacer pasar cada prueba. Esto puede mostrarle a la gente cómo funciona el proceso y hacer que se sientan más cómodos con probarlo.
Hubo también un ejercicio de codificación del que escuché que le dio a dos grupos/equipos de desarrolladores una tarea bastante simple, y le pidió a uno de los grupos que usara TDD, y se aseguró de seguir lo más simple que pudiera funcionar "reglas, mientras que el otro equipo hizo las cosas como quisieran. Luego, una vez hecho esto, los equipos cambian de tarea, pero arrojan el código escrito por cada equipo, dejando solo las pruebas. Se supone que los equipos deben recrear el código para la tarea. Normalmente encontrará que el equipo que hereda el código TDD tiene más facilidad para hacerlo.
Teniendo en cuenta todo eso, creo que lo mejor que puede hacer personalmente es comenzar a hacer TDD usted mismo para la mayor parte de su trabajo como sea posible. Esto tiene el potencial de proporcionarle referencias muy específicas sobre dónde y cómo se ha demostrado que TDD es beneficioso en el contexto del proyecto actual. En particular, si realiza revisiones de código, sus pares pueden notar que el código que está escribiendo TDD es más conciso y más fácil de mantener que el código que ha estado escribiendo sin TDD. Su equipo de QA también puede notar una diferencia en la calidad del código, que es una de las cosas que escucha mucho sobre las compañías que se mudan a TDD.
¿Ya ha hecho esto para escribir su propio código? Si no es así, ¿hay algún obstáculo que se supere solo cuando todo el equipo lo hace? – njsf
No estás siendo meticuloso. Esta es una línea de fiesta muy popular. TDD ha existido por bastante tiempo; No estoy convencido de que ese sea el mejor enfoque. Supongo que una forma de hacerlo es tratar de programar un tiempo para que todos lo discutan y esencialmente debatan los méritos relativos. Creo que hay pocas dudas de que deberías tener una práctica consistente ya sea TDD o lo que sea para que puedas hacer de eso un punto de fricción. – BobbyShaftoe
@njfs Lo hago siempre que sea posible y por eso lo apoyo. – Sandbox