Ha habido mucho debate en la comunidad de TI y Desarrollo de Software sobre cuál es un mejor modelo de gestión de proyectos de software, Agile Scrum o CMMI. También existe un debate paralelo sobre si estos dos modelos se complementan o se excluyen mutuamente.
Hoy en día, las empresas están en constante movimiento, tratando de satisfacer las demandas cada vez mayores de los clientes y entregando proyectos según lo programado mientras corren una carrera paralela para adoptar las últimas metodologías y procesos de desarrollo para mantenerse relevantes y competentes en la industria.
En esta carrera por adoptar las últimas y mejores tendencias en el desarrollo de software, las empresas están gastando enormes cantidades de dinero en efectivo para definir y ajustar sistemas, procesos y herramientas para lograr la excelencia en la entrega de proyectos.
Entre los múltiples métodos de ejecución de proyectos disponibles para su adopción, veamos dos de los enfoques más utilizados, CMMI y Agile Scrum. Ambos enfoques abogan por principios de desarrollo de software que pueden conducir a un desarrollo exitoso.
Sin embargo, los profesionales de la industria a menudo enfrentan a uno contra otro y tienen debates acalorados sobre qué enfoque es más útil; esta actitud sobre una metodología favorecida puede conducir a una tremenda negatividad a largo plazo.
En este artículo hablaremos sobre los enfoques de cada uno de estos métodos y el papel que tienen en la ingeniería de software.
CMMI se originó en el Departamento de Defensa de los Estados Unidos (DoD).
A principios de la década de 1980, el Departamento de Defensa inició un programa para identificar las mejores prácticas para administrar proyectos a fin de garantizar tasas más altas de éxito en los proyectos.
Como parte de este programa, el Instituto de Ingeniería de Software (SEI) del Departamento de Defensa reunió a representantes de la industria del software, la academia y la investigación para definir las mejores prácticas que podrían mejorar la entrega de software, y el resultado fue el Modelo de Madurez de la Capacidad (CMM), que en una versión posterior se convirtió en Capability Maturity Model Integrated (CMMI), conocida por la rigurosa disciplina de procesos que aporta al desarrollo de software.
Si deseas profundizar más en las características del modelo CMMI te recomiendo leer estas entradas:
Según el "Standard Glossary of Terms Used in Software Testing", Agile es un conjunto de metodologías de desarrollo basadas en iteraciones incrementales, donde los requerimientos y soluciones evolucionan a través de la colaboración entre los equipos multifuncionales autoorganizados.
Los orígenes de Agile se remontan a los métodos de diseño y desarrollo incrementales e iterativos que se desarrollaron durante la Segunda Guerra Mundial.
Uno de los primeros usuarios de este concepto fue el Dr. W. Edwards Deming, quien fue pionero en el modelo de mejora de procesos comerciales Plan-Do-Check-Act (PDCA) que fue una gran influencia en las prácticas de fabricación japonesas durante el resurgimiento de Japón después de la Segunda Guerra Mundial y lideró a convertirse en la segunda economía más grande del mundo.
También te recomendamos leer: Calidad en el Desarrollo de Software
Las ideas de Deming enfatizaron:
A partir de estos primeros orígenes, Agile cerró el círculo cuando 17 desarrolladores se reunieron en The Lodge en la estación de esquí Snowbird en Utah del 11 al 13 de febrero de 2001 para redactar el "Manifiesto para el desarrollo ágil de software".
Además de los 12 principios ágiles, el manifiesto establece los siguientes valores:
Partiendo de lo anterior, podemos ver que Agile favorece la velocidad de entrega y el desarrollo iterativo, mientras que CMMI es un modelo que aboga por las mejores prácticas para la implementación efectiva de procesos.
La percepción en la industria es que, dado que el nivel CMMI de una organización se utiliza como indicador de sus capacidades actuales de entrega de software, se fomenta la documentación integral del proceso para mejorar el proceso actual y, finalmente, alcanzar un nivel CMMI más alto.
Por el contrario, la percepción popular es que una implementación Agile no necesita una documentación cuidadosa, lo que puede dar la impresión de que la disciplina del proceso es secundaria en este enfoque; pero esto no es así.
Un proyecto ágil requiere tanta preparación y atención para seguir el proceso y mantener el nivel necesario de documentación como lo necesita CMMI o cualquier otro modelo.
El mismo Mark Paulk, uno de los principales contribuidores al modelo CMM que a su vez es académico, consultor y autor en ingeniería de software y un Scrum Máster certificado, hace énfasis en la necesidad de "adoptar e implementar de forma consistente las metodologías ágiles" es decir un "proceso disciplinado para usar agile", para verdaderamente obtener los beneficios esperados de esta metodología.
En resumen, CMMI aporta una disciplina de proceso a la que Agile introduce agilidad. Ambos enfoques son necesarios para garantizar proyectos exitosos y clientes satisfechos.
En Innevo somos partidarios de adaptar cualquier metodología de trabajo que tu grupo de desarrollo use actualmente y adaptar las prácticas y requerimientos de modelos como CMMI a ello. Después de todo, el CMMI dice el qué debes hacer para entregar software de calidad, pero no el cómo realizar el trabajo.
Te invitamos a conocer nuestro servicio de consultoría para implementar CMMI Desarrollo en tu organización de forma efectiva y siempre adaptado a las necesidades y características de tu equipo.