Gobierno Corporativo + Agilidad


El objetivo de este artículo es resaltar los beneficios de adoptar el desarrollo ágil y esbelto en las organizaciones, y su compatibilidad con esquemas de gobierno corporativo. Por gobierno corporativo entiéndase el manejo consistente, las políticas cohesivas, los procesos y los derechos de decisión en un área de responsabilidad. De tal forma que cubre tanto estándares y modelos, como otros métodos de regulación interna que pueden apegarse también a regulaciones externas nacionales o internacionales.


Estándares, modelos y valores
Comencemos con entender la diferencia entre estándares, modelos y valores. Un estándar técnico es un requerimiento o norma expresada casi siempre como un documento que establece procesos, prácticas, métodos y criterios técnicos con el fin de obtener un gobierno corporativo técnico consistente y uniforme que puede hacerse obligatorio. Las empresas que deciden adoptar un estándar, normalmente pasan por un periodo largo y sumamente costoso de transición, y una vez establecido el estándar, deben cumplir con sus requerimientos de manera fiel y continua, lo cual es demostrable sólo mediante la renovación periódica de la certificación. ISO ha generado los estándares más utilizados, los cuales con frecuencia se convierten en ley, ya sea mediante tratados o estándares nacionales; en parte gracias a su fuerte lazo con los gobiernos políticos.
Un modelo es una descripción, patrón o plan, cuyo fin es mostrar cómo opera un concepto o un sistema; por ejemplo: el planteamiento de una guía para el mejoramiento de procesos. A diferencia de un estándar, un modelo no tiene un requerimiento a cumplir sino un patrón a partir del cual los procesos a seguir son definidos;
por lo que normalmente está mejor adecuado a la organización que lo adopta. Esta distinción con frecuencia se pasa por alto, y existen empresas que tratan los modelos como si fueran estándares, lo cual llega a tener
resultados desastrosos. Uno de los modelos más utilizados actualmente es el CMMI, el cual integra una serie de mejores prácticas para el perfeccionamiento de los procesos. Por último, un valor es una propiedad abstracta que representa el grado de importancia de un objeto y su conducta correcta; algo intrínsecamente valioso o deseable. Su objetivo es servir como un acimut o indicador de la ruta a seguir, respecto de los principios que nos permiten desarrollar metodologías para la gestión y desarrollo de proyectos y organizaciones. Agile y Lean es un conjunto de valores y principios tomados como base para el desarrollo de otras metodologías muy eficientes en la gestión e implementación de proyectos para organizaciones de todo tamaño. Algunas de esas metodologías son Scrum, Extreme Programming, Crystal Clear, Dynamic Systems Development Method, Feature Driven Development, etcetera.

Agile es básicamente sentido común
Durante muchas de las presentaciones, algunos participantes comentaron: “Agile es básicamente sentido común”, y tienen razón. Tal atribución es un arma de dos filos. Los métodos ágiles y esbeltos son muy simples en principio, pero su implementación exitosa requiere de entrenamiento adecuado y disciplina a nivel corporativo. Hay empresas que intentan la adopción tomando como base tan solo la literatura, engañándose a sí mismos por la aparente simplicidad... estas empresas en su gran mayoría fracasan. Los valores de los métodos ágiles formalizados en el manifiesto ágil[1], nos dicen que se valoran:

• Individuos e interacciones sobre procesos y herramientas.
• Software funcional sobre documentación integral o total.
• Colaboración con el cliente sobre negociación por contrato.
• Respuesta al cambio sobre seguimiento de plan.

Estos valores están respaldados por una serie de 12 principios[2, 3] que ayudan a entender mejor su esencia. Aun así, los valores son normalmente malinterpretados. El primer aspecto a clarificar es la semántica de la palabra “sobre”, la cual quiere decir “más que” y no “en lugar de”. Por ejemplo: en el caso del primer valor, los procesos y herramientas son de importancia fundamental en el desarrollo de software, pero el enfoque debe ser en las personas involucradas en el proyecto y su interacción efectiva, de tal forma que los procesos y herramientas utilizadas sean aquellas que hacen a las personas eficientes; y son los procesos y herramientas lo que se tiene que adaptar a la forma en que las personas interactúan, y no las personas quienes deben adaptarse al proceso. El objetivo de un proyecto de desarrollo de software es tener un producto que satisfaga las necesidades del usuario.

En la práctica tradicional, la generación de requerimientos es la primera labor de un proyecto, por lo que generalmente se completa incluso si el terminarlo tomó mas tiempo del planeado en un principio; pero la implementación y prueba se cortan con el fin de cumplir con una fecha de terminación fija, por lo que el producto final está incompleto y es de baja calidad. Aun haciéndolo, los requerimientos cambian durante el desarrollo, pero la gran mayoría de tales cambios importantes para el cliente, terminan diferidos para una versión futura.

Como resultado: el cliente recibe software limitado, con defectos, y que no satisface todas sus necesidades, aunque se generaron volúmenes de documentación. Los métodos ágiles reconocen esta realidad y ponen énfasis en la calidad y en satisfacer el mayor monto posible de las necesidades del usuario, generando únicamente la documentación mínima necesaria para el producto de manera dinámica, redundando en documentación más actualizada y útil que la acostumbrada con métodos tradicionales, no iterativos e incrementales.

Crear un producto que satisfaga las necesidades reales del cliente requiere que la comunicación y colaboración con él sea sumamente efectiva. El cliente mismo puede no tener una idea completa del producto al inicio del proyecto, entre otras razones porque el entendimiento del producto mismo madura con el tiempo, y en parte porque una mejor funcionalidad suele surgir en la medida que el producto es construido. Tradicionalmente los cambios son puestos en lista de espera para una versión futura del producto, pero los métodos ágiles permiten y motivan que el producto madure durante su fabricación, para que el cliente obtenga el mayor valor posible en la menor cantidad de tiempo. El énfasis no es en tener un contrato detallado e inflexible sino en tener un contrato conciso que permita flexibilidad de adaptación mediante la colaboración.

Eisenhower dijo: “los planes son inútiles, pero la planeación es indispensable”. Esto se debe a que la ejecución de un proyecto difícilmente corresponde con lo planeado al principio. Sin embargo, la planeación permite que las partes involucradas obtengan el mismo nivel de entendimiento del proyecto y la estrategia de desarrollo, lo cual les permite responder de manera más eficiente a cambios, cuando éstos se presentan, incrementando las posibilidades de éxito del proyecto. Los cambios pueden ser de índole tecnológica, económica, de mercado, social, político, u otro. El desarrollo ágil se enfoca en la planeación y la lleva a cabo de manera incremental.

Pensamiento esbelto para mejorar procesos
La manufactura Lean, o esbelta, se originó en Japón con bases en estrategias de control de calidad total originadas en el mundo occidental y perfeccionadas por la empresa Toyota. Los tres valores de esta filosofía son conocidos como “Las Tres Emes” (Muri, Mura, Muda), las cuales me he atrevido a traducir como “Las Tres Des” (Disgusto, Desbalance y Desperdicio). El Disgusto (muri), surge cuando alguna persona o personas involucradas en la creación del producto son confrontadas con situaciones o detectan aspectos del proceso que les hacen menos eficientes. El Desbalance (mura), surge cuando aspectos que alteran el flujo eficiente de un proceso existen o son introducidos. El Desperdicio (muda), es toda actividad que no agrega valor al producto y absorbe tiempo o costos. Los principios esbeltos influenciaron los valores de los métodos ágiles y penetraron eventualmente el desarrollo de software en forma de siete principios[4,5]:

1. Eliminar desperdicio. Eliminar todo aquello que no agrega valor al producto.
2. Crear conocimiento. Mantener una cultura de mejoramiento continuo y solución de problemas.
3. Calidad de forma integral. La calidad debe existir aún antes de escribir la primer línea de código.
4. Diferir compromisos. Las decisiones deben ser tomadas en el último momento responsable.
5. Optimizar el todo. Detectar y resolver ineficiencias tanto de producto como de recursos.
6. Entregar rápido. Estabilizar ambientes de trabajo a su capacidad más eficiente y acortar los ciclos de desarrollo.
7. Respetar a la gente. Entrenar lideres, delegar decisiones y responsabilidades del producto en desarrollo al nivel más bajo posible, y fomentar buena ética laboral.

Los métodos ágiles y el desarrollo esbelto han mejorado la eficiencia en la fabricación de software y su calidad en medidas difícilmente alcanzadas por otras metodologías. Las mejoras resultan en la alta posibilidad
de terminar proyectos a tiempo y con costos significativamente menores comparadas con el método de cascada.

Los estándares y modelos tales como ISO-12207/15504, CMMI, y MoProSoft comparten con Agile y Lean los objetivos de mejoramiento de calidad y de procesos. A continuación se muestra cómo dichos modelos pueden enriquecerse y ser más eficientes mediante la inclusión de prácticas de los métodos ágiles y el desarrollo esbelto.

ISO + Agile/Lean
ISO le da énfasis al establecimiento de un proceso controlado mediante la creación, monitoreo, y mantenimiento de documentación detallada. Describe qué metas alcanzar sin indicar cómo alcanzarlas, dejando esa responsabilidad a cada proyecto. Se espera que las mejoras surjan, pero llevarlas a cabo es lento y costoso debido a que la mayoría de las veces requieren numerosos cambios en la documentación del proceso. Los métodos ágiles proveen un “cómo” muy efectivo, que además de ser altamente productivo, permite que la documentación esté siempre actualizada. Parte de la documentación se genera durante la fase de planeación inicial, la cual es ligera y consiste en generar el monto mínimo necesario para tener un
buen entendimiento del producto, sin entrar en detalles de implementación. Como los métodos ágiles son iterativos e incrementales, otra parte de la documentación se genera durante la planeación de cada iteración,
en forma de criterios de validación de historias. Otra parte importante de la documentación proviene de la definición de las pruebas de validación de la historia. Agile y Lean ayudan también a tratar otros tres requerimientos de ISO tradicionalmente difíciles de cumplir:

1) detectar defectos y tomar medidas correctivas;
2) revisar el proceso de calidad periódicamente para hacerlo más efectivo;
3) facilitar mejoramiento continuo.

En los métodos ágiles, el criterio para declarar un componente de desarrollo como terminado es que todas sus pruebas hayan pasado, i.e. que la implementación del software se base en pruebas, por lo que la calidad es la brújula que dirige el desarrollo. Un desarrollador no puede comenzar a codificar algo nuevo hasta que lo que implementó haya pasado todas sus pruebas. Mediante ciclos cortos, los métodos ágiles motivan la generación incremental del producto y la mejora continua, donde la calidad es parte integral del proceso en lugar de una fase tardía de pruebas, con el fin de envolver el código implementado con una capa “protectora”. El proceso de integración continua, elimina las demoras que surgen por dependencias entre componentes desarrollados de forma independiente.

Tal efectividad es difícil de obtener utilizando ISO sin métodos ágiles. Algunas empresas que hacen ISO y aplican métodos ágiles han indicado que ISO les ayuda a mantener una aplicación continua y uniforme
de las prácticas porque puede proveer más estructura, tanto a la empresa como a los empleados, lo cual ayuda en la planeación y como evidencia para mantener certificación. En mi experiencia, esto es más bien un aspecto cultural de cada empresa y un mecanismo para justificar la necesidad de continuar usando ISO.

La integración de ISO con métodos ágiles, requiere que los auditores ISO entiendan que Agile genera documentación de forma distinta a lo acostumbrado (el cómo), y que también cumplan con los requerimientos
del ISO (el qué); y que el proceso aunque es flexible, está definido y requiere de disciplina, por lo que puede especificarse.

CMMI + Agile/Lean
CMMI establece prioridades y metas para el mejoramiento de procesos y calidad cubriendo tres
áreas:
1) Desarrollo de productos y servicios;
2) Establecimiento, manejo, y entrega de servicios;
3) Adquisición de productos y servicios.

El proceso de adopción es medido con base en cinco niveles de madurez. Similar al ISO, CMMI nos da el “qué” pero no el “cómo”, aunque en este caso lo que el modelo provee es una serie de guías que la empresa
puede y debe moldear a sus necesidades. Los métodos ágiles y esbeltos contribuyen a CMMI en forma similar a como lo hacen con el ISO, y le adicionan dos formas: una para alcanzar el nivel de madurez 3 y la otra en el nivel de madurez 5.

El nivel 1 y 2 contribuyen a establecer procesos de forma mas rápida a la vez que incrementan el nivel de productividad, lo cual permite alcanzar el nivel 3 en menor tiempo. Tomemos por ejemplo el caso en el que usamos la metodología de Scrum. Ésta provee una manera efectiva para que el equipo se comunique y genere acuerdos. Durante la planeación de cada sprint se definen en conjunto las historias a implementar y se obtienen compromisos. El método de planeación ágil conocido como “poker de planeación” ha sido tan efectivo, que incluso empresas que no tienen interés en adoptar métodos ágiles lo han hecho con esta técnica.

En la madurez CMMI de nivel 5, estos métodos contribuyen al mejoramiento de procesos mediante planes de desarrollo que agregan valor; es decir, un enfoque esbelto. Lo que permite llevar a cabo planeación adaptativa para tener organizaciones más ágiles. Algunas diferencias que hay entre CMMI y Agile radican en que CMMI presta más atención en documentar el proceso de manera detallada y en tener mas documentación a nivel de producto, que a nivel de código y pruebas. Adicionalmente, las fases iniciales de planeación son más pesadas que lo que recomiendan los métodos ágiles. Para conjuntar efectivamente CMMI y los métodos ágiles y esbeltos recomendamos lo siguiente:

• Generar una cultura corporativa de grupos auto-organizados con el fin de reducir la dependencia en la jerarquía corporativa.
• Desarrollar software de manera incremental.
• Cambiar las responsabilidades gerenciales de comando y control hacia guía y servicio.
• Llevar a cabo juntas concisas y efectivas.
• Enfatizar en la interacción del personal.
• Generar software funcional con miras a incrementar valor.

MoProSoft + Agile/Lean
MoProSoft es un modelo de procesos originalmente adecuado para las necesidades de las industrias mexicanas, y cuyo impacto ha alcanzado ya niveles internacionales. MoPro-Soft está bajo revisión para ser promovido como estándar ISO (lo cual nos obliga a cuestionar si es entonces en esencia un estándar y no un modelo, o si ISO quiere usar el Mo-ProSoft como un mecanismo para penetrar el mercado que no ha aceptado usar ISO). Considero que la aportación más importante de MoProSoft ha sido la de incrementar el nivel de conciencia en la industria Latinoamericana sobre la importancia de la madurez de procesos y la necesidad de incrementar el nivel de calidad de sus productos. MoProSoft está basado en ISO y CMMI, y está organizado en tres categorías: alta dirección, gerencia, y operación.

Cuenta también con niveles de madurez similares a los de CMMI. La forma en que los métodos ágiles y esbeltos mejoran CMMI e ISO se aplica también a Mo-ProSoft, por lo que a continuación se discuten solamente aspectos no tratados anteriormente. A nivel de alta dirección y gerencia, estos métodos brindan a MoProSoft una forma muy efectiva de comunicación que incluye mayor interacción con el cliente, con el fin de entender mejor el producto a construir. MoProSoft hace mucho uso de plantillas con el fin de controlar la forma en que el producto es documentado y construido, así como de establecer la forma en que el flujo de producción se lleva a cabo. Debido a que las metodologías agile están diseñadas para generar productos de manera integral en lugar de funcional, cumplen con el requerimiento MoProSoft para la integración de verificación, validación, documentación, y configuración, aunque de manera distinta a la propuesta por MoProSoft.

A nivel de gerencia media, Agile y Lean permiten utilizar esos roles en una forma más efectiva con miras a hacer que los desarrolladores sean más efectivos y que los requerimientos sean más cercanos a lo deseado por el cliente. Esto es porque los desarrolladores tenderán más a trabajar como equipo para codificar juntos, en lugar de distribuir la carga de trabajo e implementar de manera independiente lo que se les ha entregado para codificar. Esto obviamente requiere que la empresa acepte tal modalidad y permita el cambio en los hábitos de trabajo. Si MoProSoft se usa como modelo, entonces es posible adoptar sólo aquello que es efectivo para el proyecto, por lo que inyectar prácticas de los métodos ágiles será posible. Pero si se usa como estándar, entonces será más complicado combinarlo con métodos ágiles.

Conclusión
Los estándares, modelos y valores tienen la capacidad de coexistir exitosamente e incrementar la efectividad de tu organización. Todos estos jugaron un papel vital en el éxito de las empresas de diferentes sectores como manufactura, servicios, telecomunicaciones, empresas basadas en Internet que ofrecen juegos como Texas Hold'em y poker online, las empresas financieras y otros. Incluir los métodos ágiles y esbeltos en tus procesos es una inyección para el incremento de la calidad y productividad en empresas, resultando en productos de mayor valor competitivo.

Si tu empresa utiliza algún estándar/modelo y tus requerimientos empresariales mandan que mantengas certificación, entonces agregando Agile y Lean se incrementará la productividad y la calidad a niveles que difícilmente se logran utilizando únicamente estándares. Por otra parte, si tu empresa no ha hecho ningún tipo de adopción y no requiere legalmente de la utilización de modelos o estándares, entonces la mejor recomendación es adoptar únicamente métodos ágiles y esbeltos.


Referencias
[1] www.agilemanifesto.org
[2] www.agilemanifesto.org/principles.html
[3] www.shojiki-solutions.com/documents/spanish/AgileGoodForMex-sp.pdf
[4] Poppendieck, Mary y Poppendieck, Tom. Lean Software Development: an Agile Toolkit. Addison Wesley, 2003.
[5] www.agilesoftwaredevelopment.com/leanprinciples

 

Acerca del Autor

El Dr. Masa K Maeda es Presidente y Fundador de Shojiki Solutions (www.shojiki-solutions.com), una empresa dedicada a ayudar empresas en la adopción y mejoramiento del uso de metodologías Agile-Lean. El doctor Maeda tiene más de 20 años de experiencia en la industria de software en Japón, México, y Estados Unidos. Obtuvo el Doctorado y Maestría en Sistemas Inteligentes y Ciencias de la Información en la Universidad de Tokushima en Japón, y la Licenciatura en Ingeniería en Computación en la Universidad Nacional Autónoma de México. El doctor Maeda radica actualmente en Campbell, California, E.U., donde tiene su empresa.