I am the Product Manager for a software company. We use an iterative development model (similar to Agile) to separate out versions of our software (i.e. 7.3, 7.4, 7.5, etc.) Prior to each version, we make a design plan based on a combination of customer requests and internal features that we draw up based on market research.
While this is definitely a better approach than the waterfall model, it is also presenting some significant challenges.
- It is committing our development timeline for a long amount of time. Right now if any of our customers make a development request, depending on the priority level, we may not be able to get it to them in a complete and tested version of the software for over a year. This is also affecting our ability to respond to changes in the market. We have added resources, but as we get more and more requests, we are committing more of our time in the future. What is the best way to ensure that our development timeline includes all of the items we are bound to complete for our clients, without overcommiting our future time?
- If we try to shorten the development timeline and get versions out faster, this invariably leads to more versions that have to be maintained. Finding a bug in 7.3, for example, means that same bug would have to be identified and fixed in 7.4, 7.5, etc. How can we reduce the number of versions when there are more bugs?
In your experience, what are the best solutions to these issues with the iterative development model?