2010-07-23 15 views
8

He estado haciendo TDD durante los últimos 3 años. Éramos una empresa pequeña, y contamos con un soporte muy sólido para la mayoría de los aspectos del proceso ágil de la administración. Todos en el equipo de desarrollo se vendieron en el proceso. Y por lo tanto, la inversión inicial que normalmente se requiere para construir instalaciones fue aceptada sabiendo que pagaría en el camino. (Código que inicia un servidor http, código que rellena las bases de datos sql antes de las pruebas, etc.). La documentación ocurría principalmente en las pruebas y las solicitudes de ayuda generalmente se presentaban en forma de prueba fallida.Vender TDD al equipo

Ahora me mudé a una empresa más grande, y aunque la administración apoya el proceso Ágil, los compañeros de equipo son una mezcla, algunos lo ven útil, algunos lo hacen debido a la gestión y otros no ven el valor. Ha sido un desafío convencer a la gente de dedicar algún tiempo a la construcción de instalaciones o convencer a un miembro del equipo de la mejor manera de ayudarlo si se toma el tiempo de escribir una prueba fallida.

Entonces, ¿cuál crees que es la mejor manera de vender TDD a un compañero de equipo vacilante? Las objeciones son usualmente: 'Es un costo innecesario', 'siempre podemos escribir pruebas después del hecho para las partes que son importantes', 'es una palabra de moda, los equipos la recogen y luego cae a un lado cuando comienza la rutina pesada 'etc.

+0

Duplicado de muchos de estos: http://stackoverflow.com/search?q=tdd+roi –

+3

Has tocado algo que me ha molestado desde que comencé a trabajar en equipos. ¿Por qué tenemos que "vender" a los desarrolladores algunas veces en buenas prácticas? Seguramente nunca obtuvieron permiso para sus hábitos malos y derrochadores. –

+0

posible duplicado de [¿Cómo alentar la implementación de TDD?] (Http://stackoverflow.com/questions/428691/how-to-encourage-implementation-of-tdd) y muchos otros. –

Respuesta

21

"la mejor manera de vender TDD a un compañero de equipo indeciso"

No se puede. No pierdas el tiempo "vendiendo".

En su lugar, invierta tiempo en "probar".

Solo hazlo. Tener éxito. Cuando las personas pregunten cuál es el secreto de su éxito, revele el TDD. No antes.

+0

esto también es bueno. Algunas personas que simplemente no pueden convencer. – hvgotcodes

+0

Las acciones hablan mucho más fuerte que las palabras. Esta es definitivamente una situación donde los escépticos deben ser convencidos por una demostración. – DOK

+0

Puedo intentarlo, sería doloroso continuar trabajando en código compartido mientras tanto, volviendo a esto es como visitar un país extranjero ... – shipmaster

3

simple - mantenibilidad. TDD le brinda la posibilidad de realizar cambios y ver dónde esos cambios afectan el resto del código. Cuanto mayor sea la base del código, más imperativo es que haya pruebas para validar cualquier cambio nuevo.

corrección. Aunque las pruebas se pueden romper, eventualmente llegan a un punto en el que se aseguran de que los componentes están haciendo lo que se supone que deben hacer. Cuanto mejor sea el desarrollador, más rápido será.

Otra ventaja es que TDD informa el diseño de los componentes en el sistema. Si está intentando probar algo, y la prueba es demasiado complicada, probablemente signifique que necesita dividir el problema en partes más pequeñas ...

para venderlo a las personas, usted dice que a la larga lo hace agregar nuevas funciones más baratas y reducir el riesgo de romper la funcionalidad existente. Por lo tanto, reduce el costo.

+0

Bueno, todo lo anterior es sobre el beneficio de hacer pruebas, no usar pruebas, primero como una forma de codificación. Mi equipo ya sabe por qué necesitan cubrir (al menos la parte destacada) de su código con pruebas. – shipmaster

+0

sí, pero puede vender los beneficios. – hvgotcodes

1

Creo que Joel's post explica muy bien por qué las pruebas son A Good Thing ™.

No creo que alguna vez use la frase "TDD", pero tiene mucha información.

+0

testing no es lo mismo que tdd. Todos estarán de acuerdo en la importancia de las pruebas. La filosofía de desarrollo de tdd es otra historia, a pesar de la suposición de que es necesariamente el One True Way. – frankc

+0

Definitivamente estoy de acuerdo. Sin embargo, por lo que sé de TDD, la publicación de Joel se acerca (¿asintóticamente?) A un argumento para TDD –

+1

@ user275455: No es necesariamente la única forma verdadera, es simplemente en mi caso (y en mi opinión) mucho más productivo que el hodge -podge que existe en mi entorno actualmente. – shipmaster

2

Para el compañero de equipo vacilante, sea paciente, espere la oportunidad, luego bote. En el desarrollo de software, sin duda, habrá un problema donde TDD hubiera evitado o mitigado el problema. Esté atento a esa oportunidad. Trabaja con él/ella para crear una prueba (s) que debería haber sido desarrollada desde el principio. Sin embargo, asegúrese de elaborar su mensaje de tal manera que no avergüence a su compañero de equipo.

2

Estoy de acuerdo con S. Lott, no puede "venderlos" para mostrar el valor.

Una de las formas más efectivas de hacerlo es con la programación de pares. De acuerdo, tiene otro problema de "venta" que convence a la gente de que el emparejamiento es un enfoque efectivo, pero después de un tiempo puede convencer/convertir a un desarrollador o también.

TDD era un concepto difícil para mí inicialmente, pero ahora no puedo imaginar la programación de otra manera.

0

Muéstrales este sitio: WeDoTDD.com - casos reales de uso del equipo de la empresa. Aquellos que están practicando con éxito TDD en compañías reales.