How many times have you been working on a feature only to discover a new scenario that you feel is important, but isn’t included in the estimates for the current sprint? And what did you do? If you’re like most programmers, you probably just wrote the code to handle the scenario.
If so, you’re experiencing feature creep and/or gold plating. What this really means is that you’re adding code that perhaps should never be in the product. How’s that you ask? Shouldn’t I ensure that I handle all scenarios?
In a word, no. You see, not all scenarios have the same value to a customer. If you just go ahead and write code for a scenario, you might be supporting a scenario that really isn’t that important. But you’ve actually taken time away from working on what are most likely more important scenarios.
So what do you do when you find a scenario that you’re not handling? Add it to the product backlog.
The product backlog represents value that you’d like to add to the product, stacked from the most important to the least important. When you add a new item to the product backlog, it’s a good idea, as a team, to agree on a stack rank value (like 1000) that you’ll use for new items that haven’t been stacked yet. Also assign the user story (or product backlog item) to yourself so the product owner will know who to talk to when they have questions about the importance of your item.
The idea of agile is to build as much code as you need to deliver the value, but no more. Building more depth into a feature (gold plating) or adding extra features (feature creep) only takes time away from adding more important value. So stay focused on building the minimum code required to satisfy the acceptance criteria for the current sprint, and put all other ideas on the product backlog.