Just read a great joke--OK, a joke I liked at any rate.
"A dairy farmer, in a fit of desperation because his cows aren't giving enough milk, consults a theoretical physicist about the problem. The physicist listens to him, asks a few questions, and then says he'll take the assignment. A few weeks later, he calls up the farmer, and says 'I've got the answer.'
'Tell me,' pleads the excited farmer.
The physicist starts his answer by saying, 'First, we assume a spherical cow...'"
Physicists often have to construct clean, clear-cut laws to describe messy realities. They do this by cleaning up their concepts about reality, assuming frictionless surfaces, loss-less mirrors, and yes, lots of spherical objects.
UX and UI designers sometimes do the same thing, assuming a spherical user who knows what he wants to do, will not make errors in doing so, and will do it in an environment that supports his objective, his timing, and everything else idiosyncratic about him.
Anything outside of those design boundaries we term "edge cases." The result is often a design that works great when it works and that really sucks when it doesn't.
I admit that I laughed at the cow joke, but it was a nervous, could-this-be-me laugh. Maybe because in my Agile zeal, I try to avoid over-thinking the solution at the front end. My scenarios are happy paths that lead to success.
But I'm going to stop and pause more and ask myself, "How can someone do this wrong?" Anyone have any experience or ideas on how to implement that step systematically in an Agile model?