Mostrando las entradas con la etiqueta cmmi. Mostrar todas las entradas
Mostrando las entradas con la etiqueta cmmi. Mostrar todas las entradas

domingo, septiembre 08, 2013

CMMi y SCRUM: Mi punto de vista

Hola a todos:

Hace algunos días venia pensando en este post, pues sé que puede herir susceptibilidades y generar controversia, pero la reflexión y la sensatez me ha llevado ha escribirlo. Comenzaré entonces el post con las dos conclusiones con las que quiero terminar:
  • CMMi es un modelo  prescriptivo que incluye muchas componentes y elementos,  su adopción es lenta y bastante costosa para los equipos y organizaciones, e incluso adoptándolo no se garantiza que "todo vaya a ir bien"
  • SCRUM es un marco poco prescriptivo que tiene excelentes prácticas de gerencia de proyectos, gestión de requisitos y habilita de una forma rápida la mejora continua, su adopción es simple y poco costosa, adicionalmente su correcta implementación hará que pronto "todo vaya bien".
Ya que saben mi conclusiones, espero estén interesados en conocer mis argumentos. Voy a manejarlos en forma de cuadro comparativo:

Característica
CMMi (Capability Maturity Model Integration)
SCRUM
Tiempo de adopción
·         Lo normal es que la adopción de cada nivel toma aproximadamente entre 12 a 18 meses [1]

·         La adopción completa de CMMi nivel 5 toma entre 3 a 5 años empleando técnicas de Six Sigma [1]
·         Aplicar Scrum y toma poco tiempo, aproximadamente 3 a 4 sprints de 2 semanas para estar ejecutando bien el framework. Se sugiere acompañamiento (coach) o mucha lectura para hacerlo bien [4]
Costo
Mínimo 100.000 dólares por cada nivel, compartido entre consultorías, adopción y adaptación del modelo dentro de la organización[12]
Sin información.

Nota: Se puede adoptar el framework y las prácticas técnicas a muy bajo costo para los equipos.
Capacidad
La "capacidad certificada" de hacer software solo se demostrará después del primer nivel (nivel 2) certificado (he concluido,  que seguirás fallando en proyectos)
La capacidad es dada por el software funcionando cumpliendo la Definición de Hecho/Realizado (Definition of Done - DoD), disponible desde el primer sprint.

Aunque es cierto, también se puede fallar en Agile [7][8][9], pero un equipo con coraje y el poder de las retrospectivas pueden cambiar favorable y rápidamente esta situación.
Complejidad del modelo
Entender CMMi requiere de entrenamiento y es un documento de 482 páginas (esta es la hora que nó me lo termino de leer)[2]
Para entender Scrum requiere de máximo una tarde leer la guía oficial que tiene 16 páginas [3]. ( y bueno, mucha reflexión y lecturas complementarias [4] para comprender este marco que te da límites y libertad.)
Universalidad del entendimiento del modelo
Muchas cosas dependen de la interpretación del consultor y de quien haga la evaluación (frase que se escucha con frecuencia mucho en el mundo CMMi).
He observado que entender el marco a pesar de ser simple, requiere de acompañamiento y mucha lectura. 

El framework te proporciona unos límites claros y mucha libertad para moverte dentro de ellos.

La recomendación en este caso es:
·        cumpla las reglas,
·         haga todas las reuniones
·         no fusione roles
·         no alargue el sprint
·         Lea a los líderes
Áreas de interés
CMMi se involucra con muchas áreas dentro de la organización, los proyectos y la ingeniería [5][2]:
·         Administración de procesos
o   Entrenamiento
o   Innovación
·         Ingeniería
o   Requisitos
o   Verificación
o   Validación
o   Solución técnica
·         Gestión de proyectos
o   Gestión
o   Administración de proveedores
·         Soporte
o   Medición
o   Auditorías al proceso y producto
o   Gestión de la configuración
o   Análisis de causas
o   Análisis de decisiones

Scrum con respecto a  CMMi solo se encuentra fuertemente asociado a la gestión de proyectos y a la gestión de requerimientos [6]

Respecto a la Ingeniería esta no se encuentra definida en Scrum, la responsabilidad es delegada al equipo auto-organizado que sabe y conoce como lograr el producto:"el equipo decide como pasar de una lista de requerimientos a un producto potencialmente entregable durante el sprint".

Por lo tanto, los equipos SCRUM se apoyan fuertemente en las prácticas técnicas (para cumplir el manifiesto ágil el cual hace el llamado a la excelencia técnica) y así lograr la DoD (Definition of Done).

Dentro de las prácticas técnicas se encuentran [10]:
  • TDD
  • BDD
  • ATDD
  • Continuous deployment
  • Pair Programming
  • Refactoring
  • Gestión de la configuración
  • Métricas
  • Entre otros


Es de observar que estas prácticas técnicas dan soporte a las diferentes áreas de CMMi, dejando por fuera a:
  • Entrenamiento
  • Administración de proveedores
Ciclos de mejora
Aunque se realizan auditorías tanto  a los proyectos como a la organización  y se recolectan y aplican las lecciones aprendidas, los ciclos de mejora toman tiempo y dependiendo de la organización se realizarán entre 2 a 4 en el año.

Y la aplicación de las mejoras depende de las políticas de la organización
Se realizan mejoras cada sprint (el cual finaliza entre 2 a 4 semanas), habilitando el PHVA en ciclos cortos y potencializando inmediatamente la mejora continua de los equipos de desarrollo.

Scrum no está orientado a la organización,  sino a  los equipos y estos son los directamente beneficiados con el framework .

Es natural el compromiso del equipo con la mejora (kaizen)

 Bajo lo expuesto anteriormente, concluyo:

Es más fácil lograr CAPACIDAD* con Scrum que con CMMi, en términos de costo y tiempo. 

-
-

"Con Scrum el proceso de alcanzar capacidad es más rápido, barato, natural y convergente que con CMMi."[14]

-
* Hablo de capacidad pues la "C" de CMMi es de Capacidad que es el argumento de venta del modelo y considerando dicha capacidad como la facultad de hacer software de alta calidad funcional y técnica que cumpla con las expectativas de los clientes y usuarios, por parte de la organización y sus equipos de trabajo.




Ahora resulta que todos son ágiles

Es frecuente encontrar artículos del SEI y al PMI y otros de corrientes de la ingeniería de software clásica, apegados a modelos rígidos diciendo:
-
"si, si, y además nosotros también somos ágiles. Miren pueden pagarnos estos cientos o miles de dólares para que yo lo certifique o certifiquemos su empresa en agilidad bajo nuestro modelo"


Observo que se les esta yendo el negocio de las certificaciones y las consultorías de las manos, pues cada vez las empresas y los equipos de software están encontrando más pronto la EXCELENCIA y CAPACIDAD de hacer software con altísima CALIDAD en el agilismo, que bajo los esquemas tradicionales y rígidos como son CMMi, PMBoK, RUP, entre otros.


En la misma línea del párrafo anterior, es una moda el uso la palabra ÁGIL / AGILE (o en su defecto SCRUM), y muchos quieren ponerla de prefijo o de apellido a su negocio, framework, título, etc., cosa buena pues apunta a que los agilistas tienen la razón y cosa mala pues habrán muchos diciendo que son ágiles sin serlo. Más temprano que tarde el mercado y los hechos demostrarán quienes son o no del mundo agile, y esto será dictado por el cumplimiento del Manifiesto Ágil  y sus Principios [11], y el éxito en la forma de ejecutar lo que se comprometen en un entorno complejo.

¿Además qué grande (léase: google, facebook, yahoo, microsfot, etc) del software tiene CMMi nivel 5?



Volviendo al inicio

Termino entonces este post con las conclusiones prometidas:
  • CMMi es un modelo  prescriptivo que incluye muchas componentes y elementos,  su adopción es lenta y bastante costosa para los equipos y organizaciones, e incluso adoptándolo no se garantiza que "todo vaya a ir bien"
  • SCRUM es un marco poco prescriptivo que tiene excelentes prácticas de gerencia de proyectos, gestión de requisitos y habilita de una forma rápida la mejora continua, su adopción es simple y poco costosa, adicionalmente su correcta implementación hará que pronto "todo vaya bien".
Queda abierta la discusión


Saludos y un abrazo ágil a todos





Referencias:

[1] http://www.sei.cmu.edu/library/assets/bridging-gap.pdf
[2] CMMI for Development, Version 1.3. http://www.sei.cmu.edu/reports/10tr033.pdf
[3] The Scrum Guide -https://www.scrum.org/Scrum-Guides
[4] Por dónde comenzar a leer y a estudiar de Scrum http://lecciones-aprendidas.blogspot.com/2013/05/por-donde-comenzar-leer-de-scrum.html
[5] Framework para el Desarrollo De Software En Entornos Académicos - https://docs.google.com/file/d/0B5JZ11Z2PoWWWDlheXY2SnhUc2M/edit?pli=1
[6] Can Scrum help to improve the project management process?  A study of the relationships between Scrum and Project Management process areas of CMMI-DEV 1.3. http://www.javiergarzas.com/2013/03/cmmi-scrum.html
[7] Ways to Fail with Scrum!- Jeff Sutherland  http://www.gbcacm.org/sites/www.gbcacm.org/files/slides/3B%20-%207%20Ways%20to%20Fail%20with%20Scrum!.pdf
[8] How to Make Scrum Fail - http://agile.dzone.com/articles/how-make-scrum-fail
[9] Scrum Fails? -Ken Schwaber http://kenschwaber.wordpress.com/2011/04/07/scrum-fails/
[10] What are the Most Important and Adoption-Ready Agile Practices?  http://www.infoq.com/research/agile-practises?utm_source=infoqresearch&utm_campaign=rr-content#.UUmgOcTIFVw.twitter
[11] Manifiesto Ágil  -http://agilemanifesto.org/
[12]Profiles of Level 5 CMMI Organizations - http://www.compaid.com/caiinternet/ezine/reifer-profiles.pdf
[13]Jeff Sutherland. Scrum and CMMI Level 5: The Magic Potion for Code Warriors "http://systematic.com/media/282221/Scrum_and_CMMI_Level_5___The_Magic_Potion_for_Code_Warriors.pdf
[14] Texto de mi autoría adicionado el 15 de septiembre de 2013