Metodología de desarrollo ágil Scrum

 

!Hola!

De seguro en algún punto de tu carrera has escuchado hablar de metodologías agiles, la importancia de conocer, por lo menos, una de estas metodologías, como con el paso de el tiempo un gran numero de organizaciones han decidido integrarlas en sus proyectos. Pero ¿qué son? y ¿por qué tantas empresas han decidido adoptarlas?

Para comprender que son vamos a dividir el concepto en dos:

¿Qué es una metodología?

Una metodología no es mas que el conjunto de procedimientos empleados para alcanzar los objetivos de un proceso, es decir, la forma en que nos organizamos y la manera en que trabajamos para llevar a cabo las actividades que nos permitirán alcanzar los objetivos de un proyecto.

¿Qué significa ser ágil?

Es tener la capacidad de realizar actividades de manera rápida y con los mejores resultados.

Tomando estos conceptos en cuenta, ¿Qué es una metodología ágil?

No es mas que un conjunto de métodos utilizados con el objetivo de desarrollar un proyecto o producto de una forma más rápida y eficaz y que este cumpla con lo que el cliente quiere y necesita con la mayor calidad posible.

Pero ¿Cuáles son las ventajas que tienen estas metodologías?

-Mejora la calidad: Ayudan a minimizar la cantidad de errores gracias al monitoreo continuo de los productos de trabajo y la constante retroalimentación tanto para el equipo de desarrollo como para el cliente. Esto permite conocer las necesidades del cliente, los avances o retrasos del proyecto y las causas de estos retrasos.

-Mayor compromiso: Los miembros de el equipo desarrollan un sentimiento de entusiasmo, entienden que cada uno de ellos tiene un rol de suma importancia con el cual deben cumplir para que el proyecto alcance sus objetivos, estas metodologías están más enfocadas en las personas que en las herramientas y los procesos.

-Rapidez: Reducen el tiempo de duración de un proyecto minimizando los costos, trabajan todas las partes a la misma vez, asignando cada rol a la persona que mejor pueda llevarlo a cabo. De esta forma se pueden entregar fragmentos del producto de manera periódica, esto permite que el cliente pueda ver los resultados del trabajo realizado, hacer observaciones y, si es necesario, señalar errores en el producto antes de que este sea lanzado.

-Aumento de productividad: Al tener una mejor distribución de los recursos y constante interacción entre los miembros del proyecto se refuerza la productividad gracias a la reducción de costos y a la adaptabilidad que brindan estas metodologías.

-Mayor satisfacción para el cliente: Dado que el cliente estar involucrado en el desarrollo del producto desde el principio hasta el lanzamiento este podrá dar retroalimentación sobre lo que se ha realizado del proyecto, esto permite al equipo validar y verificar si el producto que se esta contrayendo es lo que se requiere y si este se adapta a las necesidades del cliente.

-Acelera el retorno de inversión: En las metodologías tradicionales la espera para ver resultados tendía a alagarse, de manera especial para los clientes, quienes solo se mostraban al principio del proyecto y no se volvía a presentar hasta el final, esto también tenía repercusiones en la satisfacción del cliente ya que en ocasiones el producto entregado no era lo que se necesitaba. Mientras que las metodologías agiles el cliente puede ver de primera mano el resultado de su inversión.

Con lo rápido que se mueve el mundo, sin duda alguna, estas metodologías han llagado para quedarse, por ello es importante conocerlas y saber como adaptarlas a nuestros proyectos.

En el día de hoy te hablare sobre una de ellas SCRUM. ¿Qué es scrum?

Es una metodología de desarrollo ágil orientada a procesos iterativos y e incrementales, que busca ofrecer resultados al cliente durante todo el proceso de desarrollo, además de esto, procura ser adaptable, flexible y eficaz brindando al cliente el producto que quiere y necesita, esto debido a un ambiente de colaboración, interacción y compromiso.

¿Qué quiere decir interactivo e incremental?

Pues en un desarrollo interactivo e incremental los proyectos se planifican en pequeños bloques de tiempo, pueden ir desde semanas hasta meses, estos se conocen como interacciones, en estas se repiten los mismos pasos o procedimientos con el fin de brindar resultados sobre el producto final.

En cada una de estas interacciones se realiza una evaluación al producto, o sea, se hace una entrega incremental, en donde se comparan los resultados con los obtenidos en interacciones anteriores, y se verifica si cumplen con los requerimientos.

Este tipo de proyectos se enfocan en los requisitos desde el punto de vista del cliente.

Antes de explicar cómo funciona scrum hablemos sobre sus principios, estos son fundamentales ya que deben ser utilizados en todos los proyectos que apliquen esta metodología.


 

1-Control de procesos empírico: Este principio se enfoca en la revisión continua, la adaptabilidad de scrum a los proyectos y a la transparencia tanto al momento de compartir información como en las actividades realizadas.

2-Auto-organización: Se centra en los empleados de hoy en día, estos muestran mejores resultados cundo se autoorganizan, lo que genera un mayor sentimiento de compromiso y responsabilidad, generando un ambiente innovador y creativo más adecuado para el crecimiento.

3-Colaboracion: Se basa en los tres diamantes fundamentales del trabajo en equipo:

-La conciencia: Los miembros del equipo conocen y entienden la importancia de cada una de las actividades que realiza cada integrante, es decir, comprende el rol que cumple cada uno de sus compañeros.

-La articulación: Al finalizar cada actividad o tarea se une todo en trabajo realizado en uno solo, o sea, se integran los resultados.

-La apropiación: Todos los integrantes del equipo deben adaptarse y comprender las herramientas y metodologías utilizadas en proyecto.

 También fomenta la gestión de proyectos como un procedimiento de creación de valor comparativo con equipos que trabajan e interactúan conjuntamente para ofrecer el mayor valor.

4-Priorización basada en el valor: Este principio pone el enfoque en scrum para ofrecer el mayor valor comercial desde el principio su conclusión, se destacan las ventajas de utilizar esta metodología.

5-Bloque de tiempo (Time-boxing): Este principio describe la importancia del tiempo en scrum y como este es considerado una restricción limitante, también ayuda a definir como será utilizado el tiempo en la planificación y ejecución del proyecto.

Los elementos del Time-boxing en scrum son:

-          Sprints: En scrum el sprint es el corazón, la parte central, es un intervalo de tiempo que pude durar desde semanas hasta un mes, dependiendo del proyecto y su complejidad.

-          Daily Standups: Son reuniones diarias de no mas de 15 minutos en las cuales se enfocan en ¿Qué hice ayer? ¿Qué voy a hacer hoy? ¿Qué ayuda necesito?, Su objetivo es tener una planificación y retroalimentación diaria, además de conocer los obstáculos del proyecto y plantear soluciones para superarlos.

-          Reuniones de planificación de sprint (Sprint Planning): En esta reunión se define qué se va a hacer y cómo se va a hacer, se realiza al inicio de cada sprint y se establece como se va a trabajar el proyecto basándose en las fases en la que se encuentra.

-          Reuniones de revisión del sprint: Se revisa el sprint terminado y los avances que deberían tener el proyecto de acuerdo con la planificación.

-          Reuniones de retrospectiva del sprint: En estas reuniones el equipo revisa todo los que se ha hecho, validando lo que se ha cumplido y lo que no, busaca aclarar que hicieron bien y que hicieron mal para determinar si se debe o no trabajar de esa manera y mejorar los procesos antes de aplicarlos en otros sprints o proyectos, en ocasiones también se agregan nuevas actividades.

6-Desarrollo iterativo: Este principio puntualiza el desarrollo iterativo y enfatiza en cómo administrar mejor los cambios, de manera que, se puedan construir productos que satisfagan las necesidades del cliente. También delinea las responsabilidades del Propietario del Producto (Product Owner) y  las de la organización relacionadas con el desarrollo iterativo.

¿Quién es el propietario del producto?, A continuación, te explicare este y otros roles en scrum.

-El Product Owner(PO, Propietario del producto): Es el intermediario entre el cliente y el equipo de desarrollo, se encarga de interpretar lo que el cliente solicita, valida las historias de usuario y las organiza en el Product Backlog de acedo a la prioridad.


¿Qué son historias de usuario y el Product Backlog?

Las historias de usuario son expresiones cortas y sencillas escritas en pequeñas notas, muestran lo que el cliente esta solicitando tomada desde la perspectiva del usuario final, se componen por: El requerimiento, el rol del usuario final, objetivo, el beneficio de desarrollar esta función.

Ejemplo: Les solicitan crear una función que permita a los autores de revista enviar sus artículos para revisión y que estos sean notificados del estado del articulo cuando se efectué él envió.






 También están las épicas que son historias de usuario, pero más extensas que posteriormente son descompuestas en historias de usuario más pequeñas.

Luego de ser validadas estas historias pasan al Product Backlog, este último es una lista que recoge y organiza todos los requerimientos con los que el producto necesita cumplir para ser aceptado como bueno y valido. Lo crea el Product Owner y se ordena de acuerdo a los requerimientos que, se consideran, puedan garantizar la calidad del producto y que este sea el apropiado para el cliente.


-Srum master: Es la persona encargada de dirigir e incentivar al equipo de scrum, se asegura de que estos estén motivados y bien capacitados para cumplir con sus respectivas funciones, es decir, su función es guiar, facilitar y enseñar las practicas y principios de scrum a todos los participantes del proyecto, busca eliminar los obstáculos que tenga el equipo y se asegura de que los procesos de scrum se ejecuten de manera correcta.

 

-Equipo scrum (Srum Team):  Es el grupo de personas cuya tarea es comprender los requerimientos del negocio especificados por el PO, además de esto deben estimar las historias de usuarios, o sea, evaluar las historias de usuario y hacer observaciones sobre estas, que permitan determinar su prioridad. También se ocupa de la creación de los entregables de proyecto.

Estos son los roles principales de scrum, pero también cuenta con roles no centrales, son roles que no siempre se incluyen en los proyectos scrum, aunque en algunos proyectos representa posiciones importantes.

Estos son:

-Stakeholder(s) o personas involucradas: Este termino se refiere a los clientes, usuarios y patrocinadores, los cuales normalmente interactúan con el PO, el Scrum Master y el Scrum Team para realizar el intercambio de información y facilitar el desarrollo del producto.

-Cliente: Es quien solicita el servicio o producto y como se menciono antes si bien no es un rol central, es fundamental, recodemos que es la interacción con el cliente la que permite medir si se esta construyendo el producto que se necesita. Pueden tratarse de clientes externos, es decir, organizaciones o personas que no estén ligadas a la compañía o de cliente internos dentro de la misma organización.

-Usuarios: Es la persona u organización que utilizara el producto de manera directa, de la misma forma que los clientes pueden ser internos o externos, en algunos casos el cliente y el usuario final pueden ser los mismos.


 -Patrocinador (Sponsor): Es quien provee los recursos y apoya el proyecto, también es a quien debemos rendir cuentas al final del proyecto.


El cliente también puede cumplir con esta función, puede darse el caso en que cumpla con los tres roles.


-Vendedores: Son organizaciones externas a a la organización que brindan productos o servicios con los que la compañía no cuenta y son esenciales para el proyecto, como productos de software o equipos.


-Scrum Guidance Body (SGB):  Es un grupo de personas expertas en un área en específico, generalmente se centran en establecer los objetivos relacionados con la calidad, aspectos legales, seguridad e integridad de la información entre otras funciones. Aunque es opcional se recomienda incorporarlo, esto ayudará a aumentar la calidad del producto en desarrollo.

Ahora hablemos sobre como funciona scrum. El flujo de un proyecto scrum, este consta de tres partes:



-Inicio: En esta fase se realizan las reuniones de revisión del proyecto, donde se establece la visión general del proyecto, se escriben las épicas y se organizan en el Product Backlog. Además, se otorgan los roles o se identifican al Scrum Master, Stakeholder (s), se forma el Srum Team y se realiza la planificación del lanzamiento.

-Sprint (s): Esta se divide en tres partes:

1- Planificación y estimación:  En esta fase se realiza la reunión de planificación del sprint y se crea el Sprint Backlog(SB), este es un subconjunto de los requerimientos establecidos en el Product Backlog  en donde se crean las historias de usuario a partir de las épicas, y se estiman, es decir se evalúan tomado en cuenta esfuerzo de desarrollo, el nivel de riesgo y el nivel de complejidad.

Luego de esto se establecen las historias de usuario que se trabajaran en el sprint, se hace una lista de tareas en la que se escribe lo que se debe hacer para desarrollar lo establecido en las historias de usuario. Posteriormente se hace una estimación de las tareas por cada historia de usuario. Luego se colocan en el Sprint Backlog(SB), y a medida que se van trabajando se mueven de un renglón a otro, es decir, cambia su estado. Los estados de las tareas pueden ser: Por hacer, En progreso, En prueba y terminado. Normalmente se escriben en una pizarra (Scrum Taskboard) de la siguiente forma:



 

2-Creación de entregables: En esta fase se inicia la creación de entregables, estos pueden ser la documentación que se genera al realizar las tareas establecidas o incluso un prototipo del producto. El equipo realiza Daily Standups evalúan lo que se ha hecho y los obstáculos que impiden que el proyecto avance, buscan la manera de adaptarse para vencer estos obstáculos y alcanzar los objetivos del Sprint, el Scrum Master se asegura de que el equipo se centre en estos objetivos y no pierda el foco del proyecto.

Durante esta fase el equipo junto al cliente se encarga de refinar el Sprint Backlog priorizando el producto, se revisan los requerimientos y se replantean de ser necesario con el fin de mejorar la calidad y la utilidad de lo que se está construyendo.

3-Revision y retrospectiva: Aquí se realizan las Reuniones de revisión del sprint y Reuniones de retrospectiva del sprint estas tienen una duración de aproximadamente una hora y media donde se demuestra lo que se ha hecho y se valora el sprint. el Scrum Master realiza un Control (Burn Down) en donde se mide el progreso del proyecto y actualiza los datos disponibles generalmente representados en gráficos.

 

            Estas tres fases se repiten en cada interacción.

-Lanzamiento: Esta es la última fase, aquí se envían los entregables, esto incluye el producto, y se realiza una reunión retrospectiva del proyecto en general donde se valora que hicimos bien, que hicimos mal, cual o cuales estrategias fueron efectivas, cuales se deben descartar y cuales se pueden mejorar.

Sin duda alguna esta metodología busca asegurar que el producto final sea lo que se solicito por el cliente y que este quede satisfecho en la mayor medida posible.

Además de los proyectos de desarrollo de software ¿En qué otra área crees que se puede utilizar esta metodología?, deja tu respuesta en los comentarios e iniciemos una conversación.



Hasta aquí el articulo de hoy, espero que te haya servido y si es así compórtelo con tus amigos y colegas. Que tengas un feliz resto del día.

                                                                ¡Gracias por leer!

 

                                     

 

Comentarios

Entradas más populares de este blog

Niveles de pruebas de software

7 principios de las pruebas de calidad de software

Conceptos básicos para un QA