Frente a los pasos del tradicional método en cascada, el desarrollo ágil de software se basa en seis pasos comunes dentro del ciclo de vida del software: planificación, análisis de requisitos, diseño, codificación, test y documentación. En cada interacción, el equipo de desarrollo no entrega todo el programa, sino que se van añadiendo pequeños elementos totalmente probados, sin errores, con el fin de que la solución final esté completamente operativa desde el minuto uno. En los métodos de desarrollo ágil de software, la comunicación entre todos los miembros del equipo es clave, ya que se busca eliminar las trabas habituales de reuniones, validaciones y revisiones formales por encuentros más informales y en fases tempranas e intermedias del proceso, no sólo en la última etapa del trabajo.
What is SRUM?
Scrum es un proceso en el que se aplican de manera regular un conjunto de buenas prácticas para trabajar colaborativamente, en equipo, y obtener el mejor resultado posible de un proyecto. Estas prácticas se apoyan unas a otras y su selección tiene origen en un estudio de la manera de trabajar de equipos altamente productivos.
En Scrum se realizan entregas parciales y regulares del producto final, priorizadas por el beneficio que aportan al receptor del proyecto. Por ello, Scrum está especialmente indicado para proyectos en entornos complejos, donde se necesita obtener resultados pronto, donde los requisitos son cambiantes o poco definidos, donde la innovación, la competitividad, la flexibilidad y la productividad son fundamentales
Scrum también se utiliza para resolver situaciones en que no se está entregando al cliente lo que necesita, cuando las entregas se alargan demasiado, los costes se disparan o la calidad no es aceptable, cuando se necesita capacidad de reacción ante la competencia, cuando la moral de los equipos es baja y la rotación alta, cuando es necesario identificar y solucionar ineficiencia sistemáticamente o cuando se quiere trabajar utilizando un proceso especializado en el desarrollo de producto.
El proceso
En Scrum un proyecto se ejecuta en ciclos temporales cortos y de duración fijas (iteraciones que normalmente son de 2 semanas, aunque en algunos equipo son de 3 y hasta 4 semanas, límite máximo de feedback de producto real y reflexión). Cada iteración tiene que proporcionar un resultado completo, un incremento de producto final que sea susceptible de ser entregado con el mínimo esfuerzo al cliente cuando lo solicite.
El proceso parte de la lista de objetivos/requisitos priorizada del producto, que actúa como plan del proyecto. En la lista, el cliente (Product Owner) prioriza los objetivos balanceando el valor que le aportan respecto a su coste (que el equipo estima considerando la Definición de Hecho) y quedan repartidos en iteraciones y entregas.
Las actividades que se llevan a cabo en Scrum son las siguientes (los tiempos indicados son para iteraciones de 2 semanas):
Planificación de iteración: El primer día de la iteración se realiza la reunión de planificación de la iteración. Tiene 2 partes:
- Selección de requisitos (2 horas): El cliente presenta al equipo la lista de requisitos priorizada del producto o proyecto. El equipo pregunta al cliente las dudas que surgen y selecciona los requisitos más prioritarios que prevé que podrá completar en la iteración, de manera que puedan ser entregados si el cliente lo solicita.
- Planificación de la iteración (2 horas): El equipo elabora la lista de tareas de la iteración necesarias para desarrollar los requisitos seleccionados. LA estimación de esfuerzo se hace de manera conjunta y los miembros del equipo se auto-asignan las tareas, se auto-organizan para trabajar e incluso en parejas (o grupos mayores) con el fin de compartir conocimiento (creando un equipo más resiliente) o para resolver juntos objetivos especialmente complejos.
Ejecución de la iteración
Cada día el equipo realiza una reunión de sincronización (15 minutos), normalmente delante de un tablero físico o pizarra (Scrum Taskboard). El equipo inspecciona el trabajo que el resto está realizando (dependencias entre tareas, progreso hacia el objetivo de la iteración, obstáculos que pueden impedir este objetivo) para poder hacer las adaptaciones necesarias que permitan cumplir con la previsión de objetivos a mostrar al final de la iteración. En la reunión cada miembro del equipo responde a tres preguntas:
- ¿Qué he hecho desde la última reunión de sincronización para audar al equipo a cumplir su objetivo?
- ¿Qué voy a hacer a partir de este momento para ayudar al equipo a cumplir su objetivo?
- ¿Qué impedimentos tengo o voy a tener que nos impidan conseguir nuesto objetivo?
Durante la iteración, el facilitador (Scrum Master) se encarga de que el equipo pueda mantener el foco para cumplir con sus objetivos.
- Elimina obstáculos que el equipo no puede resolver por sí mismo.
- Protege al equipo de interrupciones externas que puedan afectar el objetivo de la iteración o su productividad.
Durante la iteración, el cliente junto con el equipo refinan la lista de requisitos (para prepararlos para las siguientes iteraciones) y, si es necesario, cambian o replanifican los objetivos del proyecto (10%-15% del tiempo de la iteración) con el objetivo de maximizar la utilidad de lo que se desarrolla y el retorno de inversión.
Inspección y adaptación
El último día de la iteración se realiza una reunión de revisión de la iteración.. Tiene dos partes:
- Revisión (demostración) (1.5 horas): El equipo analiza cómo ha sido su manera de trabajar y cuáles son los problemas que podrían impedirle progresar adecuadamente, mejorando de manera continua su productividad. El facilitados se encargará de eliminar o escalar los obstáculos identificados que estén más allá del ámbito de acción del equipo.
- Retrospectiva (1.5 horas): El equipo analiza cómo ha sido su manera de trabajar y cuáles son los problemas que podrían impedirle progresar adecuadamente, mejorando de manera continua su productividad. El facilitador se encargará de eliminar o escalar los obstáculos identificados que estén más allá del ámbito de acción del equipo.
¿Porqué Scrum?
- Permite una rápida exploración y retroalimentación.
- Proporciona un enfoque equilibrado del diseño, que incluye algo de diseño inicial combinado con un diseño justo a tiempo.
- Exige trabajo multifuncional.
- Fomenta la sincronización diaria.
Beneficios de Scrum
- Clientes encantados
- Mejor retorno de la inversión
- Reducción de costos
- Resultado rápidos
- Confianza para triunfar en un mundo complejo
- Más alegría
Marco CYNEFIN
El marco cynefin es un marco conceptual utilizado para ayudar a la toma de decisiones. Este marco ofrece cinco contextos o dominios para la toma de decisiones: Simple, complicado, complejo, caótico y desorden, que ayudan a los gerentes a identificar cómo percibe las situaciones y tienen sentido para sí mismas y para el comportamiento de otras personas. El marco se basa en la investigación de la teoría de sistemas, la teoría de la complejidad, la teoría de las redes y las teorías del aprendizaje.
Ante ambientes complicados, ¿dónde debería caber el Scrum?
Cuando hay un ambiente complicado debes revisar esto e irte con la mejores prácticas, a lo mejor te conviene irte por un método tradicional.
Complejo | Complicado |
Sondear Sentir Responder Emergente | Sentir Analizar Responder Buena práctica |
Caótico | Simple |
Actuar Sentir Responder Novela | Sentir Categorizar Responder Mejor práctica |
El dominio del trastorno oscuro (desorden, debería estar en el centro de la tabla como un punto negro), representa situaciones en la que no está claro cuál de los otros dominios se aplica. Por definición, es difícil ver cuándo se aplica este dominio: "Aquí las perspectivas múltiples luchan por la prominencia, los líderes de facciones discuten entre sí y las reglas de cacofonía, la forma de salir de aquí es dividir la situación partes constituyentes y asignar cada uno a uno de los otros rubros. Los líderes pueden tomar decisiones e intervenir en formas contextualmente apropiadas".
MARCO SCRUM
- Scrum es un marco para organizar y gestionar el trabajo (no es un proceso estandarizado)
- El marco Scrum se basa en un conjunto de valores, principios y prácticas que proporcionan la base a la cual una organización agregará su implementación únicamente de prácticas de ingeniería relevantes y sus enfoques específicos para realizar las prácticas Scrum.
- Scrum es un marco refrescantemente simple, centrado en las personas, basado en los valores de honestidad, apertura, coraje, respeto, enfoque, confianza, empoderamiento y colaboración.
Prácticas Scrum
- Roles
- Product owner
- Scrum master
- Development team
- Actividades
- Sprint
- Planificación de sprint
- Daily Scrum
- Sprint execution
- Sprint review
- Sprint retrospective
- Product backlog grooming
- Artefactos
- Product backlog
- Sprint backlog
- Potentially product increment
- Reglas
- Descritas en la literatura
Equipos Scrum
Product Owner
Es responsable por lo que será desarrollado y en que orden.
- Mantiene y comunica a todos los demás participantes una visión clara de lo que el equipo Scrum está tratando de lograr.
- Tiene la obligación de asegurarse que siempre se realice el trabajo más valioso.
- Colabora activamente con el Scrum Master y el equipo de desarrollo y debe estar disponible para responder preguntas.
Normalmente viene de la gente del cliente y no programa.
Scrum Master
Es responsable de guiar al equipo a crear y seguir su propio proceso en el marco Scrum.
- Ayuda a todos para entender los valores, principios y prácticas del Scrum.
- Es un coach que provee liderazgo.
- Actúa como facilitador ayudando al equipo a resolver problemas y mejoras en su uso de Scrum.
- Protege a su equipo de interferencias externas y elimina obstáculos.
- Es un líder y no un jefe.
Equipo de desarrollo
Es responsable de determinar como entregar lo que el product owner pidió.
- Colección diversa y multifuncional de personas responsables del diseño de la construcción y las pruebas del producto deseado.
- Se auto-organiza
- De 5-9 personas; sus miembros deben tener colectivamente todas las habilidades necesarias para producir software de trabajo de buena calidad
Actividades y artefactos Scrum: Producto
Backlog
- Hacemos el trabajo valioso primero.
- En el desarrollo de nuevos productos, los elementos de la cartera de pedidos del producto son características necesarias para cumplir con la visión del propietario del producto.
- En el desarrollo continuo del producto, también puede contener nuevas características, cambios en las características existentes, defectos en reparación, mejoras técnicas.
- La acumulación de productos es un artefacto en constante evolución.
- Aseo: priorizar, ordenar u organizar el PB.
- Artículos de tamaño: medidas de tamaño relativo, puntos de historia, días ideales.
Sprints
- Calendario de hasta un mes de Sprints, todos con la misma duración
- El trabajo completado en cada sprint debe crear algo tangible.
- No hay cambios de objetivos o cambios de personas durante el sprint.
Planificación Sprint
- Durante la planificación del sprint, el propietario del producto y el equipo de desarrollo acuerdan un objetivo de sprint que define lo que se supone que alcanzará el próximo sprint.
- Elección de funciones para trabajar en un ritmo sostenible y obtener las tareas para implementar cada función.
- La planificación de Sprint toma de 4 a 8 horas durante dos semanas a un mes.
Ejecución Sprint
- El equipo de desarrollo guiado por el scrum master realiza todo el trabajo de nivel de tarea necesario para realizar las funciones.
- Una vez terminado, significa que existe un alto grado de confianza en que todo el trabajo necesario para producir características de buena calidad se ha completado.
- Nadie le dice al equipo de desarrollo en que orden o como hacer el trabajo a nivel de tarea
Sprint diario
- Reunión de 15 minutos: stand-up diario
- El scrum master facilita y cada miembro del equipo responde 3 preguntas:
- ¿Qué logre desde el último Sprint diario?
- ¿En qué planeo trabajar para el próximo Scrum diario?
- ¿Cuáles son los obstáculos o impedimentos que me impiden avanzar?
- El Scrum diario es esencial para ayudar al equipo de desarrollo a administrar el flujo de trabajo rápido y flexible.
- El Scrum diario no es una actividad de resolución de problemas.
- El diario no es una reunion de estado tradicional.
- El Scrum diario es principalmente una actividad de inspección, sincronización y planificación diaria adaptativa que ayuda a un equipo auto-organizado a hacer mejor su trabajo.
- El Product Owner no tiene que estar en la reunión diaria de Scrum.
Terminado
- Resultado de Sprint: incremento de product potencialmente viable.
- Una definición apropiada de terminado podría ser una porción de la funcionalidad del producto que sea lo suficientemente funcional y utilizable para generar comentarios que permitan al equipo decidir qué trabajo se debe hacer a continuación o cómo hacerlo.
Revisión de Sprint
- El objetivo de esta actividad es inspeccionar y adaptar el product que se está construyendo.
- Evaluación y conversación con el equipo Scrum, partes interesadas, patrocinadores, clientes y miembros interesados de otros equipos.
- Esto proporciona visibilidad y enfoque.
- Inspeccionar y adaptar el producto.
Retrospectiva Sprint
- Antes de la planificación del Sprint.
- Oportunidad de inspeccionar y adaptar el proceso.
- El equipo de desarrollo, Scrum Master y Product Owner se unen para verificar qué funciona y qué no funciona con Scrum y sus prácticas.
- Compromisos para cambiar el proceso.
No es una cura mágica
- Scrum no es una bala de plata o una cura mágica.
- Scrum es bueno para esfuerzos complejos de desarrollo de productos.
- El marco Scrum es simple, pero sería un error suponer que es fácil y sencillo de aplicar.
- Scrum no es prescriptivo.
- Scrum proporciona visibilidad a los procesos de trabajo.
KANBAN
- Scrum no es adecuado para trabajos altamente controlados por interrupciones.
- KANBAN es un enfoque que se superpone a un proceso existente (en lugar de una solución de proceso independiente) y recomienda que usted:
- Visualice cómo influye el trabajo a través del sistema (por ejemplo, los pasos que la organización de soporte toma para resolver una solicitud de soporte).
- Limite el trabajo en progreso (WIP, Work In Progress) en cada paso para asegurarse de que no está haciendo más trabajo del que tiene la capacidad de hacer.
- Medir y optimizar el flujo del trabajo a través del sistema para hacer una mejora continua.
En general el método ágil Scrum es uno de los métodos más costo eficientes en el mercado. Muchas empresas ya están optando por implementarlos. Por loq ue debemos estar al pendiente de sus mejoras.