Soy un programador por contrato con mucha experiencia. Estoy acostumbrado a ser contratado por un cliente para ingresar y hacer un proyecto de software de una forma u otra por mi cuenta, generalmente de la nada. Eso significa una borrón y cuenta nueva, casi todo el tiempo. Puedo traer bibliotecas que he desarrollado para comenzar rápido, pero siempre son opcionales. (y depende de obtener las cláusulas IP adecuadas en el contrato) Muchas veces puedo especificar o incluso diseñar la plataforma de hardware ... así que estamos hablando de una gran libertad aquí.¿Cuáles son algunas de las razones por las cuales un único desarrollador debe usar TDD?
Puedo ver los usos para construir pruebas automatizadas para cierto código: Bibliotecas con funcionalidad más que trivial, funcionalidad central con un alto número de referencias, etc. Básicamente, como el valor de un código sube a través del uso intensivo, Veo que sería cada vez más valioso probar automáticamente ese código para que yo sepa que no lo rompo.
Sin embargo, en mi situación, me resulta difícil racionalizar nada más que eso. Adoptaré las cosas que resulten útiles, pero no voy a seguir ciegamente nada.
Encuentro que muchas de las cosas que hago en "mantenimiento" son en realidad pequeños cambios de diseño. En este caso, las pruebas no me habrían ahorrado nada y ahora tendrían que cambiar también. Un enfoque de diseño altamente repetitivo, de primer plano, funciona muy bien para mí. No puedo ver en realidad ahorrarme tanto tiempo con pruebas más extensas.
Los proyectos de pasatiempos son aún más difíciles de justificar ... por lo general son cualquier cosa, desde fin de semana hasta un mes de duración. Los errores en el borde de los bordes rara vez importan, se trata de jugar con algo.
preguntas de lectura tales como this one, el más votado en la respuesta parece decir que en la experiencia de ese cartel/TDD opinión realmente una pérdida de tiempo si tienes menos de 5 personas (incluso asumiendo un cierto nivel de competencia/experiencia con TDD) Sin embargo, eso parece estar cubriendo el tiempo de desarrollo inicial, no el mantenimiento. No está claro cómo se acumula TDD durante todo el ciclo de vida de un proyecto.
Creo que TDD podría ser un buen paso en el valioso objetivo de mejorar la calidad de los productos de nuestra industria en general. Sin embargo, el idealismo por sí solo ya no es tan efectivo para motivarme.
I do think TDD sería un buen enfoque en equipos grandes, o equipos de cualquier tamaño que contengan al menos un programador no confiable. Esa no es mi pregunta.
¿Por qué un único desarrollador con una buena trayectoria adoptaría TDD?
Me encantaría saber de cualquier tipo de métrica hecha (formalmente o no) en TDD ... centrándose en desarrolladores individuales o equipos muy pequeños.
De lo contrario, las anécdotas de sus experiencias personales también serían agradables. :)
Por favor, evite mencionar la opinión sin experiencia para respaldarlo. No hagamos de esto una guerra de ideología. También se salta el argumento de mayor opción de empleo. Esto es simplemente una pregunta de eficiencia.
Usar TDD también hace que tu código sea más comprobable y modular . Descubrí que cuando me mudé a TDD, mi código en general se mejoró más debido a que tenía que pensar en cómo probaría un código, no solo cómo resolvería la tarea que necesitaba resolver. – ctacke
Tiendo a refactorizar como un loco, y tengo bibliotecas bastante grandes ... así que esta es probablemente la mejor razón para mí. Voy a experimentar con las pruebas de escritura para un par de bibliotecas y ver cómo va. – darron