SCRUM:
Saving Projects from Failing
By Nishant Menon
Stylus Systems is a Web Development company located
in Bangalore, India and serving clients globally especially in Europe
and North America.
In 1994, in the entire United States, 94% of the projects started were
eventually restarted. Of these, 84% failed to deliver the value expected
by their customers, either because they deliver software that has no relevance
in the time they were produced or simply because they did not produce
the software at all. The sad fact is that even by the year 2000, the figure
of restarted projects had only dropped to 72%.
This unfortunate state of affairs has affected all of us in some form
or the other depending on which side of the product development we stand.
To answer the obvious question of why, it is relevant to analyze the reasons
for why the other percentage of projects succeeded.
The most important criteria for the success of the projects have been
the user involvement (35.1%) and requirements management (24.1%). Surprisingly,
Proper planning, a consequence of both, contributed just 9.6%.
Any person involved in the software development process, has always known
that Newton's laws of Physics may have been applied here, knowing too
well that Murphy's Law played a more prominent role here! This is due
to the inherent set of undefined factors that are the base for most software
projects. While most heavy weight processes, such as Rational
Unified Process (RUP), try to bring about neatness and some semblance
of definable characteristics into the software process, most have failed
due to these factors.
Enter the SCRUM
The SCRUM, which you might have expected is not an acronym for any thing
but in fact, comes from the world of the sport, rugby.
Scrum
is the name of the formal conglomeration of forwards who bind together
in specific positions when a scrumdown is called in rugby. First used
to describe hyper-productive development in 1987 by Ikujiro Nonaka and
Hirotaka Takeuchi, this term has become almost synonymous with successful
agile processes. This article speaks about this process with out you having
to tear your hair in despair (but then if you are in the habit of doing
it, then go ahead).
What is an Agile Process?
The word agile means fast and an agile process implies a process that
is minimally loaded with activities that consume time and produce no visible
gains to the job that we are doing. In the world of software development
methodologies, this term means those processes that understand the inherent
uncertainties and do not encumber it with unnecessary activities that
are detrimental to the pace of the development process.
What is the spirit of SCRUM?
To quote the controlled chaos
web site:
1. Scrum is an agile, lightweight process to manage and control development
work.
2. Scrum is a wrapper for existing engineering practices.
3. Scrum is a team-based approach to iterative, incremental development
systems and products when requirements are rapidly changing.
4. Scrum is a process that controls the chaos of conflicting interests
and needs.
5. Scrum is a way to improve communications and maximize co-operation.
6. Scrum is a way to detect and cause the removal of anything that gets
in the way of developing and delivering products.
7. Scrum is a way to maximize productivity.
8. Scrum is scalable from single projects to entire organizations. Scrum
has controlled and organized development and implementation for multiple
interrelated products and projects with over a thousand developers and
implementers.
9. Scrum is a way for everyone to feel good about their job, their contributions,
and that they have done the very best they possibly could.
In short it is for the software development environment that is commonplace
- with features changing from the first day of the project, team members
swapping from one project to next without having done anything at all
in any of them etc.
To quote controlled chaos web site:
"A Scrum software project is controlled by establishing, maintaining,
and monitoring key control parameters. These controls are critical when
a software development encompasses an unknown quantity of uncertainty,
unpredictable behavior, and chaos."
How SCRUM works
Scrum is based on the concept of iterations. There are two nested iterations
at the end of which a feasible product appears. The inner iteration is
done every day and is called a scrum. The external iteration is done every
month (30 days- which, according to the proponents of SCRUM is the ideal
- neither long nor short- for a viable software to be developed).
The Basic Structure of a SCRUM Team
The team contains not more than 6 members and has a controller whose
name has some how got mixed up with chess expertise! The Scrum Master
(in contrast to the Grand Master) has complete authority on what the team
shall work on (This list on what features are wished for in the final
project and not handled by the current sprint is called as backlog list).
As they say, no man can have two masters, SCRUM believes that no external
agency is to be allowed to interfere in the work of the team during the
iterations and no external responsibilities be given to the team members
during this period.
Now for the modus operandi. The team decides what the functionalities
would be that they could develop in a period of 1 month.
SCRUM: The inner Iteration
Each Scrum Cycle is a daylong. At a specific time and at a specific place
every day the team convenes to be answerable by the Scrum Master. He asks
each team member the following 3 questions
- What have you done since your last scrum meeting?
- What has impeded your work?
- What do you plan on doing between now and the next scrum meeting?
Bingo, the meeting is complete, any help, idea etc. that's developed
in this meeting are discussed off-line.
SPRINT: The external Iteration
In a period of not more than 30 days the team meets the miles stones
that they had set for themselves and comes out of the sprint with a functional
product. Here is where the evaluators (clients etc.) come in to evaluate
the result and decide on the next sprint.
Conclusion
To quote Katz' Law:
"Men and nations will act rationally when all other possibilities
have been exhausted."
Thus after the experiences of trying to apply the ancient waterfall model
and similar stringent techniques to the inconsistent world of software,
SCRUM seems to be the final answer to the software world's prayer.
In fact, the current period is one of the most exciting of all periods
in the history of software engineering with processes such as XP
merging with SCRUM to provide a hybrid XP
@ SCRUM which has Scrum Management practices with the XP engineering
practices to form an interesting arena. Many other Agile processes such
as dX, FDDS etc. are performing better than the heavy weight processes
to such an extent that when projects using heavy weight processes are
in the verge of failure, the management always adopts processes such as
SCRUM to rescue it.
Thus, SCRUM is a step in the right direction aimed at bringing sanity
to the entire process of Software development and shall bring the realization
that there are no 'silver bullet' solutions in the realm of 'solutions
of the Software kind'.
Useful Links:
1. Scrum Home Page
2. Scrum Rules
3. Scrum: Living on the
edge
4. ADM's home page
5. Nonaka, Ikujiro and Takeuchi, Hirotaka The Knowledge Creating Company:
How Japanese Companies Create the Dynamics of Innovation (New York: Oxford
University Press, 1995)
|