- Por Mashooq Badar
- ·
- Publicado 12 Jun 2024
Excelencia en la entrega de software con métricas SPACE
Contar con equipos productivos y felices es bueno para los negocios. Los equipos de desarrollo son una de las inversiones más caras para la mayoría..
Si en vez de leer prefieres escuchar, dale al play.
La agilidad, o la capacidad de responder al cambio en el mercado, a menudo se considera uno de los factores más importantes para prever el éxito de una empresa. De hecho, los proyectos ágiles disfrutan de un 60% más de posibilidades de éxito en comparación con los proyectos de tipo "waterfall" más tradicionales.
Pero, ¿qué es Agile? El concepto de un enfoque ágil es algo que se usa mucho. Pero puede haber mucha confusión sobre lo que realmente implica. ¿Tiene algo que ver con paredes llenas de post its? ¿Es un sofisticado software de gestión de proyectos? ¿O algo que solo puede aprender de consultores especializados?
En esta publicación, repasaremos los conceptos y procesos clave y más importantes del desarrollo de productos ágiles, y cómo puedes aplicarlos a tu propia organización.
Primero, antes de ver Agile, echemos un vistazo a waterfall:
'Waterfall' es el nombre del estilo más tradicional de desarrollo de productos, tanto para software como para productos físicos. Sigue un proceso lineal. Para empezar, normalmente hay un largo proceso de planificación, en el que se planifica absolutamente todo para el proyecto completo. Esta etapa de planificación puede durar varios meses.
Una vez completada la planificación, el proyecto pasará a la siguiente etapa, 'Diseño', donde se finaliza todo el diseño del producto. El proyecto continúa avanzando a través de las etapas, siempre completando la última etapa por completo antes de pasar a la siguiente.
Finalmente, el producto terminado completo se lanza al mercado, meses, si no años, después de la etapa de planificación inicial. Como resultado, podría introducirse en el mercado el producto equivocado, y lo que originalmente podría haber sido un producto bien planificado con una gran adecuación al mercado ahora podría estar obsoleto en el momento de su lanzamiento. La tecnología puede haber cambiado o la demanda del mercado puede haber cambiado.
Hemos analizado waterfall, pero ¿qué tiene que ver con Agile?
Con Agile dividimos el proceso de waterfall en partes más pequeñas.
Primero hacemos la planificación suficiente para empezar. En lugar de planificar todo el producto, solo planificaremos un componente muy pequeño, tal vez solo una característica o dos.
Luego, nuestro objetivo es construir y diseñar lo suficiente para poder enviar este pequeño conjunto de funciones, también conocido como "lanzamiento incremental".
En Agile, todo este proceso, desde la planificación hasta el lanzamiento incremental, suele tardar unas 2 semanas y suele denominarse "sprint".
Una vez que hemos hecho un lanzamiento, comenzamos el ciclo de nuevo. Cada vez hacemos una planificación suficiente para crear la próxima versión incremental de software funcional.
Al realizar pequeños lanzamientos regulares, el proceso del producto es flexible. A medida que enviamos pequeños conjuntos de funciones o versiones incrementales, podemos comenzar rápidamente a probar y recopilar feedback de los usuarios sobre cada función enviada. Esta prueba continua significa que podemos responder rápidamente a los requisitos nuevos y cambiantes. Como resultado, podemos ajustar continuamente la hoja de ruta a corto plazo para satisfacer las necesidades de los clientes, lo que significa que es mucho más probable que entreguemos un producto final que guste mucho más y sea verdaderamente útil para nuestros usuarios.
El desarrollo ágil de productos se basa en los 12 principios ágiles. Sin embargo, para que este artículo sea más útil para los principiantes, centrémonos en los 4 principios clave que creo que son útiles para tener en cuenta si eres nuevo en Agile.
Como puedes ver los principios Agile no son una lista de procesos a seguir al crear un producto, sino un conjunto de valores y creencias guía que se pueden usar para ayudar a tomar decisiones útiles para desarrollar productos.
Si has estado aprendiendo sobre el "mundo ágil", es muy probable que también hayas escuchado otros términos, como "Scrum" y "Kanban". Scrum y Kanban son dos metodologías ágiles muy populares. Son marcos de desarrollo de productos que están diseñados para ayudar a los equipos a lograr los principios ágiles.
Sin embargo, si bien estas metodologías pueden ayudar a un equipo a ser ágil, no son necesariamente ágiles en sí mismas. Seguir estas metodologías solo da como resultado una práctica Ágil si ayuda al equipo a lograr los principios Ágiles. No necesariamente necesitas seguir estrictamente una metodología o procesos si descubres que esa metodología no está ayudando a su equipo a lograr los principios Agile. ¿El equipo está reflexionando y ajustándose? ¿Estás entregando funciones con frecuencia? Lograr los principios ágiles es lo que determina si un equipo es verdaderamente ágil, no la metodología que se use.
Tal vez estás aplicando Scrum, lo que sugiere tener una reunión diaria para conectarse con su equipo, pero después de aplicarlo durante algún tiempo, te das cuenta de que simplemente no está funcionando. Quizá te das cuenta que tu equipo es más productivo y se contenta con tener reuniones sobre un tema específico. ¡Eso también está bien! Puedes hacer ese cambio. Parte de Agile es responder al cambio, revisar sus procesos y adaptarse, y eso también puede significar adaptar la forma en que estructura el desarrollo de su producto.
En última instancia, debe usar lo que observes que ayuda a tu equipo a tomar mejores decisiones ágiles. No existe un método o sistema verdadero que sea la única forma de ser ágil. Para los equipos nuevos en Agile, puede ser más fácil seguir una metodología establecida para comenzar con alguna estructura establecida y luego, una vez que el equipo se sienta cómodo, puedes intentar cambiar la fórmula.
Un equipo Agile está formado por:
El objetivo de la comunicación con el usuario es identificar sus necesidades. Un ejemplo de necesidad de un usuario podría ser “comparar convenientemente las tarifas de telefonía móvil”. Las necesidades del usuario siempre deben basarse en conversaciones reales con personas, no en necesidades que el equipo crea que el usuario quiere.
Al comienzo de un nuevo proyecto de desarrollo de productos Agile, debes definir la estrategia del producto. Esto resume la necesidad comercial que tu proyecto está abordando. En términos más simples: ¿cuál es el objetivo final de este proyecto Agile y cómo lo lograrás?
Los owner de productos son responsables de crear una estrategia de producto en colaboración con stakeholders para asegurar la aceptación y la alineación. Es opcional, pero se recomienda incluir también a miembros clave del equipo de desarrollo.
Establecer una estrategia clara es crucial en un entorno Agile. Los equipos de desarrollo a veces pueden sentirse atrapados en los detalles de un proyecto y perder de vista el propósito general detrás de todo su trabajo. La estrategia del producto es un objetivo de alto nivel al que el equipo puede referirse para asegurarse de que están viendo el panorama general.
Para prepararte para una reunión de estrategia de producto, ya deberías haber trabajado en estrecha colaboración con los usuarios para comprender sus puntos débiles, investigar el mercado y conocer sus objetivos comerciales generales. Hay muchas plantillas y herramientas de mapping que puedes usar para ayudarte a crear tu estrategia de producto. Uno que recomiendo porque considero que es sencillo para los principiantes es el método Elevator Pitch.
Una vez que se decide la estrategia, el owner del producto con los stakeholders se reunirán para empezar a planificar el roadmap del producto.
El roadmap del producto es una aproximación de alto nivel de los requisitos, las prioridades y un marco de tiempo flexible de cómo se completará todo.
Jeff Gothelf, autor de Lean UX, explica bien el dilema del roadmapping Agile,
One of the biggest challenges in product management is planning the work in a linear, visual way…Digital product development is not linear. It is iterative. We build some things. We ship them. We see how they impact customer behavior. We iterate them and ship again.”
Los proyectos ágiles son flexibles por naturaleza, por lo que planificar la hoja de ruta para el próximo año o dos puede ser un desafío y debe abordarse de manera diferente a la planificación normal de la hoja de ruta.
Al igual que al establecer la estrategia de producto, primero necesitas hablar con los usuarios e identificar sus necesidades antes de la reunión de la hoja de ruta. ¡Las necesidades de los usuarios son combustible para la planificación!
Una buena hoja de ruta de productos Agile proporciona contexto para la acumulación de productos. Aquí es donde empezamos a entrar en detalles.
Es la única fuente autorizada para las cosas en las que trabaja un equipo. Un product backlog es una lista de las nuevas funciones, los cambios en las funciones existentes, las correcciones de errores, los cambios de infraestructura u otras actividades que un equipo puede realizar para lograr un resultado específico. Puedes pensar en algo similar a una lista de "cosas por hacer" para el equipo de desarrollo.
A medida que lleguen las solicitudes, los comentarios de los usuarios y las nuevas ideas, terminarás con un montón de funciones y proyectos potenciales para realizar. Estos viven en tu product backlog hasta que estés listo para agregarlos a un sprint.
No se hace nada que no esté en el product backlog, pero también a la inversa: la presencia de un elemento en el product backlog no garantiza que será entregado. Los elementos del product backlog son simplemente opciones que tiene el equipo para lograr un resultado específico en lugar de un compromiso.
El product backlog es flexible. El administrador de trabajos pendientes, generalmente el product owner, debería poder agregar o eliminar elementos rápidamente en el trabajo pendiente. El product backlog debe adaptarse constantemente a la forma en que se considere que el equipo puede lograr mejor el resultado deseado.
Los elementos del product backlog toman una variedad de formatos, siendo las historias de usuario las más comunes.
Las historias de usuario son historias simples que describen algo que le daría valor al usuario. Nos ayudan a organizar nuestro trabajo en pequeñas partes.Un formato común que se utiliza para las historias de usuarios es el siguiente formato 'Quién, qué + por qué':
Por ejemplo, "Como trabajador por cuenta propia, quiero realizar un seguimiento fácil y sin estrés de las finanzas relacionadas con el trabajo, para poder estar seguro de que he pagado mis impuestos correctamente".
Las historias de usuario pueden ayudarnos a seguir uno de los principios clave de Agile: "nuestra máxima prioridad es satisfacer al cliente a través de la entrega temprana y continua de valiosas funciones de software".
Al final de nuestro sprint de 2 semanas, nuestro objetivo es haber entregado nuestro lanzamiento incremental de valiosas funciones de software. Para completar las historias de los usuarios y entregar software valioso, solo nos enfocamos en construir lo que es necesario para entregar el valor.
Por ejemplo, en waterfall es posible que deseemos construir primero la base de datos completa para todo el producto antes de pasar a otras partes de la estructura. En Agile, solo construiremos lo suficiente de la base de datos para ofrecer la función.
Puede parecer poco intuitivo al principio, y es posible que tengas que volver atrás y volver a trabajar en cosas que hiciste en el pasado a medida que las futuras historias de usuarios se vuelven más claras. Pero es importante recordar que la metodología Agile es una forma más eficiente de crear productos. En lugar de esperar años para lanzar un proyecto, en cuestión de semanas puedes enviar características funcionales que agregan valor al usuario y al negocio. A partir de las funciones que envíes, puedes recopilar feedback para futuras iteraciones y adaptarte rápidamente a los cambios del mercado.
Una vez que la acumulación de productos haya recopilado suficientes historias de usuarios para comenzar a enviar algunas características, estarás listo para la reunión de planificación del sprint.
Un sprint suele durar 2 semanas y se repite varias veces. En cada sprint, solo estás planificando y construyendo lo suficiente para lanzar la próxima versión incremental. El ciclo de sprint se repite hasta que se completa el producto.
Antes de un nuevo sprint, el equipo tendrá una reunión de planificación de sprint para crear la acumulación de sprint. Aunque no es necesario pasar demasiado tiempo en esta etapa, en realidad podría llevarle de 2 a 4 horas.
La acumulación de sprints es como un subconjunto de la acumulación de productos. El equipo se pone de acuerdo acerca de qué historias del product backlog quieren incluir en el próximo sprint.
La planificación de Sprint en Agile la realiza el equipo del producto, pero debe incluir información y orientación del propietario del producto. Sin embargo, en última instancia, depende del equipo decidir qué debe (y puede) hacerse en un sprint.
Mientras planifica el sprint, naturalmente encontrará que algunas de las historias de usuarios del product backlog tienen menor prioridad para el usuario. Al decidir en qué historias de usuario trabajar en este sprint, idealmente queremos construir historias de alta prioridad primero.
Pero, ¿cuántos deberíamos tirar en un sprint? Tenemos un tiempo fijo y, obviamente, no podemos construirlos y lanzarlos todos.
Un método popular para priorizar las historias de usuarios en la planificación de sprints es usar story points. Aquí es donde el equipo analiza los votos de las historias para asignar historias con puntos, para estimar cuánto esfuerzo requerirá una historia. De esta manera, puede tener una idea de cuáles son historias más grandes y cuáles son logros fáciles y más sencillos. Luego, el equipo decide qué historias se pueden completar dentro del marco de tiempo del sprint.
A medida que el proyecto continúa, la velocidad pronosticada se volverá clara: aproximadamente la cantidad de puntos que su equipo puede manejar en un sprint sin sobrecargarse de trabajo o perder calidad. Esto ayudará con la planificación futura.
La estimación es difícil, y con un nuevo equipo puede ser difícil predecir el esfuerzo estimado, así que no te preocupes si te da cuenta después de algunos sprints de que necesitas recalibrar tus estimaciones. Como siempre con Agile, la reflexión y la adaptación son claves.
En la reunión de planificación del sprint, también debes revisar su definición de "done": así es como se verás el software al final del sprint. Es importante que las personas que realizan el trabajo (los desarrolladores) y los que lo inspeccionan (el propietario del producto y otras partes interesadas) estén todos en sintonía con esta definición.
El daily meeting se conoce comúnmente como ‘standups’ bajo la metodología scrum. Los proyectos ágiles se mueven rápidamente, por lo tanto, es necesario que establecer momentos regulares para alinearse y asegurarse de que no haya obstáculos en el camino.
Una reunión diaria de 10 a 15 minutos es una oportunidad para que el equipo se reúna para discutir tres cosas:
Si bien esto puede parecer una molestia para algunos miembros del equipo, estas reuniones son esenciales para la comunicación que impulsa la gestión ágil de proyectos. Agile depende de reaccionar rápidamente a los problemas y expresarlos en un espacio público es una forma poderosa de promover la colaboración entre equipos.
Al final de cada sprint, el equipo habrá enviado una pieza de software funcional. ¡Este es un gran hito para celebrar! Después del sprint, llevamos a cabo una reunión de revisión del sprint en la que revisamos lo que se hizo y lo compartimos con las personas de nuestro equipo y los stakeholders. Piensa en ello como Agile enseñar y explicar.
El objetivo de esta reunión es demostrar que los objetivos del sprint se lograron (o no). Verifique tu plan inicial y asegúrate de que se cumplieron todos los requisitos de acuerdo con la definition of done. Puedes comenzar a identificar cambios o errores que se pueden agregar al product backlog y priorizar para el próximo sprint si lo deseas.
Si algo salió mal, pregunta por qué. ¿Cómo puedes ajustar el próximo sprint para que el equipo pueda alcanzar sus objetivos? Agile tiene que ver con el aprendizaje continuo y las iteraciones, y esto aplica tanto a los procesos como al producto.
¡Ahora es el momento de aclarar y repetir! Es hora de comenzar el próximo ciclo de sprint con una reunión de planificación de sprint.
Contar con equipos productivos y felices es bueno para los negocios. Los equipos de desarrollo son una de las inversiones más caras para la mayoría..
Hoy vamos a sumergirnos en un tema crucial para entender cómo dar vida a proyectos exitosos: el Discovery. ¿Alguna vez te has preguntado qué implica..
Matheus Marabesi, software craftsperson en Codurance, analiza en profundidad la lista de los 22 antipatrones de TDD recopilada por James Carr. A..
Suscríbete a nuestra newsletter para que podamos hacerte llegar recomendaciones de expertos y casos prácticos inspiradores