Scrum
is easily one of the most well-known and commonly implemented software development frameworks in the world. At its core, scrum
is actually an Agile
framework. However, scrum
is also technically a subset of Agile
, since scrum
adheres to a rather strict set of processes and practices.
In this article we'll dive deeper into the origins of scrum
, what the framework is in the realm of software development, how it is typically implemented, and a few potential advantages and disadvantages you may experience while using scrum
on your next project, so let's get started!
What is Scrum?
The word "scrum"
is most commonly used in the sport of rugby football. In rugby, a scrum
is a method of restarting play after a minor rule infringement has occurred, specifically in a situation where no advantage would be gained for the team that obeyed the rules. A scrum
is formed with eight players from each team linking together into three tight rows on each side, before facing one another with heads down and attempting to push the opposing team out of position. The ball is thrown into the tunnel
(the gap under the players), and the as the scrum
begins, both teams attempt to move the ball using their legs and by repositioning themselves, such that the ball emerges behind their team's formation and can be taken into possession. I'm no expert and this is a very rudimentary explanation compared to the full rules of a scrum
, which are far more in-depth and interesting, but this origin of scrum
from rugby transitions well into the use of the word within software development.
In the January 1986 issue of Harvard Business Review, two professors at Hitotsubashi University in Tokyo Japan, Hirotaka Takeuchi and Ikujiro Nonaka, published an article titled The New New Product Development Game, which emphasizes the importance of speed and flexibility when developing new products. In the article, Takeuchi and Nonaka detail the lessons learned from manufacturing practices, which they refer to as the "rugby approach,"
in which the team "tries to go the distance as a unit, passing the ball back and forth." The article even goes on to explicitly make use of the term scrum
to define these practices of pushing the team forward, which is considered the introduction of the term to modern software and project development.
A few years later, a software developer named Ken Schwaber began implementing the scrum
framework into software development practices within his company. Over the next few decades, the scrum
framework began to take shape, with the publication of books and guides outlining its use, including the definitive book by Schwaber and colleague Jeff Sutherland, The Scrum Guide. As it happens, the Guide provides us with a definition of what scrum
is: "A framework within which people can address complex adaptive problems, while productively and creatively delivering products of the highest possible value."
The Scrum Theory, Pillars, and Values
The theory of scrum
is focused on being an empirical process: a framework that attempts to gain experienced-based knowledge, then make decisions based on that learned knowledge. To meet that goal, scrum
is founded on three core pillars:
- Transparency: All relevant aspects of the project must be well-defined and visible to everyone on the team that shares in the responsibility for said aspects.
- Inspection:
Scrum Artifacts
must be frequently inspected, to measure progress towardSprint Goals
(both of which we'll discuss shortly). - Adaptation: If an inspector decides that an aspect of the project is failing to meet its intended goals, that aspect should be adjusted as quickly as possible.
The Scrum Guide also lays out the five key scrum values
:
- Commitment: Team members individually commit to achieving their team goals, each and every
Sprint
. - Courage: Team members know they have the courage to work through conflict and challenges together so that they can do the right thing.
- Focus: Team members focus exclusively on their team goals and the
Sprint Backlog
; there should be no work done other than through theirBacklog
. - Openness: Team members and their stakeholders agree to be transparent about their work and any challenges they face.
- Respect: Team members respect each other to be technically capable and to work with good intent.
Scrum Artifacts
A scrum artifact
is simply a representation of value or work to be completed, which is well-defined and should be transparently visible to all team members. There are three main types of scrum artifacts
:
Product Backlog
: This is thescrum
equivalent of awork in progress
list. TheProduct Backlog
is simply an ordered list of all items that are (or may be) necessary throughout the entirety of the software development life cycle. TheBacklog
acts as the definitive requirements documentation for the project. TheProduct Backlog
is maintained by theProduct Owner
.Sprint Backlog
: ASprint Backlog
is a subset of items from theProduct Backlog
that have been explicitly selected to be part of aSprint
.Increment
: TheIncrement
is the summation of allProduct Backlog
items that were successfully completed during a particularSprint
, added to the value of all previousIncrements
.
Scrum Team Roles
There are three primary roles within the whole of the scrum team
:
Product Owner
: This individual can best be thought of as the project lead or producer, and his or her aim is to maximize the value of the product by ensuring theDevelopment Team
produces the best possible work. TheProduct Owner
largely focuses on maintaining theProduct Backlog
Development Team
: The group of developers that actually produce the work defined in theProduct Backlog
into a functional and releasable iteration. TheDevelopment Team
should be self-organizing and fully independent from theScrum Master
.Scrum Master
: Acts as both the referee and coach for the whole team when it comes to the proper use and implementation ofscrum
practices and processes.
Scrum Events and Workflow
Day-to-day activities within the scrum
framework are all based around particular scrum events
. All events
are "time-boxed", meaning they each have a maximum duration. This helps to ensure that the development life cycle remains constantly adaptive and properly Agile
.
The scrum
framework defines five types of events:
Sprint Planning
: During this event, the entire team collaborates to define what theSprint Goal
will be for the upcomingSprint
. This is accomplished by answering two simple questions: 1) What work should be accomplished within the next month? 2) How can that work be completed? TheSprint Planning
session should be kept to a maximum of eight hours per month.Sprint
: The bread and butter ofscrum
practices, aSprint
is a one-month period in which a potentially releasable iteration is created (commonly referred to as a "Done"). In spite of the name, aSprint
is not anything like "crunch time." Instead, aSprint
is always active: when oneSprint
ends, the next immediately begins.Daily Scrum
: Every day, theDevelopment Team
meets for a maximum of 15 minutes to discuss the planned work for the next day.Sprint Review
: Following the completion of aSprint
, theSprint Review
is an event with a maximum duration of four hours, in which the entire team discusses theIncrement
results and makes any necessary changes to theProduct Backlog
.Sprint Retrospective
: At a maximum of three hours, theSprint Retrospective
occurs after theSprint Review
, but prior to the nextSprint
, and is a meeting for the entire team to decide on potential improvements that can be made general to practices or procedures for the nextSprint
.
Advantages of Scrum
- Allows for Rapid Prototyping: With a maximum of only one month to devote to any particular
Sprint Goal
,scrum
allows for rapid coding and development of ideas or components that may be experimental or may even fail, without severe worry or potential downsides. - Keeps Customers in the Loop: Since
scrum
is anAgile
framework and is highly iterative, customers are able to quickly assess progress and provide feedback throughout the entirety of the development life cycle. - Encourages Consistent Productivity: The daily meetings of
Daily Scrums
are a guaranteed way to get insight from all team members about their progress, so suggestions and guidance can be provided where necessary to keep development on track.
Disadvantages of Scrum
- Abundance of Meetings: Many people, particularly developers trying to maintain that sweet
flow
state, are unlikely to appreciate the need for numerous meetings, particularly theDaily Scrums
. - Potential Difficulty With Estimations: As with other
Agile
frameworks, it's quite easy to simply jump into a project and begin development without much in the way of planning. While this is often a benefit, it also means thatscrum
can often obfuscate the actual time and monetary costs of a project (or even aspects of said project), often until a few months down the line. - Requires Lenient Leadership: Since proper
scrum
practices emphasize the importance of separating the management ofDevelopment Teams
from roles likeScrum Master
andProduct Owner
, successful implementation ofscrum
requires that managers and leadership are able to trust theDevelopment Team
and give them the freedom they need to work independently.