I want a big car (well, more than one), a large mansion, and definitely a yacht too…NOW! We have all had this dream (or maybe you have better sense than me). But we know we can’t get all of it at the same time. We may get some of it gradually. So what do we do? We prioritise. And we work with what we have. So instead of a big car, I am happy to have a car big enough for my family. I am okay with an apartment that can house my family comfortably for now. I will work towards getting a bigger house but that would come later. The yacht might never come. This is true of the physical universe we occupy.
Software dreams aren’t very different from regular dreams. We want a beautifully designed app and having all the features we can think of (including a hair trimmer and missile launcher). Now. And guess what. Software reality isn’t different from the physical reality too. So, we prioritise. And we iterate over things improving them continuously till we achieve the desired result.
An Agile Development Plan for a product starts with the strategy and vision at the highest level. The next level consists of feature releases in-line with the high level strategy. The next lower level breaks down releases into iterations that build the features planned in the release bit by bit incrementally. There are two ways to look at the schema of things. Vertical drilling would involve peeling layers of the strategy as above. Horizontal panning would involve prioritising features across the timeline of the project development schedule. The whole gamut is prioritised – what would be required when entering the market to attract early adopters, what all features to build thereafter to strengthen the hold and enhance the customer base, and finally, how to add value to the product iteratively and incrementally.
You start by creating a Minimum Viable Product (MVP in short). An MVP is not a low-quality, half-baked product. It is a subset of the whole product with main objectives of getting initial traction and generating feedback. That feedback provides input into the prioritisation process (and release strategy) on what features need to be included in the next release. Each release generates more feedback that is fed back into the system for improvement. Within each release plan are features that are improved iteration by iteration. Each iteration encompasses a list of user stories which are again prioritised for delivery within that iteration. So even if something doesn’t make it to the release, it is always the lowest priority item for that iteration.
The key points to remember are:
- You do not plan everything in detail all at once. You plan in layers.
- Not everything has the same priority. Features and releases are prioritised along the development cycle.
- More emphasis is laid on the feedback in order to laser focus the product to the market rather than initial all-inclusive feature set of the product.