This article offers practices and rationale for various dimensions of helping to create team agility. There are practices that apply if you are using iterations (such as scrum) or if you are using flow (such as kanban). Disciplined Agile supports both approaches.
In all of this, we believe that:
- Delays in workflow cause waste in the form of rework.
- Alignment of people working together is very important. Without it, delays will manifest.
All of the approaches described below help teams to pivot at lower cost.
Approach: Work on Small Items Organized by Value Realization
This requires having a well-defined input queue. To ensure these items are of high quality attend to the operational value stream of the customer.
Using Iterations or Flow
- Organize intake around MVPs and MBIs. Strive for small stories.
- While having iterations encourages small items (since the items have to fit into the iteration) it is important to take steps to explicitly do this.
- Scrum does not provide guidance on how to manage the small items but using the combination of MVPs and MBIs is almost universal.
Discussion
- Working on large items is correlated with waste, will slow feedback and delay the delivery of value. Not having acceptance criteria prior to working on an item often results in misunderstandings and rework. A DoR is needed when handoffs are done so each party understands what their agreements with each other are.
- High value items can be used to align work. If this is not present people will not coordinate what they are working on to get value out the door quickly.
Approach: Get Quick Feedback
Using Iterations
- Iterations result in feedback no longer than the iteration length.
Using Flow
- Get feedback after each item is completed.
Discussion
- Slow feedback creates risk, rework, and waste.
- Chaotic (non-linear) events can occur anywhere in a workflow. When undetected, significant waste can result.
- Iterations provide feedback at the end of iterations; feedback on each item is better.
Approach: Manage Queues (Work in Process)
Using Iterations
- Use iterations of no more than 2 weeks.
Using Flow
- Manage each queue that represents a constraint on flow. Focus on finishing MBIs, features and stories. This minimizes WIP at all levels.
Discussion
- Items in queues are waiting to be worked on. They represent delays and delays cause waste both directly and due to slow feedback.
- Using iterations limits WIP to be no more than the iteration capacity. Managing queues directly and having fewer items in play can drop queue size dramatically.
Approach: Have an Efficient Workflow
This is correlated with avoiding delays in workflow, handoffs and handbacks
Using Iterations
- Create an efficient workflow which avoids workflow handoffs and handbacks
- Use cross-functional teams. Cross-functional teams enable people to work together, see what work is to be done and not have to wait to get information.
Using Flow
- Work directly to avoid workflow delays, handoffs and handbacks.
- Attend to the cycle time of the items being worked on.
- Managing WIP and making work visible facilitates this.
Discussion
- Handoffs lose information and create queues, which in turn create delays, and this creates waste.
- Handbacks are a symptom of misunderstandings.
- Delays cause waste.
Approach: Have an Effective Value Creation Structure and Encourage Collaboration
Using iterations or Flow
- Achieve cross-functionality to the extent practical.
- When teams are not possible or practical, manage how they work with each other using flow methods to reduce delays in workflow.
Discussion
- Effective value creation structures can eliminate dependencies between teams which often cause delays in workflow.
- While cross-functional teams are ideal, they often can’t be achieved due to limited skill sets or requiring multiple teams to build some functionality.
Approach: Create Visibility of Both Work and Workflow
Using Iterations or Flow
- Make work visible to enable people to see what others are working on and if their involvement will be needed.
- Make workflow visible so that people can see the agreements between the different stages of the work.
Discussion
- Both of these are required for good collaboration.
- This visibility is required for both what is to be released as well as the features and stories that make this up.
- Lack of visibility can cause chaotic events to occur in knowledge work
Approach: High Product Quality and Good Architecture to Avoid Risk of Side Effects of Changes
Using Iterations or Flow
- Have definitions of done to create clarity on what needs to be created.
- Have definitions of ready so that those specifying the work to be done and those doing it have an agreed upon approach.
- In software products the best way to do this is to use a combination of:
- Defining test-specifications up front
- Doing automated testing
Discussion
- Increasing quality of the work product is essential to avoid unanticipated delays when changes need to be made.
- A product with poor quality will increase risk when changes are required. Unanticipated changes will introduce delays into the system that will be hard to manage as well as create additional work in the process that will cause further delays.
Approach: Guided Continuous Improvement
Using Iterations
- Doing retrospections at the end of an iteration to see how to improve your work is the standard technique.
Using Flow
- Do quick reviews of how queue management, product management and general working can be improved. Take time on a regular basis to do a more in-depth review.
Discussion
- Continuous learning is best. Having a model to adjust is also critical.
- Waiting until the end of an iteration somewhat demeans the importance of learning not to mention, it’s the least effective place to do it.
- Short reviews on a mostly continuous basis is ideal.
Approach: Who Is Responsible for What’s Being Built?
Using Iterations or Flow
- This responsibility is independent of whether an iterative or flow-based approach is being used. Scrum suggests a product owner but just as often the team itself is a likely candidate.
Discussion
- What is built is always an integration of business and customer needs.
- Who can best speak for each of these and integrate them should be the basis for a decision.
Approach: Few Interruptions from Outside
Using Iterations or Flow
- Focus on having your work be interruptible.
- Enable requests to come in and fit in between the small items being done in a flow manner
Discussion
- Interruptions are bad when they cause delay for the team being interrupted or for those making the request.
- The best solution is to work together so teams don’t interrupt each other. But when they do, do it in the least damaging manner possible.
Approach: Someone Responsible for Continuously Improving the Team’s Performance
Using Iterations or Flow
- There are two main choices here: an agile coach or the team itself. There are advantages and disadvantages to both. This choice depends upon both what works for the team and how much individuals on the team know about team agility.
Discussion
- Teams need a coach, whether it is an external coach or the team lead or someone else. But it needs to be someone who understands the challenges of the teams. Someone who has never worked in the domain of the team (especially if it’s software development) can often not be effective. The coach must also be accepted by the team.