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 cooperation.
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."
