Todos queremos sacar el máximo partido a nuestro tiempo, por eso lo medimos. Pero esta medición, buscando alcanzar el máximo provecho, es solamente eficiente cuando se realiza de forma individual e independiente.
Todo individuo puede encontrar tiempos de espera y tareas repetitivas, al analizar el transcurso de su jornada, que a través de la automatización pueden ser reaprovechados.
Por ello, y para poder llevar una idea a producción en menor tiempo posible, deberemos automatizar el mayor número de tareas para minimizar el desaprovechamiento del tiempo. Ya que el tiempo que puede ser un factor discriminante para todas aquellas ideas que no llegan a producirse a tiempo.
Desarrollo de aplicaciones ad hoc
Nuestra metodología actual es sencilla:
- Tener clara la idea.
- Identificar los problemas y analizarlos con el equipo.
- Solicitar enviar el código con la solución a la rama maestra.
- Iniciar los procesos automatizados de forma secuencial o paralela:
- Construir, testear e implementar en un entorno apartado.
- Previsualizar los cambios.
- Revisar el código y aprobarlo.
- Incluir la solución en la rama principal:
- Entregar los cambios de forma automática al entorno de producción.
- Retroceder si algo va mal a través del control de versiones.
Integración continua
- CI: Continuous Integration (Build and Test).
Es una práctica en la que se construye, se prueba automáticamente el software cada vez antes que éste pase a ser integrado manualmente en el repositorio principal.
Implementación continua
- CD: Continuous Delivery (Build, Test and Deploy).
Es la práctica en la que se construye, se prueba de forma automática el software, y una vez superados los test, pasa automáticamente a ser integrado en el repositorio principal, y éste pasa manualmente al entorno de producción. El 80% de las empresas que ofrecen SaaS realizan esta práctica.
Entrega continua
- CD: Continuous Deployment (Build, Test, Deploy and Delivery).
Esta práctica recorre completamente la tubería de la idea a la producción de forma automática. Una vez construido, se envía a los testeos automáticos, para posteriormente ser integrado en el repositorio principal para que sea entregado de forma automática al entorno de producción.
Entregas antes de tiempo, si no hay sorpresas
Es de incuestionable importancia disponer de una metodología y una plataforma colaborativa para poder administrar las versiones, automatizar procesos, revisar el código, etc. para poder realizar la Entrega continua.
Si no se establecen estas prácticas el usuario se convierte en un tester del programa. No es que sea un problema, el usuario es el mejor tester que existe, pero un NaN no debe experimentarlo.