The Scrum process begins by reviewing a product backlog with the product owner. You identify the highest-priority features and then estimate how many will fit into a sprint. These features then compose the sprint backlog. A sprint is a predefined period of time, usually 2 to 4 weeks, during which the team analyzes, designs, constructs, tests, and documents the selected features.
The team holds a daily status meeting, referred to as the daily Scrum, to review feature status. Individual team members answer these three questions:
- What have you accomplished since our last meeting?
- What will you work on today?
- Are you encountering any impediments or roadblocks in completing your work?
When a sprint is completed, the features are demonstrated to the customer, and the team and the customer decide whether additional work is needed or if the sprint work is approved to be released to a beta or production environment. Each sprint is followed by a retrospective during which the team lists items that went well or poorly; action plans are documented to keep the successes going and to improve the areas that performed poorly.
Some of the characteristics of Scrum are as follows:
- Discipline —Scrum is strict about time-boxing activities, compiling code daily, and team members being punctual and responsible.
- Three major roles —Scrum teams have a ScrumMaster, a product owner, and team members.
- Quality —Features are expected to be totally complete and deployable at the end of a sprint.
Scrum has a number of strengths:
- Prioritized delivery —Features are delivered in a sequence that ties to business value.
- Non-prescriptive on practices performed during a sprint —This is demonstrated by the fact that a Scrum/XP hybrid is the second most popular agile methodology in use. Many teams pull their detailed practices from XP while using the Scrum framework.
- Demonstrated success across the software industry —Scrum has been successful in multiple environments.
- Status transparency —The daily meetings expose the project status.
- Team accountability —Everyone signs off on the work that will be pursued during the sprint.
- Continuous delivery —Scrum delivers product features (commercial software or web portals) continuously.
Scrum also has some weaknesses:
- Scrum doesn’t want specialists. It may be difficult to quickly convert an existing team from a group of specialists to a group where anyone can perform any task.
- A Scrum team can’t be successful without a strong ScrumMaster, which makes the process highly dependent on one individual.
- Because Scrum is mainly a framework, the team still needs to identify the practices and methods to use within the framework.
Scrum is incredibly popular today—it’s almost become synonymous with the term agile development. Scrum provides a great, repeatable process that is well suited for product development and steady-state release management. In addition, a plethora of books, consultants, and other resources are available for those who pursue Scrum.
Scrum may be more difficult to use with teams that do one-off projects versus steady-state releases, or if a team has highly specialized resources and skill sets. In addition, the Scrum framework still needs agile practices inserted to support a complete development lifecycle.