Subordinating the Scrum Team
Agilists intuitively get that it’s a bad idea to build an inventory of detailed specs way ahead of when they are going to get turned into software. Why? Because we know that as our product emerges, we are going to want to make changes to those requirements. There is a real risk that a lot of that work will end up being waste. That’s a big part of why we document agile requirements as user stories… we want the placeholder now, but we don’t need the details until we get closer to building that part of the product. It keeps our options open and our overhead low.
Building an inventory of requirements has a more insidious impact than just opening up the possibility of waste. Sure, we risk specifying stuff that the business might not need, but we also build in assumptions and risk that can’t be validated. Everything that we define now, everything that can’t be built and tested immediately after specification, represents something that we’ll have to validate or mitigate somewhere down the road. Those uncertainties make it really hard to forecast when we are going to get to done. They make it tough to be predictable.
Furthermore, requirements gathering an analysis shouldn’t be done in a vacuum. We know that we’re going to want some help from our development team to discuss what’s possible from a technology perspective. When we pull our team into meetings to discuss these things, we are taking their attention away from the task at hand. Our team is working on the highest priority features, and here we are pulling them away to help forecast lower priority requirements that may or may not ever make it into the product. It’s a pretty solid formula for going slower than we have to.
Even though we may have some capacity to do the requirements work… and it would be nice to get ahead of the game a little… it is not something we generally do on agile projects. Managing all those requirements changes, tracking all those assumptions and risks, and absorbing all the productivity impact to the development team is just too great a cost. We KNOW it is going to cause us problems down the road. Any benefits we’d gain from getting ahead of the requirements work would be lost due to the overhead necessary to maintain our requirements inventory. That inventory slows us down and makes us more resistant to change.
We understand… in this kind of a scenario… that the team has to subordinate the requirements gathering process to the overall production cadence of the delivery team.
Now, let’s extend this metaphor up a little and talk about our financial services company… and specifically our new hyper-productive Credit Card Processing Scrum team. With regard to the rest of the organization… our Scrum team is able to produce working software much faster than everyone else around them. The question we’re dealing with is… SHOULD they produce working software much faster than everyone else around them? In this context, under this set of circumstances, I’m saying no.
I’m suggesting that the Scrum team in our complex product organization becomes very much like the requirements gathering function in our earlier example.
When the Credit Card Processing team builds software features faster than the rest of the organization can consume those features, they risk the possibility of waste and rework. They introduce assumptions and risks that have to be managed and mitigated throughout the life of the project. They will disrupt the other development teams around them and force those teams to multi-task. The other teams will be forced to pay attention to features that they won’t be ready to build for another several months. All that code will slow us down and make us resistant to change.
While it is technically possible for the Credit Card Processing team to get a head of the game… and it might make them feel more productive… it might be great for their team morale… ask yourself what impact they are having on the rest of the organization. It might not be as positive as you think. So… for all the same reasons you might ask a PO or a BA to slow down writing requirements to fill the product backlog, you might want to ask your Scrum team to slow down building software until the rest of the organization can catch up.
It’s counter-intuitive, but if you start thinking past the single team, it might be exactly what you need to do.
Nice post; at the NC Agile Coach Camp, David Bulkin did a session on using Kanban as a process to ready requirements for a team using iterative development (his talk was Vision2TestViaReqmtsPipeline in the marketplace). One of the issues he had faced was having the users/management/sponsors ready for requirements discussions at the same cadence as the development team. So he used Kanban to develop the requirements to a "ready" state that the product owner and the rest of the development team could run with. It was the product owner's responsibility to ensure this was handled smoothly and in a timely manner. The primary issue I see, and it was a challenge David acknowledged, is ensuring the technical to requirements feedback required to ensure what is requested is feasible.
David, if you read this, please, please upload your session report to the Agile Coach Camp wiki, it was a great session and so many people could benefit from the concept.