Agile development talks about producing valuable software, with the aim of delivering potentially shippable solutions at the end of each iteration. For me these have always been two distinct ideas:
- valuable software – a small piece of functionality that adds to the system ; not necessarily a complete feature, but not dependant upon any other story.
- shippable software – software that can be released to the end-users; probably a combination of several pieces of valuable functionality.
While talking with a team recently it came up that completing an individual scenario wasn’t valuable as it couldn’t be delivered without the remaining system. For me, this seemed an alien concept and raised questions.
- Why are we producing this if it isn’t valuable?
- Can a user story have no value until it is part of a completed feature?
Can a simple scenario add value?
So, you are busy developing a new customer service system, working on a set of stories that allocate incoming calls to a service representative.
Taking the simplest case first: a call comes in and is allocated to the first representative found. Does this story have value? For me, yes it does. The simplest case gives you the basis from which every other scenario will hang off. Is it the most valuable scenario? Probably not, but it makes sense as the first one to tackle.
Valuable isn’t shippable, not always
So valuable software isn’t necessarily shippable in its own right. However, it is potentially shippable. The fact that it is an independent part, not requiring undeveloped functionality to work, means it could be shipped as part of the product. The end-user may not think the feature is complete but what they have works and provides some functionality they didn’t have before.