3.8.1 Agile Tools and Techniques
Agile methods and tools lend themselves most appropriately to systems and projects in which accurate estimates, stable plans, and predictions are often difficult to attain in the early project stages. Agile development favors an adaptive, iterative and evolutionary development approach. Using agile tools and techniques can help to:
- Self-organize and plan
- Communicate (within the team and with the rest of your organization)
- Continuously improve the way you work
- Get support from management
Introducing Agile Tools and Techniques
This guide describes some of the common agile tools and techniques that teams use. Others can be used depending on the project and team. Agile teams may also adopt unique combinations of techniques to support their framework and methodology. Examples include:
- Dedicated teams
- Relative estimating
- User stories
- Burndown charts
- Definition of done
A few techniques typically used on agile projects that directly contribute to accelerating the time to delivery and the increased quality of the product being delivered, include:
- Frequent inspection of the product and adaptation to the changes and input during the project
- Aligning development with customer needs and organizational goals
- Colocation of resources to the same work space
- Self-organization and accountability
- Becoming a team player
- Elimination of “waste” and “ceremony”
- Empirical demonstration of results
- Customer is always present
- Focus on key planning events: product planning, release/feature planning, iteration planning, sprint review, and stand-ups
One of the most common frameworks is Scrum. Scrum is a metaphor from the game of rugby. Like rugby, Scrum also relies on talented people with varying responsibilities and domains working closely together in teams towards a common goal. This is in contrast to traditional development approaches like a relay race, in which one team member at a time carries a baton and then hands it off to the next runner.
Scrum is an empirical exposure model, in that knowledge is gained from real-life experience, and decisions are made based on that experience. Through transparency, inspection and adaptation, using Scrum is a a good way to demonstrate whether your project is generating the intended results.
When following Scrum, teams focus on what can be done ‘today’ and break future work into manageable pieces. There is more immediate feedback as to how well your development methodology is working, and when issues arise, Scrum allows for immediate action by making adjustments with clarity and speed. Scrum works to:
- Clearly define roles
- Organize your work in actionable chunks
- Enable effective prioritizing
- Allow for efficiencies in completing work
A high-level overview of Scrum is depicted below in Figure 1-1.
There are numerous artifacts that will need to be developed as part of an iterative agile project effort. Many are either inputs or outputs from an individual sprint. Three key sprints artifacts are the product backlog, sprint backlog, and the shippable product implement as shown in Figure 1-2 below.
The product backlog is the master to-do list for a project. It is an ordered list, prioritized by business value and risk. It is a dynamic artifact and changes as the Scrum team gains additional knowledge regarding the requirements and solution they are developing. At the beginning of each sprint, the Scrum team plans and executes the next highest priority item on the product backlog, resulting in a fully designed, developed, tested and integrated functionality.
Typically, each identified item on the product backlog includes specific information that may include: description, estimate of effort required to complete it, and ID number, status and type. The Product Owner is responsible for maintaining the product backlog.
The sprint backlog is also created at the beginning of each sprint, and is the to-do list of tasks necessary to achieve the sprint goal. The sprint backlog generally includes a sprint goal and the sprint end date, a prioritized list of requirements, estimated effort for each item, tasks required for each requirement, estimated hours for each task and a burndown chart displaying the status of work being performed throughout the sprint. The sprint backlog is the artifact resulting from sprint planning. The development team is responsible for managing and maintaining the sprint backlog.
Shippable Product Increment
At the end of every sprint, the development team delivers working, tested and integrated functionality to stakeholders and customers to review. The development team reviews each requirement with the product owner as soon as it is completed, and the requirements that comprise the increment are only considered complete if the product owner accepts them. The product increment is what the development team demonstrates to stakeholders in the sprint review.
Agile development cycles are iterative, and are often referred to as ‘iterations’. A sprint is a time-boxed iteration. The length of a sprints or iterations can vary by Scrum team, and project, however the shorter the sprint, the more frequently a Scrum team receives feedback to inspect and adapt both their product and processes. Sprint lengths rarely are very long, with the preference usually being 1-2 weeks, and in some cases as short as a single day. As depicted in the Figure below each Sprint contains four key events:
- Spring Planning
- Daily Scrum or Standup
- Spring Review
- Sprint Retrospective
Each sprint begins with sprint planning, and then the team collaborates daily (daily scrum) amongst the team and the product owner to elaborate, design, develop, test, integrate and generate requirements into working functionality. If any sprint output is rejected by the product owner, the development team works together to resolve any defects or misalignments with the business objectives until completion.
The sprint ends with a sprint review and sprint retrospective as shown in Figure 1-3. Once a sprint is officially completed, a new sprint begins. Ideally, each sprint is the same length so the Scrum team can extrapolate their potential future performance or output based on a small amount of historical data.
Early planning for your agile project is generally at the epic level to determine what the epics will be for the duration of the project and their relative priority. Detailed planning occurs as a part of the sprint planning process and is undertaken as a just-in-time activity in the sprint planning meetings.
Sprint planning meetings are a feature of Scrum and should be held at the start of each sprint. At a sprint planning meeting, the team decides what to work on next and how they will do it. The length of the meeting will depend on how long your sprint is. Sprint planning is the process of establishing a sprint goal and selecting product backlog items in support of the sprint goal that can be completed within the designated sprint timeframe.
The product owner presents a sprint goal and the development team identifies the specific product backlog requirements that can be addressed during the sprint. The development team then identifies the technical tasks required to complete each requirement. The team evaluates their capacity for the sprint and compares it against the aggregated estimates of the tasks. The team then works collaboratively with the product owner to address any concerns with completing all of the selected items within a sprint and to determine how to accomplish the sprint goal with the available capacity.
Sprint planning is time-boxed, and depending on the project and organization the time spent per week may change. For instance with a two-week sprint, two hours per week should be sufficient with the total planning lasting no longer than four hours. The Scrum master facilitates sprint planning, however, the product owner is responsible for the sprint goal and provides clarification to the team regarding requirements and business goals and objectives.
Daily Scrum or Standup
The daily scrum or standup should be scheduled for the same time each day and be relatively brief. Depending on the scale of the project a 15 or 30 minute duration can suffice. It is recommended that the meeting occur in front of your team wall.
Keep in mind that it is best for Scrum teams to collaborate on a daily basis instead of as needed. Meeting together once a day to discuss what each team member is working on and whether they have any problems or dependencies that need to be resolved is helpful to keeping the project moving forward smoothly. Additionally this meeting should be used to coordinate how to accomplish the work for that single day, or if a team member needs help from someone else.
Each developer states what work he or she completed the prior day so that each team member is clear on progress. Each developer also identifies the work from the sprint backlog they will take on, and coordinates with other developers to reach the sprint goal. Any roadblocks or impediments are also identified at this time so that the Scrum master can address them as quickly as possible.
The daily Scrum or standup is generally brief and is not considered a formal status-reporting meeting. It is intended for coordinating work, prevention of potential roadblocks, and identification of impediments. The product owner may attend this daily meeting to gain visibility regarding the work effort and to make sure the team remains focused on the sprint goal.
Each sprint closes with a sprint review. This allows the product owner to verify that the Scrum team is developing what the customer wants. The product owner presents the sprint goal and status to the stakeholders.
The development team members then demonstrate working functionality and the product owner collects feedback from the stakeholders. The product owner then updates the product backlog, based on this feedback and cross-references the current state of the project with the overall roadmap and communicates what is planned for the next sprint.
The product owner and development team own the sprint review, and the Scrum master facilitates and ensures that the objectives of a sprint review are met. All stakeholders should attend, and ideally, the customer attends as well, in order to provide feedback to the product owner. The sprint review should last no longer than one hour per week of the sprint.
The sprint retrospective, sometimes also referred to as a ‘retro,’ provides the Scrum team with the opportunity to inspect and adapt its processes, environment, tools, communications, and impediments in order to make improvements.
Scrum teams typically utilize this time to validate what is working well in addition to identifying any practices that may not be working. Concerns are addressed, and the Scrum team identifies any changes that should be implemented as a result. Action plans for adopting those changes are developed and added to the product backlog to be implemented in a future sprint.
Typically, only Scrum team members participate in the sprint retrospective; however, they may invite stakeholders or customers to participate as appropriate, in order to provide additional insights. For example, with a two week sprint, this Scrum event should be time-boxed to no more than 45 minutes per week of the sprint. As a result the retrospective should last no longer than 90 minutes. The overall goal of the retrospective is to fix any problems in the team and to make sure you keep doing the things that are working.
Running a Retrospective
Retrospectives should have an open atmosphere where every member of the team can speak honestly and feel confident that their colleagues will listen. Steps to follow in a basic retrospectives include:
- The facilitator explains the questions at the beginning and sticks a post-it note to the wall for each question.
- Each team member writes down one or more answers for each question on post-it notes and sticks them to the right part of the wall.
- The group discusses issues as they come up, or at the end.
- The facilitator decides on actions to fix any issues or problems that were raised, and assigns them to members of the team.
Keep in mind that topics should be selected to prompt useful team discussions. Example discussion topics may include:
- What went well in the last iteration
- What did not go well in the last iteration
- What’s puzzling the team or what doesn’t the team understand
Make a List of Actions
Information gleaned from the retrospective should be used to improve your work and your working environment. Make a list of actions that are needed to fix the problems that the team has highlighted. Aim to complete these action items before the next retrospective.
Team Review (show and tell)
The team review is a regularly scheduled meeting which gives team members the opportunity to demonstrate their work. It is also referred to as a sprint review or a show and tell. You may want to invite stakeholders such as directors or suppliers to this meeting and use it to tell them about the user stories that have completed or other work which has been done. Make sure to use a place with a screen to present the work and enough space for all participants.
If your project is part of a larger organization or program you may want to open up your review to the rest of the organization every few weeks. This gives you the opportunity to show the most important work you’ve done, talk about what you’ve learned, explain your plans for the next few weeks and answer questions. It also gives other teams the chance to see how your work relates to theirs.
User stories are a way for your team to briefly record the things you need to do to build the product. You can use them to prompt discussions about features when you’re ready to start working on them.
A product backlog is used to store the user stories that haven’t yet been started. It is recommended that the user stories are ordered based on priority. If you are following Scrum you should also use a sprint backlog to manage the stories that the team has agreed to work on during a sprint.
Your team wall is an important tool that helps to track and manage the workload. The wall shows what your team has done, what they’re currently doing, and remaining work. Having a team wall helps your team to collaborate and allows other people in the organization to see what you’re doing. For more information on setting up a team wall click here.
Approaches to Agile
There are numerous agile frameworks that can be followed or leveraged when implementing business transformation projects. They include but are not limited to: Scrum, Extreme Programming (XP), Kanban, and Scaled Agile. This guidance will focus on Scrum. For a more complete list see the Agile Manifesto.
Updated: September 22, 2017