Introduction to the "Scrum" Software Development Process
"Scrum" is not an acronym, and instead the name comes from a type
of rare, in-game meeting used by soccer team members to do
medium-term planning. Instead of dividing a big project into
separately-developed pieces (which must be integrated at the end),
or splitting the project temporally into a series of stages done
different groups (where there is a handoff of responsibility from
design, to implementation, to testing, etc), the idea behind Scrum
is to create a stable team that handles the entire project through
a series of atomic steps called "sprints". The endpoint after each
sprint should be a "Potentially Shippable Increment" (PSI), which
is a working, stable, fully-documented piece of code that
implements a subset of the features required in the complete
project.
For example, suppose the overall project goal is to build a
house.
- You could organize the work by splitting the project into
separate tasks completed by different individuals: (1) someone
builds the walls in his factory, (2) another person builds
the roof in his factory, etc. Then late in the process all of
these sub-assemblies are brought to the site for integration and
testing -- where someone has to make them fit together
correctly, making last-minute modifications as necessary. (BTW,
this is basically how commercial airplanes are built today.
Early in the process, large sections of the plane are given to
different sub-contractors to design and build -- sometimes in
other countries.)
- You could organize the work into sequential stages involving
different types of specialization, such as: (1) building the
wooden framing, (2) adding the plumbing, (3) adding electrical
wiring, (4) covering the walls with drywall, (5) painting the
walls, (6) installing the flooring, etc. In this case, there is
a "hand-off" of responsibility between stages, so the framer
never hears that one of his decisions made it needlessly
difficult to install the plumbing or get the drywall to lay
flat. (BTW, this is basically how large-scale developers build
subdivisions, with different tradesmen visiting each house under
construction in the right order.)
- You could organize the work the way I've seen it in the Middle
East, where extended families build homes incrementally with
their savings, because banks do not loan enough money to
complete the entire house at one time. Thus, the family
starts by digging a hole in the ground and building concrete
walls and floor inside to form the basement foundation. Once
this underground space is covered by the floor of the future
house, the family can move in and live there until they have
saved up enough money to build a livable section of first floor,
and so on. THIS is basically how Scrum would handle the
work!
I am not a Scrum expert, so there is no reason for me
to create yet another overview of how Scrum works. Here are
two excellent (and free!) sources to help you get started:
Wikipedia
article on Scrum
The Scrum
Primer