10 ideas «Agile» que vale la pena compartir

Por: Beth Stackpole – Junio 20, 2019

Steven Eppinger, profesor del MIT Sloan, afirma que Agile se aplica no solo al desarrollo de software, sino también a la ingeniería de sistemas a gran escala.

Casi 20 años después de la revolución “Agile”, es un hecho que el desarrollo de software se ha visto alterado inextricablemente por el ávido abrazo de las prácticas de la filosofía Agile. ¿Son estas las próximas iniciativas de ingeniería de sistemas a gran escala?

Steven Eppinger, profesor de ciencias de la administración en MIT Sloan, presentó recientemente un caso para aplicar Agile a los dominios de desarrollo fuera del software. «Todas las compañías están tratando de ser más Agile, esta se ha convertido en parte del léxico de la ingeniería  de  la administración «, dijo. «Es sorprendente lo rápido que se está adoptando».

Agile reemplaza el modelo de desarrollo tradicional y lineal de «cascada», en el que los proyectos se planifican previamente y se construyen completamente antes de ser probados, con un proceso iterativo en el que se están construyendo y probando pequeñas partes de proyectos simultáneamente. Las compañías han adoptado Agile para una variedad de razones: para impulsar la innovación de productos, satisfacer más rápidamente las demandas de los clientes, acelerar los ciclos de entrega, reducir el riesgo y mejorar la productividad.

Pero mientras que Agile tiene un historial comprobado en el desarrollo de software, no se ha puesto a prueba ni se ha utilizado ampliamente en otros tipos de desarrollo, como manufactura o ingeniería, dijo Eppinger, codirector de la facultad y programa de Diseño y Gestión de Sistemas del MIT.

En un seminario web reciente, Eppinger describió prácticas Agile que, con algunos ajustes menores, pueden ofrecer beneficios a otras prácticas de ingeniería e industrias. Una importante empresa de telecomunicaciones, por ejemplo, utilizó Agile para facilitar el diseño de hardware y servicios conectados basados ​​en la nube.

Según Eppinger, estos 10 principios del desarrollo Agile de software pueden adaptarse a otros tipos de sistemas de ingeniería complejos:

1. Ciclos de desarrollo en espiral

En la metodología de cascada tradicional, las tareas y los resultados se dividen en puertas escalonadas de procesos altamente específicos. Una vez que se completa cada fase, se revisa la salida; si algo no está bien, el trabajo continúa en esa fase hasta que la salida cumpla con todos los requisitos especificados, y solo entonces el desarrollo avanza.

En comparación, un modelo en espiral es más fluido e iterativo, aborda un problema a través de múltiples pases y recorre las distintas etapas del diseño hasta que los problemas se resuelven en pequeños incrementos.

2. Sprints en caja de tiempo o (time-boxed Sprints)

Esta práctica divide las tareas de desarrollo en una serie de iteraciones que deben realizarse dentro de un período de tiempo específico: dos semanas es un punto de referencia común, por ejemplo. Time Boxing (caja de tiempo) ayuda a demostrar el progreso y mantiene a todos trabajando dentro de los mismos parámetros fijos. Es un concepto que se puede aplicar fácilmente a proyectos de desarrollo que no sean de software para que todos trabajen hacia el mismo conjunto de objetivos, dijo Eppinger.

3. Equipos tipo Scrum

Estos son grupos de personas encargadas de trabajar en un conjunto de tareas para cumplir con los requisitos acordados del producto siguiendo un conjunto común de objetivos.

La clave de la alineación de scrum es el propietario del producto, que está a cargo de los requisitos y las tareas de priorización que deben suceder dentro del ciclo de sprint, y el scrum master, cuyo trabajo es enlistar nuevos recursos cuando sea necesario y resolver problemas.

Si bien estas posiciones pueden no existir formalmente en la mayoría de los equipos fuera del desarrollo de software, Eppinger dijo que hay formas de obtener los roles utilizando el talento existente. Por ejemplo, una función estándar de gerente de producto podría modificarse para que sirva como propietario de un producto, mientras que una persona versada tanto en liderazgo como en gestión de proyectos podría ser entrenada para servir como scrum master.

4. Reuniones diarias

Una herramienta clave en el sprint, las reuniones diarias establece el contexto para el trabajo del día siguiente, facilitan la coordinación y sirven como un foro para abordar cualquier inquietud o problema persistente. Eppinger dijo que no hay ninguna razón por la cual las reuniones diarias distintivas de Agile no puedan aprovecharse para mantener otros tipos de proyectos de desarrollo de productos y servicios en marcha.

5. ¿Qué vs. Cómo?

Este concepto separa la autoridad de la forma: Qué se hace de cómo se hace. El propietario del producto prioriza el trabajo en función de los requisitos y mantiene una lista actualizada de lo que debe suceder y lo que está atrasado. El líder del proyecto o Scrum Master se asegura de que el trabajo se realice utilizando mecanismos como la reunión diaria o la interferencia de ejecución.

6. Kanban

Kanban es un sistema de programación “justo a tiempo” desarrollado en Japón que se basa en gran medida en imágenes para realizar un seguimiento de la capacidad de fabricación en tiempo real. Existen numerosas formas de ofrecer presentaciones visuales del trabajo en progreso, desde herramientas como tableros Trello basados ​​en la nube hasta notas físicas Post-it pegadas a una pared para que todos las vean en las reuniones diarias tipo sprint. De cualquier manera que se logre, una hoja de ruta visual es una forma efectiva de mantener informado al equipo sobre quién está haciendo qué y qué se ha completado, dijo Eppinger.

7. Priorización de características

No todas las características o planes son igualmente importantes. Las prácticas Agile ponen énfasis en la priorización del trabajo para que las tareas de alto valor sean las primeras en la línea. Los proyectos de desarrollo de sistemas a gran escala, que a menudo se estancan debido al gran volumen de funciones o tareas que deben completarse, podrían beneficiarse de ese reinicio para acelerar los ciclos de entrega, dijo Eppinger.

8. Desarrollo y Operaciones (DevOps)

Literalmente, un mashup de desarrollo y operaciones, DevOps ganó popularidad para desarrollar en la nube, y Eppinger sostuvo que puede tener mérito en otras áreas, particularmente en los sistemas de entrega de servicios y fabricación. En lugar de una mentalidad de «tirarlo por el muro», la práctica consiste en lograr que las operaciones y el desarrollo trabajen juntos en la etapa inicial del diseño. La alineación permite que los problemas se resuelvan rápidamente y que la integración ocurra continuamente.

9. Ramificación y fusión

Una práctica popularizada por Git, el sistema de control de versiones distribuido de código abierto, ramificación y fusión permite a las personas trabajar por separado en partes de un sistema y luego combinar su trabajo de una manera que conserve los cambios a la perfección.

10. Procesos Agile híbridos y planificados por etapas

Para escalar Agile de manera efectiva, ayuda a combinar sus principios con las prácticas de desarrollo tradicionales, dijo Eppinger. Por ejemplo, es posible retener los elementos de planificación y control del proceso de desarrollo tradicional de puerta escalonada mientras se permite la ejecución Agile.

Un enfoque es dividir el trabajo de cada etapa, con múltiples equipos Agile haciendo carreras paralelas y el trabajo planificado de manera incremental dentro de cada etapa. Otra opción es el marco Agile escalado para empresas (SAFe en inglés), que facilita la coordinación y la planificación entre los equipos de Scrum.

Una página del libro de jugadas

Las prácticas Agile han transformado el panorama de desarrollo de software, permitiendo a los equipos innovar más rápido, entregar más rápidamente y concentrarse en las necesidades de los clientes. Eppinger cree que otras iniciativas de ingeniería de sistemas deberían tomar una página del libro de jugadas Agile y redefinir cómo se realiza su trabajo.