Scrum is one of many "agile" approaches to complex projects. The basic idea is:
- Team commits to delivering a working product on a particular date (not more than 30 days in the future)
- Team builds the working product
- Team demonstrates the working product on the predetermined date
- Feedback from stakeholders is given to the team during the demonstration
One iteration of the above steps is termed a Sprint. Development of a product is the result of many sprints; however, at the end of each sprint, a working product is demonstrated and inspected.
Complex projects involve lots of uncertainty.
Scrum seeks to manage this uncertainty by focusing on short cycles of activity that result in a shipable product. The product must address a portion of the problem the project is designed to target.
These short cycles help manage uncertainty by:
- Providing a concrete picture of the status of the product, and
- Providing an opportunity to adjust development efforts based on changing market conditions and/or feedback from the demonstration of the working product
Uncertainty is addressed by upholding three tenants:
- Transparency - Significant aspects of the process must be clear to those responsible for the outcome. In addition to honest communication, a common vocabularly must be shared and understood by all participants. For example, a common definition of "done" must be shared by both those accepting the product and those delivering the product.
- Adaptation - If an inspector identifies a concern, the team should adapt in order to rectify the concern.
Complex projects involve lots of people. Scrum focuses on the organization of the Scrum team and the roles within the Scrum team. Team members serve one or more the following roles:
- Product Owner - determines what needs to be built. [In our case, this will be someone outside the team.]
- Product Owner Proxy - maintains close contact with the Product Owner in order to facility backlog grooming and communication.
- Development Team - builds what is needed and demonstrates that it is built.
- Scrum Master/Evangelist - promotes Scrum ideals and ensures the team is productive and constantly improving.
Separate team member should be assigned to the role of Scrum Master, Product Owner Proxy, and notetaker. These assignments should change each sprint so that each team member has an opportunity to experience each role in at least one sprint.
Complex projects involve lots of tangible things. These things include:
- Product backlog - A list of product backlog items (PBIs)1) to be integrated into the working product.
- Sprint backlog - A subset of the product backlog that the team has committed to delivering in the working product by the end of the Sprint, along with a plan (typically in the form of smaller tasks/sub-cases) for how the development team will accomplish this.
- Increment - The work product created during the sprint and demonstrated at the end of the sprint.
Complex projects involve lots of events. Scrum requires a specific set of events and proscribes a finite duration and purpose for each. Each sprint is composed of the following events:
- Planning - Results in a sprint goal and sprint backlog.
- Daily Scrum - daily meeting to synchronize development activities and plan for the next 24 hours. Focus should be on progress towards the sprint goal. Typically facilitated by the Scrum Evangelist.
- Review - Meeting to demonstrate product increment to stakeholders and receive feedback.
- Retrospective - Scrum team inspects the process used during the sprint and commits to adapt in the next sprint when appropriate.
1)A Product Backlog Item is a unit of deliverable work that can be completed in no more than one sprint. In order to be complete, the PBI must contain clear acceptance criteria.