Posted by SCRUMstudy® on July 09, 2024
Categories: Agile Continuous Integration Iterative Development Product Development
En Agile Master Practices, los elementos clave giran en torno a fomentar un entorno colaborativo, adaptable y eficiente. El concepto de desarrollo iterativo es central para estas prácticas, donde el trabajo se divide en partes manejables llamadas sprints, lo que permite a los equipos ofrecer valor incremental y adaptarse a los cambios rápidamente. Los ciclos de retroalimentación regulares, facilitados a través de revisiones de sprints y retrospectivas, garantizan la mejora continua y la alineación con las necesidades de las partes interesadas. Agile enfatiza los equipos multifuncionales que trabajan juntos, promoviendo la transparencia y la comunicación a través de reuniones diarias y herramientas de gestión visual como los tableros de tareas. Al centrarse en brindar valor al cliente, responder al cambio y mantener un enfoque flexible, Agile Master Practices tiene como objetivo mejorar la productividad e impulsar resultados exitosos del proyecto.
Las prácticas ágiles de Scrum abarcan un conjunto de principios y metodologías destinadas a promover la flexibilidad, la colaboración y la mejora continua dentro de la gestión de proyectos. Las prácticas clave incluyen ciclos de desarrollo iterativos conocidos como sprints, que suelen durar de dos a cuatro semanas, durante los cuales los equipos entregan piezas incrementales de software funcional.
El “Contenido del examen PMI Agile Certified Practitioner” del Project Management Institute organiza las tareas que realizan los profesionales cuando trabajan en un entorno Agile en seis dominios. Su examen no evalúa específicamente los dominios, por lo que aprender su agrupación de herramientas y técnicas y conocimientos y habilidades no será directamente aplicable al lenguaje de la prueba. Sin embargo, esta forma organizativa de ver las herramientas y tareas Agile se ha realizado para ayudar a los profesionales a aprender y comprender mejor Agile.
Los seis dominios de Agile son:
Analicemos cada dominio con más detalle.
Entrega basada en valor
La creación de valor es el núcleo de cualquier proyecto, y los métodos ágiles están diseñados con el objetivo principal de entregar valor en un proyecto de trabajador del conocimiento. Si bien maximizan el valor, Agile también tiene herramientas y técnicas para minimizar los riesgos que pueden erosionar el valor. Los métodos ágiles también dan importancia a las prioridades del cliente y están diseñados para entregar elementos que tienen el mayor valor para el cliente primero.
Evaluación del valor:
Planificación del valor: creamos una carta que detalla el alcance, el objetivo y otros atributos del proyecto. Luego, usamos herramientas como la priorización valorada por el cliente, la priorización relativa y la cartera de pedidos ajustada al riesgo mientras preparamos la lista de prioridades. Para planificar el valor, también evaluamos los costos de contratación del proyecto.
Entrega de valor: después de planificar cómo vamos a entregar valor, nos enfocamos en eliminar todas las actividades que no agregan valor. Podemos usar tableros de tareas y Kanban para programar la cartera de pedidos. Limitar el trabajo en curso (WIP) reduce la posibilidad de reelaboración y permite que el proyecto avance sin problemas.
Confirmación de valor: hemos ejecutado tareas y creado valor, pero ¿es esto lo que quería el cliente? Tenemos que confirmar el valor que estamos entregando para saberlo. Demostramos prototipos, simulamos funcionalidades para ayudar al cliente a probar el producto y ver cómo funcionan.
Seguimiento y generación de informes de valor: no basta con entregar valor. Es importante que hagamos un seguimiento periódico de la tasa de entrega de valor para que se pueda comunicar a las partes interesadas de la empresa. Los diagramas de flujo acumulativos y los gráficos de evolución son una forma sencilla e informativa a través de la cual podemos evaluar el desarrollo del proyecto.
Participación de las partes interesadas
Las partes interesadas en un proyecto pueden ser cualquier persona que pueda tener un impacto negativo o positivo en el proyecto. Pueden ser representantes de la empresa, clientes, el director del proyecto, el equipo de desarrollo o proveedores externos que contribuyen directa o indirectamente al proyecto. La participación de las partes interesadas se vuelve importante, porque el desarrollo de software implica la creación de productos intangibles y el equipo debe tener una comprensión precisa de los requisitos del cliente.
Los proyectos ágiles están sujetos a cambios constantes, por lo que es esencial establecer un canal de comunicación claro y constante. Todas las partes interesadas deben participar en el proyecto para garantizar que se mantenga en el camino correcto. Los equipos pueden utilizar herramientas como wireframes, historias de usuario, un backlog de historias de usuario y personajes para verificar su comprensión de los requisitos del cliente.
La comunicación cara a cara es el método de comunicación más preferido en los proyectos ágiles. Proporcionan la máxima cantidad de información en la menor cantidad de tiempo. Los radiadores de información, como los diagramas de evolución, los diagramas de flujo acumulativo y los diagramas de seguimiento de velocidad, nos permiten determinar el progreso del proyecto, que se puede comunicar a todas las partes interesadas.
Las habilidades blandas desempeñan un papel importante a la hora de interactuar con las partes interesadas. Las habilidades blandas como la negociación y la escucha activa son necesarias al tratar con los clientes. También es esencial que estemos familiarizados con la implementación de habilidades blandas como los métodos de facilitación, los modelos de decisión participativos y la resolución de conflictos que se relacionan principalmente con la gestión de equipos.
Cuando hablamos de gestión de equipos, nuestras habilidades de liderazgo juegan un papel crucial. El liderazgo de servicio es una forma extremadamente eficaz de liderar equipos. Un líder servidor alienta al equipo a sobresalir eliminando cualquier obstáculo, motivando y recompensando el desempeño del equipo.
Impulsar el rendimiento del equipo
El tercer dominio de Agile se ocupa de impulsar las prácticas de rendimiento del equipo. En el desarrollo de software, los "factores humanos" son los que generan el mayor costo. Por lo tanto, es extremadamente importante que obtengamos el mayor rendimiento.
El proceso de formación de un equipo es uno de los determinantes del éxito de un proyecto. La formación de un equipo pasa por las etapas de formación (identificar a los miembros potenciales del equipo y reunirlos), tormenta (el equipo colabora y propone ideas), normalización (los equipos forman reglas y normalizan sus patrones de trabajo) y desempeño (el equipo trabaja en conjunto). Durante cada una de estas fases, es importante que un líder sepa cuándo desempeñar un papel de apoyo o de dirección. Por ejemplo, durante la fase de tormenta, los conflictos pueden ser frecuentes y el líder tendrá que intervenir para ayudar a los miembros del equipo a desarrollar metodologías para resolverlos.
Para obtener lo mejor de un equipo, este debe ser autoorganizado y autodirigido. Permitir que los equipos se organicen y dirijan por sí mismos permite que los miembros del equipo gestionen tareas complejas por sí solos y descubran la mejor manera de completarlas. Esto aprovecha la experiencia y el talento combinados del equipo.
Existen varias actividades que pueden ayudar a un equipo a mejorar su desempeño en proyectos ágiles. Las reuniones diarias son una forma rápida de comunicar el estado de desempeño del equipo e identificar problemas actuales y potenciales. Para superar los problemas y mejorar continuamente, es posible que los equipos deban recibir orientación en diferentes etapas. Durante eventos como reuniones de planificación de iteraciones o retrospectivas, es posible que sea necesario capacitar a los equipos a nivel grupal y se puede brindar orientación a los miembros individuales del equipo cuando la iteración esté en marcha.
Los equipos pueden utilizar sesiones de lluvia de ideas para resolver problemas, mejorar e innovar procesos. Debido a que la comunicación cara a cara es la forma ideal de comunicarse en proyectos ágiles, es importante que el equipo esté ubicado en un área común con espacio para pizarras y otros radiadores de información.
Planificación adaptativa
Dado que una planificación exhaustiva antes de emprender un proyecto puede resultar engorrosa y, a menudo, no aporta ningún valor real, Agile exige un enfoque adaptativo de la planificación. La planificación adaptativa implica la creación de un plan básico y su actualización a medida que avanza el proyecto. La planificación adaptativa requiere que los profesionales mantengan una estrecha colaboración con el cliente para comprender sus requisitos con mayor precisión. Se pueden utilizar juegos colaborativos como recordar el futuro, podar el árbol de productos, comprar una característica y aprovechar al máximo la inversión para ayudar al equipo de desarrollo a comprender mejor los requisitos del cliente.
Para realizar entregas puntuales, los miembros del equipo deben calcular sus estimaciones con la mayor precisión posible, teniendo en cuenta todas las desviaciones y limitaciones. Wideband Delphi e Ideal Time son algunas de las técnicas que pueden ayudar a los equipos a llegar a una estimación precisa. Al estimar el coste del proyecto, las cifras deben presentarse en rangos, ya que parecen más creíbles que las cifras precisas que pueden dar un aire de falsa confianza.
La planificación de iteraciones y lanzamientos es una parte vital de la planificación adaptativa. Los lanzamientos son paquetes de funcionalidades que se pueden entregar a un cliente. Al planificar un lanzamiento, el propietario/gerente del producto, el equipo de desarrollo y el experto en Agile pueden usar un diagrama de velocidad para determinar cuántas características puede completar el equipo en un tiempo determinado. Al planificar iteraciones, es importante tener una lista de prioridades fija al comienzo de la sesión de planificación. Los miembros del equipo tienen la última palabra sobre cuánto trabajo se puede completar, mientras que el propietario del producto tiene la última palabra sobre la prioridad de los elementos incluidos para la iteración. La disponibilidad de los miembros del equipo debe tenerse en cuenta al planificar las iteraciones.
Detección y resolución de problemas
Un dicho común es “Más vale prevenir que curar” y no podría ser más apropiado para explicar cómo los métodos ágiles abordan los problemas. Si se ignoran, los problemas pueden tener un efecto devastador en el proyecto, ya que no solo aumentan la carga de trabajo, sino que hacen que el equipo se retrase en sus planes. Es un doble golpe para el equipo cuando esto sucede, ya que requiere el doble de recursos. Las prácticas ágiles ayudan a detectar problemas lo antes posible y a solucionarlos mientras aún son pequeños.
Detectar problemas es el primer paso para resolverlos. Las reuniones diarias son una excelente manera de identificar cualquier problema que los miembros del equipo estén enfrentando. Los equipos también pueden realizar un seguimiento de los problemas calculando los tiempos de ciclo de las tareas. Si el tiempo de ciclo es demasiado alto, podría indicar un problema potencial o que el equipo ha realizado más trabajo del que puede completar. Limitar el trabajo en progreso puede ayudar a monitorear mejor el cronograma del proyecto y realizar un seguimiento de los problemas más fácilmente. A pesar de nuestros mejores esfuerzos, algunos defectos pueden abrirse camino hasta el producto final. Los defectos que se escapan son los más costosos de solucionar. Los equipos pueden rastrear los defectos que se han escapado en un gráfico para analizar las tendencias. Esto puede ayudar a refinar los procesos de control de calidad.
Alistair Cockburn describe los “modos de falla y alternativas”, que están relacionados con el aspecto humano del desempeño. Cockburn dice que las personas fallan porque pueden ser inconsistentes al seguir una técnica, son criaturas de hábitos y prefieren inventar nuevas formas en lugar de modificar los métodos confiables existentes. Para contrarrestar los “modos de falla”, Cockburn recomienda que los equipos inculquen disciplina, reciban retroalimentación regularmente y asignen trabajo en función de las personalidades de los miembros individuales del equipo.
El siguiente paso es resolver los problemas que se identifican. La integración continua de código nuevo, a medida que se desarrolla, en un repositorio puede ayudar a superar los problemas que encontramos con la integración. Validar el progreso a intervalos frecuentes y en diferentes niveles puede ayudarnos a estar seguros de que nuestro trabajo está libre de errores.
En el desarrollo de software, las técnicas más utilizadas son el desarrollo impulsado por pruebas (TDD) y el desarrollo impulsado por pruebas de aceptación (ATDD). Estos métodos implican principalmente escribir las pruebas antes de escribir cualquier código. Los códigos se escriben hasta que pasan las pruebas. Los códigos pueden ser “refactorizados” si es necesario, lo que implica refinar el diseño sin alterar su comportamiento.
Mejora continua
Los nuevos conocimientos y aprendizajes obtenidos en un proyecto tradicional se suelen reunir al final del ciclo del proyecto. Estos conocimientos pueden no ser de mucha ayuda en el próximo proyecto a menos que los dos sean muy similares. Ese aprendizaje podría haber sido más valioso si se hubiera utilizado en el proyecto en el que se aprendió. La metodología ágil busca mejorar continuamente a lo largo del proyecto y fomentar la aplicación de lecciones al proceso de desarrollo a medida que las aprendemos. Las retrospectivas al final de cada iteración hacen que las lecciones aprendidas estén disponibles para la siguiente iteración.
Una retrospectiva suele durar unas dos horas, durante las cuales el equipo reúne datos sobre los diferentes desafíos a los que se enfrentó y las diversas lecciones aprendidas al resolverlos. El aprendizaje se analiza para ver si existen patrones subyacentes o algún conocimiento. Armado con estos patrones y conocimientos, el equipo planifica la siguiente iteración.
Como parte de la mejora continua, se debe alentar a los miembros del equipo a compartir el conocimiento que adquieren con otros miembros del equipo. Una de las razones por las que se hace hincapié en la coubicación en los proyectos ágiles es porque proporciona una plataforma para compartir conocimientos a través de la comunicación cara a cara. Para fomentar el intercambio de conocimientos, se puede hacer un seguimiento de la velocidad del equipo a nivel de equipo en lugar de medirla a nivel individual, de modo que los miembros del equipo estén motivados para ayudarse entre sí.
Es posible que se nos pida que adaptemos las prácticas ágiles a nuestras necesidades; sin embargo, hay que tener cuidado al hacerlo. Las prácticas ágiles se han creado en una delicada red de prácticas interdependientes y alterar una puede afectar a otras prácticas. Debemos ser expertos en el uso de prácticas ágiles antes de realizar modificaciones. A veces puede resultar tentador culpar a las herramientas si nuestro trabajo no va como corresponde, cuando el problema real está en nosotros. Debemos examinar cuidadosamente nuestros motivos para cambiar las prácticas antes de realizar cualquier modificación.
Posted by SCRUMstudy® on June 24, 2024
Categories: Agile Continuous Integration Iterative Development Product Development
Agile Master Practices encapsulate principles and methodologies essential for effective Agile project management. These practices encompass a dynamic approach to project execution, emphasizing collaboration, adaptability, and continuous improvement. Key practices include fostering open communication within cross-functional teams, promoting iterative development cycles, and embracing change as a catalyst for innovation. Additionally, Agile Master Practices advocate for transparent decision-making processes, empowering teams to self-organize and take ownership of project outcomes.
Scrum agile practices encompass a set of principles and methodologies aimed at promoting flexibility, collaboration, and continuous improvement within project management. Key practices include iterative development cycles known as sprints, typically lasting two to four weeks, during which teams deliver incremental pieces of working software.
Project Management Institute’s “PMI Agile Certified Practitioner Exam Content Outline” organizes the tasks practitioners do when working in Agile environment into six domains. Their exam does not test specifically on the domains, so learning their grouping of tools and techniques and knowledge and skills will not be directly applicable to the language of the test. However, this organizational way of looking at Agile tools and tasks has been done to help practitioners learn and understand Agile better.
The six domains of Agile are:
Let’s discuss each domain in more detail.
Value-driven delivery
Creating value is at the core of any project, and Agile methods are designed with the core objective of delivering value on a knowledge worker project. While maximizing value, Agile also has tools and techniques to minimize risks that can erode value. Agile methods also place importance on the customer’s priorities and is designed to deliver elements that have the highest value to the customer first.
Assessing value –.
Planning value – We create a charter detailing the scope, objective, and other attributes of the project. We then use tools such as customer-valued prioritization, relative prioritization, and risk adjusted backlog while preparing the priority list. Which planning value, we also assess the contracting costs of the project.
Delivering value – After planning how we are going to deliver value, we focus on eliminating all activities that do not add value. We can use task and Kanban boards to schedule the backlog. Limiting the Work in Progress (WIP) reduces the potential for reworking and keeps the project going smoothly.
Confirming value – We have executed tasks and created value but is this what the customer wanted? We have to confirm the value we are delivering to know this. We demonstrate prototypes, simulate functionalities to help the customer test the product and see how they work.
Tracking and reporting value – It is not enough that we just deliver value. It is important that we regularly track the rate of delivery of value so that it can be communicated to business stakeholders. Cumulative flow diagrams and burn down graphs are an easy and informative way through which we can assess the development of the project.
Stakeholder engagement
Stakeholders in a project can be anybody who can negatively or positively impact a project. They can be business representatives, customers, the project manager, the development team, or external vendors contributing directly or indirectly to the project. Stakeholder engagement becomes important, because software development involves creating intangible products and the team must have a precise understanding of customer requirements.
Agile projects are subject to constant change which makes it essential that a clear and steady channel of communication is established. All stakeholders must be involved in the project to ensure that it stays on the right track. Teams can use tools such as wireframes, user stories, a user story backlog, and personas to verify their understanding of customer requirements.
Face-to-face communication is the most preferred method of communication on agile projects. They provide the maximum amount of information in the least amount of time. Information radiators such as burn down charts, cumulative flow diagrams, and velocity tracking charts allow us to determine progress of the project, which can be communicated to all the stakeholders.
Soft skills play an important role while engaging with stakeholders. Soft skills such as negotiating and active listening are necessary while dealing with customers. It is also essential that we be familiar with implementing soft skills such as facilitation methods, participatory decision models, and conflict resolution that are primarily concerned with managing teams.
When we talk of managing teams, our leadership skills play a crucial role. Servant leadership is an extremely effective way of leading teams. A servant leader encourages the team to excel by removing any obstacles, motivate and reward the team’s performance.
Boosting team performance
The third domain in Agile deals with boosting team performance practices. In software development, “people factors” incur the highest cost. Therefore, it is extremely important that we obtain the highest return on performance.
The process of forming a team is one of the determinants of success on a project. Building a team goes through the stages of forming (identifying potential team members and bringing them together), storming (the team collaborates and comes up with ideas), norming (teams form rules and normalize their working patterns), and performing (the team works together). During each of these phases, it is important for a leader to know when to play a supporting or directing role. For example, during the storming phase, conflicts can be frequent and the leader will have to step in to help the team members develop methodologies to resolve them.
To get the best out of a team, it should be self-organizing and self-directing. Allowing teams to be self-organizing and self-directing enables team members to manage complex tasks by themselves and figure out the best way to complete the tasks. This capitalizes on the team’s combined expertise and talent.
There are several activities that can help a team boost their performance on Agile projects. Daily stand-up meetings are a quick way to communicate the team’s performance status and identify present and potential issues. To overcome issues and improve continuously, teams might need to be mentored at different stages. During events such as iteration planning meetings or retrospectives, teams might need to be coached at a group level and mentoring can be provided for individual team members when the iteration is underway.
Brainstorming sessions can be used by teams to resolve issues, improve, and innovate processes. Because face-to-face communication is the ideal way to communicate on Agile projects, it is important that the team be located in a common area with space for whiteboards and other information radiators.
Adaptive Planning
Because extensive planning before the project is undertaken can be cumbersome and often does not add any real value, Agile calls for an adaptive approach to planning. Adaptive planning involves creating a basic plan and updating it as the project gets underway. Adaptive planning requires practitioners to maintain close collaboration with the customer to understand his or her requirements more accurately. Collaborative games such as remember the future, prune the product tree, buy a feature, and bang-for-the-buck can be used to help the development team understand customer requirements better.
To make timely deliveries, team members should calculate their estimates as accurately as possible factoring in all diversions and constraints. Wideband Delphi and Ideal Time are some of the techniques which can help teams arrive at an accurate estimate. While estimating the cost of the project, the figures should be presented in ranges as they seem more credible than pin-point figures that can have an air of false confidence.
Iteration and release planning is a vital part of adaptive planning. Releases are bundles of functionality that can be delivered to a customer. While planning a release, the Product Owner/manager, development team, and Agile Expert can use a velocity chart to determine how many features can be completed by the team in a given time. While planning iterations, it important to have a fixed priority list at the beginning of the planning session. Team members have the final say on how much work can be completed, while the product owner gets the final say on the priority of the items included for the iteration. Availability of team members needs to be factored in while planning iterations.
Problem Detection and Resolution
A common saying is, “A stitch in time saves nine,” and this couldn’t be more apt to explain how Agile methods deal with problems. If ignored, problems can have a devastating effect on the project as they not only increase the burden of rework; they make the team fall behind in its plans. It is a double whammy for the team when this happens as it takes twice the resources. Agile practices aids in detecting problems as early as possible and fixing them while they are still small.
Detecting problems is the first step to resolving them. Daily stand-up meetings are an excellent way to identify any issues that team members are facing. Teams can also track issues by calculating cycle times for tasks. If the cycle time is too high, it might indicate a potential problem or that the team has undertaken more work than it can complete. Limiting work in progress can help monitor the project timeline better and track problems more easily. Despite our best efforts, some defects may make their way through to the final product. Escaped defects are the most expensive to fix. Teams can track escaped defects on a graph to analyze trends. This can help refine quality control processes.
Alistair Cockburn describes “failure modes and alternatives,” that are related to the human aspect of performance. Cockburn says that people fail because they can be inconsistent at following a technique, are creatures of habit and prefer to invent new ways than modify existing reliable methods. To counter “failure modes” Cockburn advises that teams should inculcate discipline, receive feedback regularly, and assign work based on personalities of individual team members.
Resolving issues that are identified is the next step. Continuous integration of new code, as and when it is developed, in a repository can help overcome the issues that we find with integration. Validating progress at frequent intervals and at different levels can help us be confident that our work is error-free.
In software development, commonly used techniques are Test-Driven Development (TDD) and Acceptance Test-Driven Development (ATDD). These methods primarily involve writing the tests before any code is written. The codes are written until they pass the tests. Codes might then be “refactored” if necessary, which involves refining the design without altering its behavior.
Continuous Improvement
New insights and learning gained on a traditional project is typically gathered at the end of the project cycle. These insights might not be of much help on the next project unless the two are very similar. That learning could have had more value, if it had been used on the project in which it was learned. Agile methodology seeks to continuously improve throughout the project and encourage applying lessons to the development process as and when we learn it. Retrospectives at the end of each iteration makes the lessons learned available for the very next iteration.
A retrospective typically lasts for about two hours during which time the team gathers data about the different challenges that it faced and the various lessons learned while solving them. The learning is analyzed to see if there exists underlying patterns or any insights. Armed with these patterns and insights, the team plans the next iteration.
As part of continuous improvement, team members should be encouraged to share knowledge they acquire, with other team members. One of the reasons colocation is stressed in Agile projects is because it provides a platform for knowledge sharing through face-to-face communication. To encourage knowledge sharing, team velocity can be tracked at a team level rather than measuring it at an individual level, so that team members are motivated to help each other.
We might be required to tailor agile practices to suit our needs; however, one must careful while doing so. Agile practices have been crafted into a delicate web of interdependent practices and disturbing one can affect other practices. We should be adept at using agile practices before we make any modifications. It might be tempting at times to blame the tools if our work is not going accordingly when the real problem lies in us. We should carefully examine our motives to change practices before we make any alterations.
Posted by SCRUMstudy® on April 24, 2024
Categories: Agile Continuous Integration Iterative Development Product Development
In Agile Master Practices, key elements revolve around fostering a collaborative, adaptive, and efficient environment. Central to these practices is the concept of iterative development, where work is divided into manageable chunks called sprints, allowing teams to deliver incremental value and adapt to changes swiftly. Regular feedback loops, facilitated through sprint reviews and retrospectives, ensure continuous improvement and alignment with stakeholder needs. Agile emphasizes cross-functional teams working together, promoting transparency and communication through daily stand-ups and visual management tools like task boards. By focusing on delivering customer value, responding to change, and maintaining a flexible approach, Agile Master Practices aim to enhance productivity and drive successful project outcomes.
Scrum agile practices encompass a set of principles and methodologies aimed at promoting flexibility, collaboration, and continuous improvement within project management. Key practices include iterative development cycles known as sprints, typically lasting two to four weeks, during which teams deliver incremental pieces of working software.
Project Management Institute’s “PMI Agile Certified Practitioner Exam Content Outline” organizes the tasks practitioners do when working in Agile environment into six domains. Their exam does not test specifically on the domains, so learning their grouping of tools and techniques and knowledge and skills will not be directly applicable to the language of the test. However, this organizational way of looking at Agile tools and tasks has been done to help practitioners learn and understand Agile better.
The six domains of Agile are:
Let’s discuss each domain in more detail.
Value-driven delivery
Creating value is at the core of any project, and Agile methods are designed with the core objective of delivering value on a knowledge worker project. While maximizing value, Agile also has tools and techniques to minimize risks that can erode value. Agile methods also place importance on the customer’s priorities and is designed to deliver elements that have the highest value to the customer first.
Assessing value –.
Planning value – We create a charter detailing the scope, objective, and other attributes of the project. We then use tools such as customer-valued prioritization, relative prioritization, and risk adjusted backlog while preparing the priority list. Which planning value, we also assess the contracting costs of the project.
Delivering value – After planning how we are going to deliver value, we focus on eliminating all activities that do not add value. We can use task and Kanban boards to schedule the backlog. Limiting the Work in Progress (WIP) reduces the potential for reworking and keeps the project going smoothly.
Confirming value – We have executed tasks and created value but is this what the customer wanted? We have to confirm the value we are delivering to know this. We demonstrate prototypes, simulate functionalities to help the customer test the product and see how they work.
Tracking and reporting value – It is not enough that we just deliver value. It is important that we regularly track the rate of delivery of value so that it can be communicated to business stakeholders. Cumulative flow diagrams and burn down graphs are an easy and informative way through which we can assess the development of the project.
Stakeholder engagement
Stakeholders in a project can be anybody who can negatively or positively impact a project. They can be business representatives, customers, the project manager, the development team, or external vendors contributing directly or indirectly to the project. Stakeholder engagement becomes important, because software development involves creating intangible products and the team must have a precise understanding of customer requirements.
Agile projects are subject to constant change which makes it essential that a clear and steady channel of communication is established. All stakeholders must be involved in the project to ensure that it stays on the right track. Teams can use tools such as wireframes, user stories, a user story backlog, and personas to verify their understanding of customer requirements.
Face-to-face communication is the most preferred method of communication on agile projects. They provide the maximum amount of information in the least amount of time. Information radiators such as burn down charts, cumulative flow diagrams, and velocity tracking charts allow us to determine progress of the project, which can be communicated to all the stakeholders.
Soft skills play an important role while engaging with stakeholders. Soft skills such as negotiating and active listening are necessary while dealing with customers. It is also essential that we be familiar with implementing soft skills such as facilitation methods, participatory decision models, and conflict resolution that are primarily concerned with managing teams.
When we talk of managing teams, our leadership skills play a crucial role. Servant leadership is an extremely effective way of leading teams. A servant leader encourages the team to excel by removing any obstacles, motivate and reward the team’s performance.
Boosting team performance
The third domain in Agile deals with boosting team performance practices. In software development, “people factors” incur the highest cost. Therefore, it is extremely important that we obtain the highest return on performance.
The process of forming a team is one of the determinants of success on a project. Building a team goes through the stages of forming (identifying potential team members and bringing them together), storming (the team collaborates and comes up with ideas), norming (teams form rules and normalize their working patterns), and performing (the team works together). During each of these phases, it is important for a leader to know when to play a supporting or directing role. For example, during the storming phase, conflicts can be frequent and the leader will have to step in to help the team members develop methodologies to resolve them.
To get the best out of a team, it should be self-organizing and self-directing. Allowing teams to be self-organizing and self-directing enables team members to manage complex tasks by themselves and figure out the best way to complete the tasks. This capitalizes on the team’s combined expertise and talent.
There are several activities that can help a team boost their performance on Agile projects. Daily stand-up meetings are a quick way to communicate the team’s performance status and identify present and potential issues. To overcome issues and improve continuously, teams might need to be mentored at different stages. During events such as iteration planning meetings or retrospectives, teams might need to be coached at a group level and mentoring can be provided for individual team members when the iteration is underway.
Brainstorming sessions can be used by teams to resolve issues, improve, and innovate processes. Because face-to-face communication is the ideal way to communicate on Agile projects, it is important that the team be located in a common area with space for whiteboards and other information radiators.
Adaptive Planning
Because extensive planning before the project is undertaken can be cumbersome and often does not add any real value, Agile calls for an adaptive approach to planning. Adaptive planning involves creating a basic plan and updating it as the project gets underway. Adaptive planning requires practitioners to maintain close collaboration with the customer to understand his or her requirements more accurately. Collaborative games such as remember the future, prune the product tree, buy a feature, and bang-for-the-buck can be used to help the development team understand customer requirements better.
To make timely deliveries, team members should calculate their estimates as accurately as possible factoring in all diversions and constraints. Wideband Delphi and Ideal Time are some of the techniques which can help teams arrive at an accurate estimate. While estimating the cost of the project, the figures should be presented in ranges as they seem more credible than pin-point figures that can have an air of false confidence.
Iteration and release planning is a vital part of adaptive planning. Releases are bundles of functionality that can be delivered to a customer. While planning a release, the Product Owner/manager, development team, and Agile Expert can use a velocity chart to determine how many features can be completed by the team in a given time. While planning iterations, it important to have a fixed priority list at the beginning of the planning session. Team members have the final say on how much work can be completed, while the product owner gets the final say on the priority of the items included for the iteration. Availability of team members needs to be factored in while planning iterations.
Problem Detection and Resolution
A common saying is, “A stitch in time saves nine,” and this couldn’t be more apt to explain how Agile methods deal with problems. If ignored, problems can have a devastating effect on the project as they not only increase the burden of rework; they make the team fall behind in its plans. It is a double whammy for the team when this happens as it takes twice the resources. Agile practices aids in detecting problems as early as possible and fixing them while they are still small.
Detecting problems is the first step to resolving them. Daily stand-up meetings are an excellent way to identify any issues that team members are facing. Teams can also track issues by calculating cycle times for tasks. If the cycle time is too high, it might indicate a potential problem or that the team has undertaken more work than it can complete. Limiting work in progress can help monitor the project timeline better and track problems more easily. Despite our best efforts, some defects may make their way through to the final product. Escaped defects are the most expensive to fix. Teams can track escaped defects on a graph to analyze trends. This can help refine quality control processes.
Alistair Cockburn describes “failure modes and alternatives,” that are related to the human aspect of performance. Cockburn says that people fail because they can be inconsistent at following a technique, are creatures of habit and prefer to invent new ways than modify existing reliable methods. To counter “failure modes” Cockburn advises that teams should inculcate discipline, receive feedback regularly, and assign work based on personalities of individual team members.
Resolving issues that are identified is the next step. Continuous integration of new code, as and when it is developed, in a repository can help overcome the issues that we find with integration. Validating progress at frequent intervals and at different levels can help us be confident that our work is error-free.
In software development, commonly used techniques are Test-Driven Development (TDD) and Acceptance Test-Driven Development (ATDD). These methods primarily involve writing the tests before any code is written. The codes are written until they pass the tests. Codes might then be “refactored” if necessary, which involves refining the design without altering its behavior.
Continuous Improvement
New insights and learning gained on a traditional project is typically gathered at the end of the project cycle. These insights might not be of much help on the next project unless the two are very similar. That learning could have had more value, if it had been used on the project in which it was learned. Agile methodology seeks to continuously improve throughout the project and encourage applying lessons to the development process as and when we learn it. Retrospectives at the end of each iteration makes the lessons learned available for the very next iteration.
A retrospective typically lasts for about two hours during which time the team gathers data about the different challenges that it faced and the various lessons learned while solving them. The learning is analyzed to see if there exists underlying patterns or any insights. Armed with these patterns and insights, the team plans the next iteration.
As part of continuous improvement, team members should be encouraged to share knowledge they acquire, with other team members. One of the reasons colocation is stressed in Agile projects is because it provides a platform for knowledge sharing through face-to-face communication. To encourage knowledge sharing, team velocity can be tracked at a team level rather than measuring it at an individual level, so that team members are motivated to help each other.
We might be required to tailor agile practices to suit our needs; however, one must careful while doing so. Agile practices have been crafted into a delicate web of interdependent practices and disturbing one can affect other practices. We should be adept at using agile practices before we make any modifications. It might be tempting at times to blame the tools if our work is not going accordingly when the real problem lies in us. We should carefully examine our motives to change practices before we make any alterations.