Agile methodologies are a set of iterative and incremental approaches to software development that prioritize collaboration, flexibility, and rapid response to change.
NOTE: WIP document subject to changes.
Agile 101 - DFG:Upgrades (migrations, adoption, and backup and recovery)
Some benefits include:
Increased flexibility: Agile methodologies enable teams to respond quickly to changes in requirements, timelines, or resources. Teams can adjust their approach based on feedback from stakeholders or changes in the market.
Better collaboration: Agile methodologies emphasize communication and collaboration between team members, stakeholders, and customers. This leads to better alignment and understanding of project goals and expectations.
Improved quality: Agile methodologies prioritize continuous testing and feedback, leading to higher-quality software products.
Faster time-to-market: Agile methodologies help teams deliver software products faster and more frequently. This enables teams to respond quickly to changing market conditions and customer needs.
Increased customer satisfaction: By prioritizing collaboration, feedback, and responsiveness, agile methodologies help teams deliver products that better meet customer needs and expectations.
Also, Agile methodologies improve team performance and vision by promoting:
Transparency: Agile methodologies encourage teams to be transparent about their progress, challenges, and goals. This helps teams stay aligned and focused on the most important priorities.
Continuous improvement: Agile methodologies encourage teams to reflect on their processes and outcomes and make changes based on feedback. This helps teams continually improve and innovate.
Empowerment: Agile methodologies empower team members to take ownership of their work, make decisions, and collaborate with others. This leads to higher levels of engagement, creativity, and job satisfaction.
Agile methodologies are a powerful approach to software development that promote collaboration, flexibility, and continuous improvement. They can help teams deliver higher-quality software products faster, while also increasing customer satisfaction and team morale.
The Agile Manifesto outlines four core values that underpin all agile methodologies:
Individuals and interactions over processes and tools: This value emphasizes the importance of people and collaboration in the software development process. Agile methodologies prioritize face-to-face communication, feedback, and collaboration among team members and stakeholders over following rigid processes or relying on tools.
Working software over comprehensive documentation: This value prioritizes delivering working software over spending time and resources on extensive documentation. Agile methodologies emphasize the importance of frequent releases and testing to ensure that software is functional and meets user needs.
Customer collaboration over contract negotiation: This value emphasizes the importance of working closely with customers and stakeholders throughout the software development process. Agile methodologies prioritize customer feedback and input to ensure that the final product meets their needs and expectations.
Responding to change over following a plan: This value recognizes that the software development process is inherently unpredictable and that plans may need to change. Agile methodologies prioritize flexibility and the ability to respond quickly to changes in requirements, timelines, or resources.
These core values guide the behavior and decision-making of agile teams and help them deliver high-quality software products that meet customer needs and expectations.
Customer satisfaction: Delivering value to the customer is the highest priority.
Changing requirements: Agile processes are flexible and can adapt to changing requirements, even in the later stages of development.
Delivering frequently: Frequent delivery of working software builds trust, encourages feedback, and enables the customer to realize benefits earlier.
Collaboration: Agile processes emphasize collaboration between customers, developers, and stakeholders to ensure the best outcome.
Motivated individuals: Teams should be composed of self-motivated individuals who are empowered to make decisions and work collaboratively.
Face-to-face communication: Communication is key, and face-to-face communication is the most effective way to convey information.
Working software: Working software is the primary measure of progress.
Sustainable development: Agile processes promote sustainable development, with a focus on maintaining a steady pace and avoiding burnout.
Technical excellence: A strong focus on technical excellence is necessary to maintain quality and enable agility.
Simplicity: Simplicity is a key aspect of agile development, with a focus on delivering the simplest possible solution that meets customer needs.
Self-organizing teams: Teams should be self-organizing, with the ability to adapt to changing requirements and make decisions.
Reflection and adaptation: Agile processes promote reflection and adaptation, with a focus on continuous improvement and learning from experience.
The main roles in agile are:
Product Owner: The product owner is responsible for defining and prioritizing the features of the product or service being developed. They are the primary point of contact for the development team and are responsible for communicating the vision and goals of the product to the team.
Scrum Master: The scrum master is responsible for ensuring that the development team follows the agile process and for facilitating communication and collaboration within the team. They help remove obstacles and ensure that the team is working efficiently and effectively.
Development Team: The development team is responsible for designing, developing, testing, and delivering the product or service being developed. They work together to complete the tasks necessary to meet the project goals.
Stakeholders: Stakeholders are individuals or groups with an interest in the project, such as customers, users, or managers. They provide feedback and input to the product owner and development team to ensure that the product meets their needs and expectations.
Agile Coach: An agile coach is a mentor who helps teams adopt and implement agile methodologies. They provide guidance and support to the team and help them identify areas for improvement.
Business Analyst: A business analyst is responsible for understanding and documenting the requirements of the product or service being developed. They work closely with the product owner to ensure that the development team understands the project goals and requirements.
Quality Assurance (QA) Engineer: A QA engineer is responsible for testing the product or service to ensure that it meets quality standards and user requirements. They work closely with the development team to identify and resolve defects.
The specific roles and responsibilities may vary depending on the particular agile methodology being used and the needs of the project.
The six key components that make up the Agile methodology:
User Stories: User stories are brief, non-technical descriptions of a feature or requirement from the user’s perspective. They are used to capture user requirements and help the development team understand what the user wants.
Backlog: The product backlog is a prioritized list of user stories or features that need to be developed. It is managed by the product owner and is used to guide the development team’s work.
Sprints: Sprints are short, time-boxed iterations in which the development team works to deliver a set of features or user stories. Sprints typically last 1-4 weeks, and at the end of each sprint, the team delivers a potentially shippable product increment.
Daily Stand-ups: Daily stand-ups are brief, daily meetings in which the development team discusses progress, identifies obstacles, and plans the day’s work. They are intended to keep the team informed and ensure that everyone is working towards the same goals.
Sprint Review: The sprint review is a meeting held at the end of each sprint to demonstrate the work that has been completed to the stakeholders. It is an opportunity for the team to get feedback on the product and make any necessary adjustments.
Sprint Retrospective: The sprint retrospective is a meeting held at the end of each sprint to review the team’s process and identify areas for improvement. The team reflects on what went well and what didn’t, and then makes adjustments for the next sprint.
These six components work together to guide the agile process, from capturing user requirements through to delivering a high-quality product increment at the end of each sprint.
While there are different variations of the Agile methodology, most include the following phases:
Project Initiation: In this phase, the team identifies the scope of the project, the stakeholders involved, and the objectives and goals of the project. The team also establishes the project’s vision and creates a product roadmap to guide the development process.
Planning and Requirements Analysis: In this phase, the team identifies the user requirements and translates them into user stories or features. The product backlog is created and prioritized based on customer needs and business objectives. The team also creates a project plan, which outlines the timeline, resources, and budget required to complete the project.
Design and Prototyping: In this phase, the team designs the architecture of the system and creates a prototype of the product. The design and prototype are reviewed and tested to ensure they meet the user requirements and project goals.
Development and Iterations: In this phase, the team begins to develop the product incrementally through a series of iterations or sprints. Each iteration typically lasts 1-4 weeks and results in a working product increment. The team conducts regular sprint reviews and retrospectives to evaluate progress and identify areas for improvement.
Testing: In this phase, the team tests the product to ensure that it meets the user requirements and quality standards. Testing is conducted throughout the development process and includes unit testing, integration testing, and acceptance testing.
Deployment and Maintenance: In this phase, the team deploys the product to the production environment and provides ongoing maintenance and support. The team continues to refine the product based on user feedback and implements updates and improvements as necessary.
It’s important to note that Agile methodology is iterative and flexible, and these phases are not necessarily sequential. The team can move back and forth between phases as needed to respond to changes and adjust the product as it evolves.
Delivery Focused Group (DFG) internal mechanics
A delivery focused group is responsible end-to-end for the delivery of the stories (includes improvements that can’t be characterized as features, delivering new upstream releases, bug fixing, errata, test coverage improvements, working with support and the field, etc…) in its functional scope. The group is cross-functional, regrouping product managers, engineers and quality engineers to achieve the delivery.
Groups will cross organizational boundaries, but also technology component boundaries. For example a group in charge of developing a feature will also take care of the installation, update and upgrade of this feature using the framework provided by the deployment tooling group. The group is responsible for the product implementation: its members determine the technical solution in their area of concern. They are maintaining one backlog for each group. The delivery focused groups should be small (5 to 9), and our goal is to aim to self-organisation. You can only be on one team at a time.
Organization of the DFG:Upgrades (squads)
The DFG:Upgrades provides and maintain a framework for migrating, updating or upgrading from an earlier version of Red Hat OpenStack (OSP) version to an equal or later version.
There are three squads in this DFG, each of them with an specific core mission.
|Updates||Upgrades||Migrations, adoption, and backup and recovery|
|…||…||OpenStack migration tooling (OS migrate)|
|…||…||Next-gen adoption framework|
|…||…||Backup and recovery strategies for updates and upgrades|
Agile tooling for the squad
Main Jira plan
A Jira plan is a high-level view of a project’s roadmap, timelines, and milestones. It is a visual representation of the project plan that allows teams to see the big picture and understand how different tasks and issues fit together. Jira plans can include details such as start and end dates, priorities, dependencies, and progress indicators. They are often used to communicate project status and progress to stakeholders, and can help teams stay aligned and focused on project goals. Jira plans can be created and managed within the Jira software, and are often used in conjunction with other Jira tools such as boards and dashboards. It allows:
Resource allocation: Jira Plan allows teams to allocate resources effectively by identifying tasks and assigning them to specific team members.
Time management: Jira Plan helps teams manage their time more efficiently by setting deadlines and prioritizing tasks.
Budgeting: Jira Plan can be used to monitor project budgets and ensure that resources are being used effectively.
In particular the above image shows the Jira plan for OSP, including a time-based view of the roadmap, timelines, and milestones.
Main Jira board
A Jira board is a visual representation of a team’s work that allows team members to track and manage their tasks and issues in real-time. Jira boards can be customized to reflect a team’s unique workflow and can include different views, such as a Kanban board or a Scrum board.
In a Kanban board, tasks are represented as cards that move across different columns that reflect different stages of the workflow, such as “To Do,” “In Progress,” and “Done.” The columns can be customized to match the team’s specific workflow, and team members can easily see the status of each task and identify any bottlenecks or areas for improvement.
In a Scrum board, tasks are represented as cards that are grouped into sprints, which are typically two-week time periods in which the team works to complete specific goals. The Scrum board includes columns for the different stages of the sprint, such as “To Do,” “In Progress,” “Code Review,” and “Done,” and team members can track the progress of each task and see how it fits into the larger sprint goal.
Jira boards can be used by development teams, project managers, and other stakeholders to manage and track work in real-time, and to ensure that everyone is aligned and focused on the team’s goals.
Visualization: Jira Board provides a visual representation of tasks and project progress, making it easier for team members to see what’s been done and what still needs to be done.
Collaboration: Jira Board facilitates collaboration and communication between team members, allowing them to easily see what others are working on and identify areas where they can help.
Prioritization: Jira Board helps teams prioritize tasks and focus on what’s most important, ensuring that the team is working on the right things at the right time.
In particular the previous image, the Jira DFG:Upgrades board link shows the whole team work.
The squad board is represented by a subset of the filters used for the main DFG Jira board. This can help different squads part of the main DFG to focus on specific subsets of work, and to avoid being overwhelmed by too much information.
For example, a DFG might have a main Jira board that includes all of their projects and issues, but they may also have sub-boards for each squad that focus on specific projects or workflows. These sub-boards would only include the filters and columns that are relevant to that specific project or workflow, allowing team members to focus on the work that is most important to them.
Sub-boards can also be used to create more detailed views of specific issues or sets of issues. For example, a team might create a sub-board that shows all of the issues related to a specific feature or bug fix, allowing them to easily track progress and collaborate on solutions.
Managing sub-boards might be a useful tool for organizing and managing work in Jira, and can help teams to stay focused and productive.
In particular the previous image, the Jira DFG:Upgrades squad sub-board link shows a sub-set of all the tasks for the team, so the squad can be focused on their specific planned work. It is important to show that this view gives us the ability to compare the overall team’s progress with respect of each squad.
A Jira dashboard is a customizable, visual display of key metrics and information from Jira projects and issues. It is designed to provide users with a high-level overview of project status, progress, and key performance indicators (KPIs).
Jira dashboards can be configured to display different types of data, such as progress of individual projects, workload of team members, and number of open and closed issues. They can also include custom widgets and gadgets, such as charts, graphs, and filters, that allow users to drill down into specific data and see details about individual issues or projects.
Jira dashboards can be personalized to meet the needs of individual users, teams, or departments, and can be shared across the organization to ensure everyone is aligned and working towards the same goals. They are a powerful tool for project managers and team members to stay on top of their work and make informed decisions based on real-time data. In particular, they allow:
Performance tracking: Jira Dashboards provide real-time insights into project performance, enabling teams to identify areas for improvement and track progress against goals.
Customization: Jira Dashboards can be customized to display the information that’s most important to each team member, helping to streamline workflows and improve productivity.
Decision making: Jira Dashboards provide the information needed to make informed decisions, helping teams to adjust course and make changes as needed.
The previous image shows the Jira DFG:Upgrades migrations dashboard where it can be seen:
- The remaining days of the sprint.
- The people involved in the squad tasks.
- The effort allocation for the remaining tasks planned for the sprint.
- The current open tasks for the sprint.
- The current closed tasks for the sprint.
- The already groomed list of tasks that will be planned for the next sprint.
- Both burn-down charts for the whole team and the squad.
- The list of epics that should be worked on.
As the sprint moves forward there are a set of activities that are handled by all the team members.
|Sprint Planning||Sprint Execution||Sprint Review||Sprint Retrospective|
|Determine scope and objectives of the sprint.||Develop and test user stories.||Demo the product to stakeholders and gather feedback.||Reflect on the sprint and identify areas for improvement.|
|Create a sprint backlog.||Conduct daily stand-up meetings.||Review and prioritize backlog for next sprint.||Discuss what went well, what could have been better, and how to improve.|
|Define user stories and acceptance criteria.||Collaborate and communicate with team members.||Analyze metrics and data to identify areas for improvement.||Assign action items and determine a plan for implementing changes.|
|Estimate the effort required for each user story.||Conduct user testing and integrate feedback.||Celebrate successes and recognize team members for their contributions.||Plan for the next sprint and make adjustments as needed.|
Constant grooming and backlog ranking
It might be considered a good practice to do constant grooming and backlog ranking in agile development.
Grooming, also known as backlog refinement, is the process of reviewing and updating the product backlog to ensure that it is up-to-date and prioritized. This involves reviewing user stories, breaking them down into smaller tasks, and estimating the effort required to complete each task. By doing this regularly, the team can ensure that the backlog is accurate and up-to-date, and that everyone understands the scope of the work that needs to be done.
Backlog ranking is the process of prioritizing user stories and tasks based on their importance and value to the product. This involves considering factors such as customer needs, business goals, and technical dependencies, and assigning each item in the backlog a priority level. By doing this regularly, the team can ensure that they are always working on the most important and valuable items, and that they are delivering value to the customer in a timely manner.
The previous image shows in each sprint how the process of constantly revising the backlog and ranking the tasks takes place.
By doing constant grooming and backlog ranking, the team can stay focused on the most important work, and can ensure that they are delivering value to the customer in a timely manner. This helps to ensure that the project stays on track, and that the team is able to deliver a high-quality product that meets the needs of the customer.
Some final conclusions
Agile is an iterative and flexible approach to software development that emphasizes collaboration, customer satisfaction, and continuous improvement. It consists of a set of core values, such as valuing individuals and interactions over processes and tools, and 12 principles, such as delivering working software frequently and embracing change.
Agile methodology is made up of six key components, including user stories, backlog, sprints, daily stand-ups, sprint review, and sprint retrospective. These components work together to guide the agile process, from capturing user requirements through to delivering a high-quality product increment at the end of each sprint.
By embracing agile methodologies, teams can achieve a variety of benefits, such as increased productivity, better collaboration, improved quality, faster time-to-market, and greater customer satisfaction. By focusing on continuous improvement and adapting to change, agile teams can remain responsive to customer needs and competitive in an ever-changing market.
Jira is a popular project management tool that can be used to support agile development. It includes a number of features, such as Jira plans, boards, and dashboards, that allow teams to plan, track, and manage their work in a flexible and collaborative way.
Jira plans are high-level roadmaps that help teams to visualize their work over time, and to track progress towards their goals. Jira boards are visual representations of the work that needs to be done, and can be customized to reflect different workflows and priorities. Jira dashboards are customizable views that provide users with a high-level overview of project status and progress, and can be personalized to meet the needs of individual users or teams.
Some of the benefits of using Jira for agile development include improved collaboration, increased transparency, and better visibility into project status and progress. By using Jira, teams can stay organized, focused, and productive, and can deliver high-quality software products that meet the needs of their customers.
Finally, constant grooming and backlog ranking are important practices in agile development that help teams to stay focused on the most important work, and to deliver value to the customer in a timely manner. By regularly reviewing and updating the backlog, teams can ensure that they are working on the most important and valuable items, and can adjust their plans as needed to stay on track.