Estimation is a guess-work. Hence, when we estimate an iteration, there is a possibility to not being able to finish all scheduled features.
Not a big deal! Extend the Iteration! Not exactly. Extending the iteration is one of the worse Agile anti-patterns1. It is never ever a good idea to extend your iteration.
Below are a list of tips to continuously complete your iteration:
- Keep your hands in tasks while your eyes on iteration! Never get very focused on the completing tasks without reviewing the status of the iteration everyday
- Use priorities: Engineers usually tend to work on things they find challenging first! Over come this and get things done according to business priorities. Ending the iteration with 3 low priority features is wiser than ending low priority tasks and leave one of the high priority tasks undone.
- Avoid fake dependencies: Do you really need the UI to go ahead with the back-end coding? Consider crushing your schedule. Things can be done in parallel even if there are dependencies between them. There might be an integration overhead, but usually it’s worth it, as the overall time usually get lessened.
- Finally, Learn from your mistakes: measure your team velocity, investigate what went wrong and learn from the history.
If Priorities are not defined from the business, categorize your features to Functional, Management and Usability 2. Start with functional, then usability, then management. There might be exceptions but this might be a very good starting point. Remember you can go out without rounder corners. If functionality is working then don’t work hard on the UI.
2. Functional: a feature or task that enable business to do a certain function
Management: features or tasks related to logging, reporting and accessing
Usability: features or tasks related to user interface layout and flow