Although we do everything we can to avoid it, sometimes a story goes off the rails. Things look more complicated than we first thought, or something turns into a time-sink. What are some of the things that we do in those situations?
First, and most importantly, be explicit. During stand-up (or even earlier), explicitly say “we’re missing our targets on this task/story and we need to take corrective action”. Or words to that effect.
Have a Group Discussion
Take a step back. Discuss the problems that are being tackled in the current story. Get everyone on the same page. Often, sharing information helps to make the problem easier to solve. An open source adage is that “many eyes make all bugs shallow”; something similar could be said of implementing stories.
Break Up Larger Stories
The adage that the whole is greater than the sum of its parts is true about stories. One size 2 story is usually harder to implement than two size 1 stories, mostly because of how much complexity developers can keep in their heads.
If a story is already large, and the deadlines are being missed, consider breaking up the story into smaller stories.
Break up a pair. Put in someone with a new perspective. One of the key insights of the paradigmism craze of the 1990s is that break-throughs often come from an outsider.
Defer to Another Story
If you have several stories relating to a similar piece of functionality, consider taking some of the non-critical elements of the current story and make them part of another story.
While this might seem as though it is just moving effort from one place to another, there is actually a benefit. As people complete things, they understand those things better, and are more effective at implementing change later.
Find the “nice to have” elements of a story and be ruthless about dropping them from scope.