When a product backlog item (PBI) is finished, there should be some product of that work that is independently useful to the business.
Let’s say the product owner wants to see a grid of all the accounts in their web application. You could break the development work down into product backlog items like so:
- PBI 1: Add a link to the administrative navigation that points to the accounts page
- PBI 2: Add a new action to the Accounts controller that returns a listing of accounts
- PBI 3: Add a new view
- PBI 4: Add a grid control to the view
- etc...
The problem with breaking the work down this way is that there’s nothing valuable to show to an end user after any one of these PBIs is done.
I’d argue that the work should be broken down into exactly one PBI like so:
- PBI 1: Show a listing of accounts
When this PBI is done, the product owner and any other concerned end users will know that something valuable has been added to the software.
I think some teams like the former method of breaking things down because it feels like they’re getting more “done” when they’ve completed a higher count of PBIs by the end of a sprint. The problem is that this definition of “done” is not one that matters to any end user of the software (and we work for them, right?).
The people that use your software don’t know what PBIs are and they certainly don’t care how many “points” you completed. They know you did something when they see a useful feature added to the software (in production, obviously).
Part of the spirit of Agile is getting the development team to think in the terms that users think and to think about value in the way the users think about value. When we write product backlog items as user stories, then we keep the focus of each one on atomic business value.