At the end of a Sprint, the team presents the product increment that it has built in the form of a demonstration of the product working as it exists at that time. The Product Owner, customers, users, management, and other interested stakeholders inspect the Product and the progress toward the Product’s goals. Based on the Product Demonstration, adaptations can be made to the project.
During the meeting, everyone visualizes the demonstrated product functionality working in the customer or user environment. As this is visualized, they consider what functionality might be added in the next Sprint. The product increment is the focal point for brainstorming. As the team demonstrates the product increment, it helps the attendees understand the strengths and weaknesses of the product increments, and the difficulties and successes experienced delivering it.
Product Demonstration Rules
- Functionality that is not Done cannot be presented.
- Done means the code has been tested, checked-in, and tested in the context of the product.
- Done means that everything that people can think of for their software to be maximum quality and shippable
- Done means there is no known newly-created technical debt being carried forward that has not been explicitly agreed to in advance in conversations between the Team, Product Owner, and any other stakeholders (other Teams, Technical Architects, etc.).
(Technical debt is the unfinished work the product development team accumulated from previous releases or Sprints. This debt can include (but is not limited to) design debt, where the design is insufficiently robust in one or more areas; development debt, where pieces of the code are missing, or known to be fragile or broken; and testing debt, where tests were not developed and/or run against the code. See also http://martinfowler.com/bliki/TechnicalDebt.html).
- Artifacts that aren't working software cannot be presented, except as needed to support understanding of the work products.
- Functionality should be presented from the Team members’ workstations, and executed from the environment that is closest to production - usually a quality assurance environment.
- Stakeholders can identify functionality that wasn't delivered, or wasn't delivered as expected, and request that such functionality be placed in the Product Backlog for prioritization, as well as identify any new functionality that occurs to them as they view the presentation, and request that the functionality be added to the Product Backlog for prioritization.
- Ideally, the Team should not spend more than an hour preparing for the Product Demonstration.
- Stakeholders are free to voice any comments, observations, or criticisms regarding the increment of potential shippable product functionality between presentations.
Product Demonstration Agenda
- The Product Demonstration starts with a Team member presenting the Sprint goal, the Product Backlog committed to, and the Product backlog completed. Different Team members may discuss what went well and what didn't go so well in the Sprint.
- The majority of the Product Demonstration is spent with Team members presenting functionality, answering stakeholder questions regarding the presentation, and noting changes desired.
- At the end of the Product Demonstration:
- The stakeholders are polled, one by one, to get their impressions, any desired changes, and the priority of these changes.
- The Product Owner discusses with the stakeholders and the Team potential rearrangement of the Product Backlog based on the feedback.
- The ScrumMaster asks the Product Owner if she or he would like to ask for a Release Sprint to implement the demonstrated functionality, alone or with increments from previous Sprints.
- The ScrumMaster asks the Product Owner if she or he will authorize another Sprint for the Team to continue the Project.
- The ScrumMaster announces the place and date for the next Product Demonstration to the Product Owner and stakeholders.
Other possible Product Demonstration results
- As needed, the Product Owner will:
- Restore unfinished functionality to the Product Backlog and prioritize it.
- Remove functionality from the Product Backlog that the Team unexpectedly completed.
- Reprioritize the Product Backlog to take advantage of opportunities that the demonstrated functionality presents.
- The Product Owner may also:
- Choose not to proceed further with the project, and not authorize another Sprint.
- Request that the project progress be sped up by authorizing additional Teams to work on the Product Backlog.
- Work with the ScrumMaster to reformulate the Team.