Scrum enables the creation of self-organizing teams by encouraging co-location of all team members, and verbal communication between all team members and disciplines in the project. Three distinct roles are identified within the Scrum methodology:
- The Scrum master, who ensures the process is followed, removes impediments, and protects the Development Team from disruption
- The Product Owner, who represents the stakeholders and the business
- The Development Team, a cross-functional, self-organizing team who do the actual analysis, design, implementation, testing, etc.
The development cycle of a software project is broken into time boxed units which are called sprints. Common time frames for a sprint are a week or a month for larger projects. Every day within a sprint the progress of the project is evaluated.
Requirements for the final product are maintained in a list called the backlog (product backlog). In each sprint one or more requirements will be implemented (sprint backlog) after which the next sprint is started.
Scrum is facilitated by a Scrum Master who is accountable for removing impediments to the ability of the team to deliver the sprint goal/deliverables. The Scrum Master is not the team leader but acts as a buffer between the team and any distracting influences. The Scrum Master ensures that the Scrum process is used as intended. The Scrum Master is the enforcer of rules. A key part of the Scrum Master's role is to protect the Development Team and keep it focused on the tasks at hand.
The Product Owner represents the voice of the customer and is accountable for ensuring that the team delivers value to the business. The Product Owner writes customer-centric items (typically user stories), prioritizes them, and adds them to the product backlog. Scrum teams should have one Product Owner, and while they may also be a member of the development team, it is recommended that this role not is combined with that of Scrum Master.
The Development Team is responsible for delivering potentially shippable product increments at the end of each Sprint. A Development Team is made up of people with cross-functional skills who do the actual work (analysis, design, develop, test, technical communication, document, etc.). The Development Team in Scrum is self-organizing.
A sprint is the basic unit of development in Scrum. Sprints last between one week and one month and are a "time boxed" (i.e. restricted to a specific duration) effort of a constant length.
Each sprint is preceded by a planning meeting, where the tasks for the sprint are identified and an estimated commitment for the sprint goal is made and followed by a review or retrospective meeting, where the progress is reviewed and lessons for the next sprint are identified.
During each sprint, the team creates finished portions of a product. The set of features that go into a sprint come from the product backlog, which is a prioritized list of requirements. Which backlog items go into the sprint is determined during the sprint planning meeting. During this meeting, the Product Owner informs the team of the items in the product backlog that he or she wants to be completed. The team then determines how much of this they can commit to complete during the next sprint, and records this in the sprint backlog. During a sprint, no one is allowed to change the sprint backlog, which means that the requirements are frozen for that sprint. Development is time boxed such that the sprint must end on time; if requirements are not completed for any reason they are left out and returned to the product backlog. After a sprint is completed, the team demonstrates how to use the software.
A key principle of Scrum is its recognition that during a project the customers can change their minds about what they want and need and that unpredictable challenges cannot be easily addressed in a traditional predictive or planned manner. As such, Scrum adopts an empirical approach - accepting that the problem cannot be fully understood or defined, focusing instead on maximizing the team's ability to deliver quickly and respond to emerging requirements.
Each day during the sprint, a project status meeting occurs. This is called a daily scrum, or the daily standup. This meeting has specific guidelines:
- The meeting starts precisely on time.
- All are welcome, but normally only the core roles speak
- The meeting length is set (timeboxed) to 10 minutes
- The meeting should happen at the same location and same time every day
- During the meeting, each team member answers three questions:
- What have you done since yesterday?
- What are you planning to do today?
- Any impediments/stumbling blocks?
It is the role of the Scrum Master to facilitate resolution of these impediments, although the resolution should occur outside the Daily Scrum itself to keep it as short as possible.
Sprint review meeting
At the beginning of a sprint, a story review meeting is held in which the product owner runs through each of the stories he or she wants to be completed. This includes running through the requirements, background information and allows the development team to ask any questions that they may have.
Story planning meeting
After the story review, a story planning meeting is held. This meeting is where the development team discuss each story, plan out the tasks and decide how long each task will take to complete.
The sprint planning meeting has specific guidelines:
- Meetings should not be longer than an hour
- Meeting does not include breaking stories into tasks
- The team can decide how many meetings are needed per week.
At the end of each sprint, a retrospective meeting should take place.
- All team members reflect on the past sprint
- Team members identify what went well and what could have gone better
- Make continuous process improvements
Scrum of Scrums
Each day normally after the Daily Scrum a Scrum of Scrums takes place. This meeting allows clusters of teams to discuss their work, focusing especially on areas of overlap and integration.
- A designated person from each team attends.
- The agenda will be the same as the Daily Scrum, plus the following four questions:
- What has your team done since we last met?
- What will your team do before we meet again?
- Is anything slowing your team down or getting in their way?
- Are you about to put something in another team's way?