Bart the BA had just joined the large organisation where I was coaching. He asked me to help do the business and functional analysis of one of our largest projects. He had several years of experience analysing large systems. I tried to teach him how to do Agile analysis, convince him that he didn’t need every last detail before development started.
The result was a thick document that described the processes and business rules in excruciating detail.
That won’t work!
There are a few ideas in Agile methods that are almost always met with incredulity and disbelief. The reaction ranges from a puzzled “Hmmm… That’s an interesting/unusual idea” to “Are you crazy? That’ll never work!”. What’s so hard to believe?
- Project managers can’t believe their project will run more smoothly with less detailed planning upfront and detailed controls on what the team is working on.
- Architects and designers can’t believe the application’s architecture will be more appropriate and easier to understand and change with less detailed design up front.
- Analysts can’t believe the team will understand what the customer needs with less detailed analysis up front.
The Waterfall dies hard
Wasn’t the Waterfall dead and buried? Why do so many people still think that doing more work and more detailed work up front will improve our projects?
It’s only natural.
Projects are scary. There are so many variables. So much could go wrong. Our instinctive reaction to deal with these fears is to nail more down, research in more detail, take decisions as soon as possible and reduce the number of variables and options. Which is exactly what we don’t want to do.
We want our coachees to accept the paradox that to control our projects better, we need to relax our control. If we want to take better decisions, we should take them as late as possible, when we have the most information. Instead of closing down options early, we should instead keep our options open to deal with an uncertain future.
Techniques like “Real Options” replace premature commitments with decisions about the conditions under which we will need to commit. Meanwhile, we can gather information and find more options.
Techniques like “Critical Chain” allow us to deal with the uncertainty of dependencies and estimates by giving us the means to deal with the planning risks as they arise.
Techniques like “Dimensional Planning” allow us to maximise value/effort by giving us the means to take decisions about depth of implementation as we get feedback from the customer.
An investment in code and design quality, automated tests and team skill keeps the system malleable so that we can deal with unexpected requests economically.
Leap of Faith
We must always be aware that to change the way people have worked, mostly successfully, for years requires a huge leap of faith from our coachees. When they first start changing the way they work, their performance will go down, they will feel uncomfortable and they will feel lost. They will want to go back to their familiar way of working.
We need to support them with practical assistance and encouragement, help them through the difficult moments and show them new techniques. We need to acknowledge their fear and address the fear:
- Yes, emerging design will rapidly degenerate unless we all have the discipline and skills to apply good design principles, practice test-driven design, continuously refactor and continuously improve teamwork. How can we strengthen the necessary practices and skills? How can we trust the team to do a good design job?
- Yes, just-in-time requirements will fail unless we have close collaboration and communication with customer representatives. How can we ensure that we will get quality information from them? How can we trust the customer representatives to do a good job of describing and validating user’s needs?
- Yes, “rolling wave” planning will fail unless we receive good credible and reliable information about estimates and status from the team. How can we ensure that the team has the necessary skills and transparency to provide the project manager with the right information at the right time? How can we ensure that the project manager communicates clearly about goals and constraints? How can project manager and team trust each other?
Bart noticed that the developers didn’t really read the requirements document. The developers wanted User Stories, so I helped him to translate the requirements into stories. Whenever the developers had questions they came to Bart. Through his work on the analysis he knew pretty well what the system was supposed to do. When he didn’t know, he knew who to ask.
Gradually, Bart became this team’s product owner. Some expert users were added to the product owner team. For the next release, the product owner team started with stories and elaborated the detailed requirements just before the developers needed them. For the first time in years, users were happy to receive new releases of this application.
What’s common in all of these concerns?
- Relinquishing control, or at least the illusion of control.
- Mutual trust.
The best way to break out of the vicious cycle of distrust and increasing control is to inject some trust into the system. Increase trust by the project manager by helping the team to communicate transparently about progress, for example with a burndown chart. Increase trust in the team’s estimates by using historic velocity. Increase trust about requirements by involving users, analysts, testers and developers in the definition of user stories and acceptance tests. Increase trust by showing the working and growing system regularly.
We, as coaches, are sources of trust. We’ve done this before. We’ve done this successfully before. We’ve also failed; but we’ve learned from the failures. An investment in coaching is an investment in trust.
A small step is a lot less scary than a huge leap. Therefore, we try to help our coachees to change gradually. First try a little less upfront work on a small project. Gradually decrease the amount of control; gradually increase the number of projects where the techniques are used; gradually increase the number of people who change their way of working. Small successes increase trust.
But the idea that you can get to your goal in small, incremental steps is another idea that many find hard to swallow.
The alternative is to take the “just do it” route: the team decides they will apply these changes on the next project and see what happens. They trust that the coach will act as their safety net. They trust that the coach will catch them if they fall.