To my understanding there is a frustrating misunderstanding of reality when one thinks that the Product Owner can reject a single story at the Sprint Review.
Oh the Product Owner can reject the assertion of the Development Team that they have completed it and have them re-estimate it and stick it back on the backlog. They can decide to postpone deployment until the next Sprint. They can even decide to reject the entire Sprint and lose all of the work done in that Sprint. My point is that it is neither physically nor technically possible to remove a single PBI from a Sprint without incurring significant rework.
This is the reality of product development that gets in the way of the idea of the rejected backlog item. The software that we are producing is complex. If we are creating a Sprint Goal and selecting backlog items that help us achieve that Sprint Goal then they are probably inter-related. These inter-related items will likely build on and reference each other’s functionality. If we then decide to rip one of the nodes out of this complex web of classes and methods then we are increasing risk and we are also unlikely to have working software at the end of the Sprint. Oh, I am sure that there are exception, but it will take time to remove no matter how good the teams engineering practices.
Just to be clear, this is not about Done. I expect every team to produce work that meets whatever definition of done that they have agreed with the Product Owner. If the Development Team calls Done when they are not then that is a wholly separate problem…
Missing the point
Not only that but you may be missing the whole point of the Sprint Review. It is not about acceptance or rejection of the increment by the Product Owner but instead it is about discovery and understanding between the Product Owner and the Development Team. It is one of the key inspect and adapt points for the Product Backlog. The Product Owner, being human, perhaps had a picture of what they wanted in their head that does not match what the Development team has produced. In this case they need to work with the Product Owner to update the backlog with the changes that are now need to make it what the Product Owner envisaged.
So it meets “done”, it meets the acceptance criteria and it is still not what the Product Owner wanted. Is this the Development Teams fault? Of course not… it is a learning point, and inspect and adaption of understanding between the Product Owner and the Development Team. The Product Owner learned how the Development Team interpret their Stories and the Development Team learned something about the Product Owners intent. This is intensely valuable learning for the Scrum Team as a whole.
There are only three actions open to the Product Owner at the Sprint Review:
- Update the Product Backlog to reflect what we now need to do to achieve the vision
- Choose to ship the current increment or not
- Choose to end the project or continue
Note: Although Ken suggests that the existing PBI that was not completed should be re-estimated and put back on the backlog this is not optimal for reporting. I recommend zeroing out the points (the team gets no points for incomplete items) and adding new PBI’s to the backlog to reflect the undone work.
Making it easier
All of that being said it is the job of the Development Team to make things as flexible for the Product Owner as possible. They should implement what capabilities that they need into each increment to make it possible for them to turn a new feature or layer to an existing feature off an still ship. This will not only make the Product Owner happy, it will get the newly built features in front of the Stakeholders as quickly as possible for feedback.
There are a few things that can make this as easy as possible:
- Communication – Good communication between the Product Owner and the Development Team can help alleviate these sorts of issues. However continued interfering in the Development Team by the Product Owner will make it harder to deliver what was estimated. The Development Team should deliver their understanding of what the Product Owner presented to them at the Sprint Planning meeting while collaborating where timely and appropriate.
- INVEST– Making sure that your PBI’s are all follow the INVEST [Independent | Negotiable | Valuable | Estimable | Sized appropriately | Testable] model. If you follow this guide then you can minimise any misunderstanding between the Product Owner and the Development Team.
- Feature Flippers – The single most valuable thing in your developers arsenal is the ability to turn the things that you are adding on and off at will. This should be applied both to a feature and the multiple layers of that feature that are added with each pass delivering PBI’s. You may think of each PBI’s as requiring a switch to be able to turn it on or off. It is usually not perfect as there are some things that are iteration of the same feature. More advanced implementations may allow you to enable or disable features by account or user.
If you can do all of these things as they will all add value by making it easier to give the Product Owner flexibility.
Although the Product Owner can’t reject a single item of work they can reject the assertion of the Development Team that they have met “Done”. If the Development Team is not “Done” at the end of the Sprint then this is Technical Debt that is going to interfere with your Product Owners schedule for the next sprint and make them grumpy. If it is “Done” but is still not quite what the Product Owner envisaged then the Product Owner and the Development Team can then work together to update the Product Backlog to reflect what now needs to be done to implement the Product Vision. This is empirical inspection and adaption at its best and is one of the key values derived by the process.