Integración discontinua

Ya en la carrera, y de esto hace algún tiempo, de hecho soy de la última promoción de licenciados en informática, cuando no estaba tan en boga términos como integración continua, ya nos decían que cuanto más tarde se encuentren los fallos más caro cuesta arreglarlo. Es lo que también se conoce como deuda técnica.

Ha llovido bastante desde entonces y hoy día tenemos herramientas y técnicas para poder abordar la detección de los problemas de forma temprana. Pero muchas veces seguimos con la mentalidad de que hay que llegar a las fechas a toda costa. Y ese a toda costa suele ser dejar cadáveres por el camino. Cadáveres que como andamos con prisas no enterramos bien y más pronto que tarde se levantan de sus tumbas para exigirnos cuentas.

Creo que uno de los elementos que hacen más por estos temas de bajar la deuda técnica es la rigurosidad de nuestro cliente. Si el cliente es riguroso en sus controles de calidad, sabes que los cadáveres que dejes van a resucitar, así que procuras no dejarlos. Si el cliente no es exigente, es cuando más cadáveres suele haber, porque como nadie mira… hasta que algo peta y miran, claro.

Hoy día es relativamente sencillo el disponer de una herramienta como Jenkins o similares para realizar la integración continua. Esto nos ayuda a asegurarnos que lo que tenemos en el repositorio cumple con los criterios de calidad y si no lo hacen detectarlo cuanto antes, para que se solucione de inmediato, y a ser posible por la persona que ha roto la integración.

He estado en proyectos relativamente grandes en los que prácticamente era imposible bajarse el código y que este compilase a la primera. Pero les costaba ver que poniendo una herramienta de integración continua podían reducir el tiempo que alguien desperdiciaba cuando se tenia que bajar el código para realizar un cambio. El problema es que esos tiempos nunca se computan en las herramientas de seguimiento como tiempos improductivos. ¿Cuanto tiempo nos pasamos esperando a la máquina? Es decir sin generar valor a nuestros clientes…

Me parece que como tope la integración debe ser diaria, y si es constante mucho mejor, sobre todo con herramientas como git que facilitan el realizar commits atómicos.