At the XP agile school, they advocate what you do not evaluate in real time, but in arbitrary units. (They use "Gummy Bears", but you can use anything). You assign your best guess about the number of units that will be required to implement this user story.
True, you may be mistaken, but you will enter a phase of your development, several iterations, when your assumptions are mostly correct, and it is easy for a business / client to get an accurate budget of how many stories they can include iteration.
A good rule of thumb at an early stage when it is difficult to evaluate is to take one of your simplest tasks and isolate it with a value of 1. Evaluate each user's history in relation to this, and do your best Guess. If something is too complicated or not well defined, you will be forced to give it a really large amount.
Another key concept is that you must reevaluate the time for each user story at each iteration. As your stories are better defined, and as your assessment of your speed improves, you will get more accurate time in your stories.
As for surprises, this has nothing to do with evaluating user stories ... since you do not have user stories to represent surprises.
Justin standard
source share