Plans are worthless but planning is everything. An original estimate presented at the starting point of a project, will for sure evolve as we keep adding more info to our knowledge base. And everyone should be prepared to quickly adapt to this newly added information.
An estimate is a communication that should be alive in an agile context.
It's unrealistic to expect to finish something at the estimated time, when the estimation is being done at the beginning of the project.
One tool that can help you keep on track is Giving clear goals to the epics: If an epic has a clear goal, everything we would be potentially adding needs to go through the goal filter
A quick example:
- The stakeholders bring new "useful feature" and wants to add to the list visible in the admin user page a checkbox on each user that marks them as a favorite user.
- A developer realizes that due to a technical constraint the users can't have more than one role in the product.
Say your goal is
A. "Do the user administration page".
When 1 happens, it is not clear if this is or not part of the feature, and you might end up with the never ending features, a page can always have tweaks and fixes.
When 2 happens, you might need to analyze if the not having more than one role is acceptable.
Instead say, your goal is
B. "Have a User Admin page that lets the superUser handle the minimum
roles necessary to handle the page with the three actors we have".
When 1 happens, it gets crossed out right away. And what happens if the client really wants that? Well it should be in another epic, for sure. They can then decide if they want it or not.
When 2 happens, you will already have the team thinking if goal filters the problem or not before you get to hear the problem, and taking faster decisions to move forward (such as asking what to do with that, already knowing that it won't fit this epic's goal)