My last post generated a lot of reactions and it seemed like I was only asking questions and not giving any solutions. So here it goes, how would I release (or propose) to release software projects / products without a deadline. My answer is pretty simple (hence this short blog post), do it the Scrum way -
- Create a product backlog, identifying all the features / user stories / user requirements you would like your product to have. Arrange the features by priority.
- Ask yourself, what are the bare minimum features that you need to get the first release out. Ideally the first release should be timed between 3-6 months.
- Based on the team's comfort / skillset / experience select a time frame that you need to deliver the features for the first release or the bare minimum product. This can be a rough estimate for now (say 12-15 weeks).
- Iterate over two week "sprints", implementing the features one by one in order of priority.
- Each iteration of two weeks, produces a demoable, deployable piece of software. This may generate some feedback, add the feedback to the product backlog and re-prioritize it.
- If more work is discovered while developing the product, you can move the release date or re-prioritize the backlog based on what you can do within the time frame.
- After each demo, ask yourself "Can I release this?" or "What is stopping me from releasing this product?" or "Is this in line with my original release plan?". Re-prioritize the backlog again if needed.
- If things go well, you should be able to release on the originally launched date plus or minus 1-2 sprints.
- If things go bad, you can ask yourself, "What has changed?", and re-prioritize the backlog and ask the question again "When can I release this?". Usually this is a smell that something bad has happened, remember the demos we gave all along.
- Release, iterate, add features and release again.