Actualmente, todos los que estamos desarrollando software sabemos que la eficiencia, la eficacia y la velocidad con la cual imprimimos nuestro trabajo son aspectos claves, sin embargo a menudo se suele subestimar en algunas empresas la importancia de las personas y sus interacciones. El Manifiesto Ágil nos recuerda que son los individuos y su capacidad de colaborar los que realmente impulsan el éxito de un proyecto, después puede estar todo el resto que no es menor por cierto.
Sobre nuestro desarrollo y nuestros desarrollos
El desarrollo ágil se basa en cuatro principios fundamentales que ponen a las personas en el centro:
Priorizar a las personas y las interacciones sobre los procesos y las herramientas: Si bien los procesos y las herramientas son necesarias, ejemplo de ello lo tenemos con un Xray o Zephyr (por nombrar dos herramientas de las muchas que hay) que si bien nos permiten gestionar de manera integral nuestro testing, no nos deben eclipsar ya que es un hecho la importancia que tiene la comunicación y la colaboración entre los miembros del equipo, y que lo hacemos realidad en cada Daily y en cada una de las reuniones que tenemos durante el día, con los diferentes miembros del equipo de proyecto y/o equipo de desarrollo.
Entregar software funcional en lugar de documentación extensa: El objetivo principal que debemos perseguir es crear un producto de software que funcione y cubra las necesidades que el cliente comunica a través del Product Owner, y no generar una gran cantidad de documentación que al fin y al cabo puede satisfacer el alcance teórico del pedido pero que no le permitirá al cliente aprovechar las primeras piezas usables.
Colaborar con el cliente en lugar de tener que recurrir a leer el contrato para negociar: La comunicación constante con el cliente permite adaptar el proyecto a sus necesidades y expectativas cambiantes, debiendo el equipo de desarrollo entender que los cambios ocurren y que sólo con una muy buena relación y comunicación con el cliente, podrán superar en conjunto todo tipo de situaciones que pudieran derivar a una negociación del contrato.
Adaptarse al cambio en lugar de seguir un plan inflexible: Los proyectos ágiles son flexibles y receptivos a los cambios, lo que permite aprovechar nuevas oportunidades y corregir errores de forma rápida, y todo ésto gracias a los roles que participan en cada proyecto, las ceremonias que se llevan a cabo y los artefactos de trabajo que se van produciendo a partir de diversas interacciones.
¡Cuán importante son las personas en el desarrollo ágil!
Comunicación efectiva: La comunicación abierta y transparente entre los miembros del equipo es fundamental para evitar malentendidos y asegurar un trabajo eficiente.
Colaboración y trabajo en equipo: El éxito del proyecto depende de la capacidad de los miembros del equipo para trabajar juntos de forma cohesiva y compartir ideas.
Motivación y compromiso: Un equipo motivado y comprometido con el proyecto es más propenso a producir resultados de alta calidad.
Toma de decisiones rápida: Los equipos ágiles deben ser capaces de tomar decisiones rápidas y adaptables a los cambios del entorno.
Si bien sabemos que el Scrum Master juega un papel muy importante aquí, por la esencia propia de su rol, es una realidad que entre todos se construye la calidad y no sólo del software sino de todo.
Interacciones cara a cara
El Manifiesto Ágil destaca la importancia de las interacciones cara a cara como una forma de fomentar la comunicación efectiva, la confianza y la colaboración entre los miembros del equipo. La comunicación no verbal, la capacidad de leer el lenguaje corporal y la posibilidad de tener conversaciones espontáneas son elementos esenciales para el éxito de un proyecto. Aquí debo detenerme un instante para reflexionar acerca de todos aquellos que trabajamos 100% online y que la única posibilidad de hacer un cara a cara es a través de pantallas y que a veces por una cuestión de conexión, debemos bajarla para lograr que se concrete la comunicación verbal. En muchas organizaciones se propone habilitar cámara en cada sesión justamente para poder lograr concretar la interacción tan necesaria con la resistencia de muchos por diversas razones que no vienen al caso ahora mencionar. Esta es una de las tantas situaciones que aún deben ser resueltas por muchos equipos para lograr ese equilibrio tan deseado.
Ejemplos en el contexto de Scrum:
Planificación conjunta: El equipo participa activamente en la planificación del proyecto, definiendo las tareas y objetivos de cada sprint.
Reuniones diarias: Las reuniones diarias de Scrum son un espacio para que los miembros del equipo se comuniquen, sincronicen su trabajo y resuelvan problemas juntos.
Sprint reviews: Las revisiones de sprint permiten al equipo mostrar su trabajo al cliente y recibir comentarios valiosos.
Retrospectivas: Las retrospectivas son un espacio para que el equipo reflexione sobre su trabajo, identifique áreas de mejora y planifique cambios para el futuro.
Mapa Mental: Individuos e Interacciones
¡Individuos e Interacciones!
- Procesos y herramientas:
- Son necesarios, pero no lo más importante.
- Deben estar al servicio de las personas.
- Procesos y herramientas:
- Son útiles para la organización y la planificación.
- Pero no deben sustituir el juicio y la experiencia de las personas.
- Los procesos y herramientas deben ser flexibles y adaptarse a las necesidades del proyecto.
- Personas:
- Son quienes completan los proyectos.
- Son el motor de los proyectos ágiles.
- La importancia de las personas:
- Las personas son el corazón de los proyectos ágiles.
- Su experiencia, conocimiento y creatividad son esenciales para el éxito.
- Los proyectos ágiles se basan en la confianza, la comunicación y la colaboración entre las personas.
- Interacciones cara a cara:
- Son fundamentales para la colaboración y el éxito.
- Interacciones cara a cara:
- Permiten una mejor comunicación y colaboración.
- Facilitan la construcción de relaciones y confianza.
- Son esenciales para la resolución de problemas y la toma de decisiones.
Ejemplo de testing ágil en un proyecto Scrum
Introducción
Te comparto el siguiente ejemplo muy a nivel macro, tratando de bajar tierra todos estos conceptos relacionados con las personas y sus interacciones, y su importancia dentro de un ciclo de desarrollo ágil bajo el marco de trabajo Scrum. El objetivo es construir un software para una agencia de turismo en 4 sprints, con las siguientes características:
- Funcionalidad: Permitir a la agencia promocionar sus paquetes turísticos en Buenos Aires, Tucumán, Mendoza y Chubut.
- Plataforma: Web responsive, adaptable a diferentes dispositivos.
- Calidad: Cumplir con normas de usabilidad y accesibilidad.
Equipo de proyecto
- Product Owner: Responsable de la gestión del backlog del producto y la priorización de las funcionalidades.
- Scrum Master: Facilita el proceso Scrum y asegura el cumplimiento de las prácticas ágiles.
- Desarrolladores: Implementan las funcionalidades del software.
- Tester: Responsable de las pruebas de software y la detección de errores.
Metodología
Se utilizará la metodología Scrum con sprints de 2 semanas. Cada sprint se divide en las siguientes fases:
- Planificación: Se seleccionan las funcionalidades a desarrollar en el sprint y se define el plan de trabajo.
- Desarrollo: Los desarrolladores implementan las funcionalidades del software.
- Pruebas: El tester realiza pruebas de software para detectar errores.
- Revisión: Se revisa el progreso del sprint y se realizan ajustes al plan de trabajo.
- Retrospectiva: Se reflexiona sobre el sprint y se buscan oportunidades de mejora.
Testing ágil
El testing ágil se integra a lo largo del ciclo de desarrollo, con las siguientes prácticas:
- Pruebas unitarias: Los desarrolladores realizan pruebas unitarias para verificar el funcionamiento de cada módulo del software.
- Pruebas de integración: Se realizan pruebas para verificar la correcta interacción entre los diferentes módulos del software.
- Pruebas de aceptación: El tester realiza pruebas para verificar que el software cumple con los requisitos del cliente.
- Pruebas de usabilidad: Se realizan pruebas con usuarios finales para evaluar la facilidad de uso del software.
- Pruebas de accesibilidad: Se realizan pruebas para asegurar que el software sea accesible para personas con discapacidades.
Herramientas
Se utilizarán las siguientes herramientas para el testing ágil:
- Herramienta de gestión de tickets: Para registrar y gestionar los errores encontrados.
- Herramienta de automatización de pruebas: Para automatizar la ejecución de pruebas repetitivas.
- Herramienta de pruebas de usabilidad: Para realizar pruebas con usuarios finales.
- Herramienta de pruebas de accesibilidad: Para verificar la accesibilidad del software.
La implementación del testing ágil en un proyecto Scrum permite asegurar la calidad del software de forma continua e incremental. Las pruebas se realizan a lo largo del ciclo de desarrollo, lo que permite detectar errores de forma temprana y corregirlos de manera eficiente.
En este caso concreto, el testing ágil será fundamental para:
- Asegurar que el software funciona correctamente en las diferentes provincias de Argentina.
- Garantizar que el software sea fácil de usar para los usuarios finales.
- Verificar que el software sea accesible para personas con discapacidades.
El equipo de proyecto debe trabajar en conjunto para asegurar la calidad del software. El product owner debe definir los requisitos del producto de forma clara y precisa. El scrum master debe facilitar el proceso Scrum y asegurar el cumplimiento de las prácticas ágiles. Los desarrolladores deben implementar las funcionalidades del software de forma eficiente y de alta calidad. El tester debe realizar las pruebas de software de forma exhaustiva y rigurosa.
La aplicación del testing ágil en este proyecto permitirá a la agencia de turismo contar con un software de calidad que le permitirá promocionar sus paquetes turísticos de manera efectiva.
Fuente de inspiración: PMI ACP Dominio 1