This is what the PO wants: the PO want the user story in the sprint and finished in it.
Theory vs. reality
There are a few things I need to explain or bring up before we go further.Most of the pitfalls we encounter are these:
- The user story is bigger than we thought
- The acceptance criteria grew throughout the sprint
- We came across things we didn't think of at first
- We needed more resources than we thought.
- The user story actually became clear in the sprint itself.
- The PO thought different about the finished user story than the developer
All these things happened to me and the teams I worked in. Of course there are uncertainties along the way but most of them can be taken away from the sprint easily.
Why was the user story bigger than we thought, how is it possible that we didn't predict the resources we actually needed? It's all in our own hands. I'll tell you why these things happen. The familiar workflow a feature is taken in and out the sprint is this:
- First, the customer wants something
- The PO takes a look at it and writes the user stories
- The user stories are in the backlog so they eventually are automatically taken into the sprint
- The team predicts/pokers its story points
- The team develops and tests and the user stories are done.
This looks like a logical workflow, I think to all of us, but it's not. It's too static to be applicable in reality. This doesn't work! What you need is more collaboration. This workflow comply if we were robots. But we are human and I'm glad we are. And humans don't act static. They surprise us on every occasion. And there are some hidden features within humans;
Humans and interactions
We all want the people to know that we fully understand the user story cause we are supposed to know everything about the program and we don't want to look stupid. We always tend to act better than we are.And what is also in our blood: we want to help the customer, and preferably as quickly as possible. We don't want anybody waiting for us.
We don't want to let the PO know that we don't know enough of the current situation in the software. We don't want him (or her) to know that it's pretty hard to understand what the user story fully implies. We don't want to say 'no' to the PO cause we love to say 'yes'! And we do. We always say 'yes' to the PO.
We don't like to look dumb or inexperienced. But when we are not feeling dumb and we are experienced, we lack to see all of the different angles of the story. We don't want to sit next to the tester to understand what he wants to test, because we can do that ourselves good enough. These are the most common human behaviors we encounter.