As agile software developers we work hard to make the development process as flexible and lean as possible for our customers. We work hard to estimate accurately, deliver working code quickly, and only do the work needed to finish the story right in front of us. This discipline is hard but keeps our customers in the loop and getting the most for their money/time. In order to keep up with the customer’s every changing requirements we often push-off decisions to the last responsible moment. By delaying making expensive decisions until our hand is forced, we reduce waste and can stay focused on delivering value with each finished story.
But, when is the last responsible moment? Who decides? Has it changed?
With our heads down in the trenches, knocking out stories left and right, and moving fast toward our client’s vision … we have to keep these questions in mind. A recent project reminded me of this. Our team did a great job at empowering our client to shift our priorities as their business understanding changed. We offered options, gave accurate estimates for stories, and allowed them to shift the work at hand each iteration. We did exactly what we were setting out to do.
Unfortunately, we were so focused on short-term flexibility and options that the higher level vision began to slip, and some decisions were made AFTER the last responsible moment.
The key here is the responsible. While we work to increase our productivity, reduce waste, and keep our customer’s immediate desires met … we need to keep in mind that the short-term decisions add up. Long off decisions and high level visions don’t need to be fully spec’ed and decided day 1, but the same way we maintain our suite of tests as requirements change, short-term decisions needed to be reconciled with the high level vision. A great team keeps in mind when this last responsible moment is for different kinds of decisions and revisits these frequently.