In the previous posts in the series on handling impediments I explored why agile teams need to be able to deal with impediments, how you can recognize problems and what you can do to get a shared understanding of a problem in the team. This post will explain how you can find effective solutions for solving impediments.
To solve an impediment you can apply existing “good practices”, e.g. solutions that have worked in similar situations. You probably need to tailor them to be effective for your problem. There are many practices that have been described and are used by many people, so why reinvent the wheel?
Some examples of applying practices for solving an impediment:
- If the customer needs are unclear, you can consider to use Minimum Viable Products to learn more about them.
- If the incoming User Stories often contain insufficient or wrong information, maybe the team can setup a definition of Ready to increase the quality.
- If there are problems with code quality, think about pair programming, code walkthroughs or reviews or static code analysis.
- If the build is often broken by code changes, consider continuous integration and automated testing.
- If team members are having difficulty to coordinate the work, how about making the work visible on a task board, do daily stand-up meetings, or use a (cloud based) agile tool to make work in progress visible.
- If teams seem to be overloaded with work, think about practices like limiting Work in Progress, sustainable pace, slack and clear priorities.
- If communication and collaboration is lacking between development and operations, maybe deploy DevOps with teams that have people from development and operations.
Personally, I prefer to use practices that match with agile and lean principles, as I have seen those practices to be very effective in solving problems, and they also reduce the chance that the same problem will happen again. I call it sustainble improvement.
You can use a Solution Focused approach to find effective solutions for dealing with impediments. For instance by asking people to thinks about times when the problem that they are trying to solve wasn’t there or has been less of a problem. And then ask them what they were doing at that time that was helpful. Instead of coming up with something new and scary this approach helps them to solve a problem by doing things they know how to do.
There are always more solutions possible to solve the problem. Each solution has advantages and disadvantages. To test if you have really understood the problem before applying a solution, there’s my rule of three, which is based on Jerry Weinbergs rule of three from his book The Secrets of Consulting:
If you cant come up with three different solutions that might help to solve a problem, then you don’t understand the problem.
Deploying practices effectively
Practices are not recipes. There are no standard solutions, “no best practices, only good practices in context” as Larry Maccherone stated (more on this in my InfoQ interview with Larry Maccherone and Jim McCurley in Quantifying the Impact of Agile Software Development Practices). So it depends on the situation which practice can be suitable to handle an impediment, and you will need to adapt it to be effective.
Some of the techniques that can be used to deploy practices in an effective way are:
- Play a devils or angels advocate game to challenge a practice.
- Define a safe-to-fail experiment to try a practice.
- Why over how, ask why to understand the needs before deploying a practice.
- Give people space to try a practice, don’t enforce it but be available.
- Listen to people and understand their concerns, and based upon that suggest one or more practices.
- Tailor a practice by using checklists.
There are many more techniques for deploying practices, these are just some ideas to get you started. And I would love to hear your ideas and experiences in deploying practices to solve impediments, so please share them by submitting a comment on this blog post!
Learn how to deal with problems and impediments effectively
If you want to develop individual and team skills to deal with impediments then I’d suggest joining my workshop Making Agile Work for You. In this workshop, you can play the agile and lean impediment game which teaches you how to recognize and deal with problems and impediments and how you can deploy agile and lean practices to solve problems and become more agile and lean.