Incremental Delivery
Consiste en las entregas productivas incrementales quiere decir que el trabajo va a ir siendo mayor y mayor a lo largo del tiempo para un proyecto determinado.
¿Por qué es incremental?
Porque vamos a ocupar varios features o pequeños grupos de tareas que vamos a entregar como software funcional, es decir que vamos a hacer solo el código necesario para cumplir ciertos requerimientos técnicos y no funcionales, cabe mencionar que el incremento delivery no en todas la iteraciónes se va a ir haciendo código, puede haber iteraciónes con historias de usuario que representen un entrenamiento, que representen investigación y desarrollo, que representen un Spike o un área de experimentación, etc.
Vamos a definir incrementos en nuestras evaluaciones
Evaluaciones que van desde las pruebas unitarias, pruebas de funcionalidad que vamos a hacer en nuestro software revisiones de código, o revisiones desde el punto de vista del cliente para ver el tiempo y costo de nuestro proyecto sean mínimas, es decir que si yo voy a hacer una revisión de código sea de una porción de código muy pequeña pero que es funcional, si yo voy a aprobar un nuevo feature, un nuevo botón, un nuevo campo, un nuevo formulario en mi software que sea solo esa mínima parte para que todos los resultados puedan ser favorables y el software se entregue de una mayor calidad.
Software de alta calidad
El software de alta calidad no se hace en grandes cantidades se empieza a hacer incrementalmente, un trabajo a la vez, cada iteración puede llevar una temática, por ejemplo la primera iteración puede ser de diseño, la segunda iteración puede ser de desarrollo, y la tercera iteración puede ser de pruebas, pero si nosotros podemos ir granulando esas historias y esas tareas a lo largo de las iteraciones podemos tener que nuestra primera iteración puede tener diseño, desarrollo y pruebas al mismo tiempo, esto nos va a llevar a opciones de terminación y con esto no quiero decir que vallamos a buscar terminar con el cliente nuestra relación laboral, sino que si hay algún problema hasta este punto realmente la perdida entre una iteración y otra o entre una entrega y otra de los features pequeñitos no va a impactar ni al negocio ni al cliente directamente y se puede retomar de una forma mas transparente.
Debemos actualizar siempre técnicamente nuestro software, es decir debemos proponer en cada una de las iteraciones usar tecnologías de punta y tecnologías nuevas que estén en modo estable ya que si nosotros hacemos una actualización de framework, por ejemplo si estamos utilizando una versión 1.4 de angular y queremos actualizarla al momento de que halla deprecados o que allá alguna falla en la compatibilidad de dicho framework, prácticamente el proyecto va a presentar un problema y es un riesgo muy grande para la funcionalidad del mismo por eso siempre debemos ir actualizando poco a poco en las diferentes y pequeños features que vamos a ir utilizando a lo largo del tiempo.
Como podemos ver agile utiliza mucho la ideología de divide and conquer, esto quiere decir “divide y vencerás” mientras mas pequeños sean las porciones de código o las tareas que estamos realizando mas fácil nosotros podemos avanzar