Tuesday, January 29, 2019

La importancia de TDD y Pair Programming en la actualidad


Test Driven Development (TDD) y Pair Programming son términos que se han vuelto populares en los últimos años, sin embargo para algunos de ustedes podría resultar sorprendente saber que no son técnicas nuevas de programación. Hay referencias de programadores de IBM que usaban técnicas similares a TDD en los años 60, pero se le atribuye a Kent Beck la oficialización de este concepto al utilizarlo por primera en su libro Test Driven Development By Example publicado en el año de 2002. Por otro lado hay referencias de gente que usaba técnicas relacionadas a Pair Programming en los años 90, Larry Constantine oficializó el término Dynamic Duo que es un concepto similar.

En el mundo del desarrollo de software actual es de suma importancia el estar al tanto de los beneficios que estas dos técnicas pueden aportar a tus proyectos o a tu organización. Hay evidencia de que TDD y Pair Programming ayudan a crear una cultura diferente en equipos de desarrollo y tienen un impacto significativo en la productividad de una organización.

Test Driven Development

Empecemos con TDD, en pocas palabras esta técnica sugiere que un programador debe trabajar en pequeñas iteraciones cubriendo los siguientes pasos:

1. Se debe empezar por escribir código de prueba unitario
2. Después se debe escribir solamente código funcional suficiente para que el código de prueba funcione
3. Por último se refactoriza el código escrito asegurandose que este limpio y organizado

Sencillo, cierto? No solo eso, tiene muchos beneficios! Te ha tocado trabajar con una aplicación que no tiene suficiente código de prueba o que no tiene código de prueba en lo absoluto? Si es así, entonces también te han tocado esas largas sesiones de debbuging en las que tratas de encontrar la causa raíz de un defecto.

Solo para nombrar algunos ventajas y cosas positivas que empezaras a ver haciendo TDD están:

- Tendrás código de prueba para cada una de las funciones de tu aplicación
- Mejorará la calidad de tu código ya que aplicaras refactorización en cada pequeña iteración
- Habilitaras la opción de refactorizar la aplicación sin miedo a descomponer algo sin darte cuenta
- Tendrás más confianza al momento de liberar nuevas versiones de tu aplicación
- Te ahorraras esas largas sesiones de debugging tratando de arreglar defectos

Pair Programming

Esta técnica consiste en tener a dos programadores trabajando sobre la misma pieza de funcionalidad al mismo tiempo. Algunos programadores prefieren hacer esto usando una sola estación de trabajo, tomando turnos un desarrollador escribe código y el otro hace observaciones acerca del código que esta siendo generado. Otros utilizan ambientes de desarrollo compartidos que permiten a los programadores trabajar en la misma pieza de funcionalidad.

Algunos de los beneficios que se obtienen al hacer Pair Programming son:

- La calidad del código generado incrementara significativamente, cuando se escribe software siempre es mejor tener un par de ojos extra y compartir ideas con otro programador
- Programadores experimentados de tu equipo podrán transferir sus técnicas y conocimientos a otros integrantes del equipo fácilmente
- Disminuirá los cuellos de botella y el tiempo que se invierte en Peer Reviews de código ya que el Peer Review es constante al trabajar en pares
- Mejoraran las decisiones de diseño que se toman a cada momento, dos cabezas siempre piensan mejor que una

Conclusion

Aun cuando se puede llegar a pensar que adoptar TDD y Pair Programming crean lentitud en la entrega de software funcional, se debe poner atención en los grandes beneficios que trae consigo. Una aplicación con código de baja calidad y sin una buena estructura provoca que el hacer cambios o mejoras sea mucho mas costoso. Hay estudios que han demostrado que programadores pasan en promedio del 50% al 75% de su tiempo tratando de arreglar defectos, en gran parte por que no se tiene código de pruebas adecuado y suficiente para detectar esos defectos temprano en el proceso de desarrollo.

Teniendo estos datos en mente, imagina si todo ese tiempo y dinero se invirtiera en producir código funcional. Seguramente gente del negocio pero sobre todo tus clientes estarían más contentos!

No comments:

Post a Comment