Position Paper
Scrum Development Process
Ken Schwaber (virman@aol.com)
Organization
Advanced Development Methods
Burlington, MA 01803
Date/Place: 16 October 1995/Austin, TX
Overview
New axioms in systems development are:
-
Small teams of competent individuals, working within a constrained space
that they own and control, will significantly outperform larger development
groups
-
Product development in an object-oriented environment requires a highly
flexible, adaptive development process.
We attempt, in this paper, to provide the outline for a new approach to
development, which takes these axioms into account. This approach is referred
to as the Scrum methodology, after the scrum in rugby -- a group responsible
for picking up the ball and moving it forward.
Scrum is concerned with the management, enhancement and maintenance
of an existing product, while taking advantage of new management techniques
and the axioms listed above. Scrum is not concerned with new or re-engineered
systems development efforts.
Product releases are planned based on these variables:
-
Customer requirements
-
Time pressure
-
Competition
-
Quality
The effects of these variables upon development projects are manifest in
the ever-changing release timing and content. A successful development
methodology must take these variables into account.
The Advantages of the Scrum Methodology
Traditional development methodologies are designed only to respond to the
above variables at the start of an enhancement cycle. Such newer approaches
as the Boehm spiral methodology and its variants are still limited, if
not as rigid, in their ability to respond to changing requirements.
The Scrum methodology, on the other hand, is quite flexible. It provides
managed mechanisms for planning a product release and then managing the
above variables as the project progresses. This enables organizations to
change the project at any point in time in order to provide a release appropriate
to the variables.
Object Oriented technology provides the basis for the Scrum methodology.
Objects, or product features, offer a discrete and manageable environment.
Procedural code, with its many and intertwined interfaces, is inappropriate
for the Scrum methodology.
Scrum Components
Components of Scrum Methodology:
-
Backlog: Product functionality requirements that are not adequately addressed
by the current product release. Bugs, defects, customer requested enhancements,
competitive product functionality, competitive edge functionality, and
technology upgrades are backlog items.
-
Release/Enhancement: backlog items that at that point in time represent
a viable release based on the variables of requirements, time, quality,
and competition.
-
Packets: Product components or objects that must be changed to implement
a backlog item into a new release.
-
Scrum teams: a team of several individuals responsible for implementing
a set of backlog items in a new release.
-
Changes: Changes that must occur to a packet to implement a backlog item.
-
Problems: Problems that occur and must be solved to implement a change.
-
Issues: Overall project and project issues that are not defined in terms
of packets, changes and problems.
Release Project Team
The team that works on the new release includes full time developers and
external parties who will be affected by the new release, such as marketing,
sales, and customers. In traditional release processes, these three groups
are kept away from development teams for fear of over-complicating the
process and allowing "unnecessary" interference. The Scrum approach, however,
welcomes and facilitates their controlled involvement at set intervals,
as this increases the probability that release content and timing will
be appropriate, useful, and marketable.
The following teams are formed for each new release:
Management: Led by the Product Manager, it defines initial content and
timing of the release, then manages their evolution as the project progresses
and variables manifest. Management deals with backlog and issues.
Development teams: Development teams are small, with each containing
equal numbers of developers, documenters and quality control staff. Multiple
teams of between three and six people may be used. Each is assigned a set
of packets (or objects), including all backlog items related to each packet.
The team defines changes required to implement the backlog item in the
packets, and manages all problems regarding the changes. Teams can be either
functionally derived (assigned those packets that address specific sets
of product functionality) or system derived (assigned a specific part of
the program for enhancement). The members of each team are selected based
on their knowledge and expertise regarding sets of packets.
Scrum Phases
Scrum has three phases:
-
Planning: Definition of a new release based on currently known backlog
-
Development: Development of the new release functionality, with constant
respect to the variables of time, requirements, quality, and competition.
Interaction with these variables defines the end of development cycles.
-
Closure: Preparation for release, including final documentation, pre-release
staged testing, and release.
Each of the phases has the following steps:
Planning:
-
Development of a comprehensive backlog list.
-
Definition of the delivery date and functionality of one or more releases.
-
Selection of the release most appropriate for immediate development.
-
Mapping of product packets for backlog items in the selected release.
-
Definition of project team(s) for the building of the new release.
-
Review and possible adjustment of backlog items and packets.
-
Estimation of release cost, including development, collateral material,
marketing, training, and rollout.
-
Verification of management approval and funding.
Development:
-
Meeting with teams to review release plans.
-
Distribution, review and adjustment of product standards.
-
Multiple sprints, until the product is deemed to be ready for distribution.
A sprint is: A pre-defined period, usually two or four weeks (based on
product complexity and degree of oversight desired). Sprint speed and intensity
are driven by the selected duration of the sprint. Each sprint consists
of each team performing the following:
-
Implementation: Defining changes needed for the implementation of backlog
requirements into packets, opening the packets, designing, developing,
implementing, testing, and documenting the changes.
-
Integration: Closing the packets, creating a demonstrable version of changes
and how they implement backlog requirements.
-
Review: All teams meeting to present work and review progress, raising
and resolving issues and problems, adding new backlog items.
-
Consolidation: Consolidating the information gathered from
the review meeting
into affected packets, including different look and feel, new properties,
etc.
Each sprint is followed by a review.
Closure:
When the management team feels that the variables of time, competition,
requirements, and quality concur for a new release to occur, they declare
the release closed and enter this phase. This phase prepares the developed
product for general release.
Release Estimating:
Our observations have led us to conclude that Scrum projects have both
velocity and acceleration. In terms of functions delivered, or backlog
items completed:
-
initial velocity and acceleration are low
-
as base functionality is put into objects, acceleration increases
-
acceleration decreases and velocity remains sustainable high
References:
Takeuchi, Hirotaka and Nonaka, Ikujiro. "The New New Product Development
Game." Harvard Business Review, January-February, 1986.
Bach, James. "Process Evolution in a Mad World." Borland International,
Scotts Valley, CA.
Coplien, James O. "Borland Software Craftmanship: A New Look at Process,
Quality and Producitivity." Proceedings of the 5th Annual Borland International
Conference, June 5, 1994. Orlando, Florida.
Kahn, Douglas R. and Sutherland, Jeff. "Let's start under-promising
and over-delivering on OT." Object Magazine, March-April 1994.
See the SCRUM Home Page for the latest
SCRUM developments ...
Business Object Design and Implementation