Professional Documents
Culture Documents
Ravi Warrier
ravi@raviwarrier.name
August, 2007
Introduction
The intent of this document is to help readers understand “Agile methods” and how to change the
philosophies of existing traditional software development and align them to the agile movement.
While the agenda of the agile movement is clearly defined by various groups in terms of values’,
principles’ and practices’ definition; it is not very clear with respect to selecting the right approach to
adopt.
This document will try and propose an objective approach to decide what the right agile methodology
for your organization is.
Creating a Model
Practice(s)
Principle(s)
Value(s)
Intent
Figure 1: Evolution
The way to do this is similar to a typical task of analyzing business or delivery problems. One needs to
identify what are the key areas that raise most concerns. Categorizing them into buckets such as
‘Customer Satisfaction’, ‘Requirements Management’, ‘Quality of Deliverables’, ‘Meeting Deadlines’, etc
helps.
Asking the right questions is really important here as without the direction the questions (and answers
to them) provide, narrowing down and coming up with key problems would become a difficult
endeavor.
Based on the answers to the above questions, you will be able to judge which of the problems have
been a real pain in the neck for your project(s). By doing this exercise, you will also realize the root cause
of the problem, which in turn becomes one of the intent (key reasons) that attribute to the need to
adopt an existing delivery model or create a new one.
All the intents identified earlier can be attributed to one of the values that are mentioned above. And
each agile value has a set of principles and practices that extend it.
Selecting Principles
This is the easy part of this tumultuous journey. It’s a straight road ahead until the next bend.
Agile Manifesto has laid down 12 principles 1 based on the four philosophies (or values) mentioned
above. Each of the twelve principles may satisfy one or more values. And it is not rocket science to map
each of the principles to related values. For example, the following principles satisfy (either directly or
not) the agile value “Communication”. Remember, this can be entirely different based on your
experiences.
1
See Appendix A
Table 1
Principles are meant to have deeper underlying meaning which can of course be implied in satisfying
more than one value.
Each of these methodologies has defined a set of practices 2 dependent on the four agile values. Based
on the values that are important to your software development projects, you may choose to inherit and
practice what has been laid down by the methods listed above.
Or you might want to create a hybrid method on your own based on these practices or the ones defined
by you. Either approach is fine. But there are a few things that you would need to know while creating a
hybrid method for yourself.
2
See Appendix B for list of practices for Scrum, XP and DSDM
Each of the methods listed above satisfy all the four values of the
agile manifesto. What you need to consider when you implement
only a few of the practices of any methodology, is that while you
AGILE
are free to adopt selectively, you might not earn the
acknowledgement of adopting the method. For e.g., if you partially
practice XP, leaving out practices that do not cater to solving your
problems; you cannot claim to be executing XP projects.
Likewise, if your hybrid method does not satisfy all the four values
of agile manifesto, then to claim your method as an “agile
method” would be wrong.
While you have a choice of practices/methodologies to select from, the agile values are not on a platter
to choose from. It is all or nothing. In-betweens are your choice too, but then it cannot be called “agile”.
These are a few things that I’d suggest on your first venture into this new world of agile software
development.
Make sure that the team is well balanced in terms of experience and skills. A cross-functional team with
varied levels of experience works best.
Most pilots fail due to the fact that these practices are new to people and that they have to change
years of mindset which might not be easy at times. In such a case, you do not want a critical project as a
guinea pig for your experiments.
Give the team a breather
Do not breathe down the necks of team members of a pilot agile project. In fact, do not do this even
with the experienced teams. One of the core practices of agile is to have a self-organizing/managing
team. Don’t ask for daily or lengthy reports which will move the focus from development activities to
‘pleasing the management’ activities.
Another side to this coin (if you fail all the time) maybe to introspect and re-evaluate your need to go
agile or the method (especially if it is self-concocted) you are implementing. You might not have
selected the right methodology or set of practices.
If after everything it still fails, you might want to dawn on a realization that agile might not be for you.
Conclusion
Understanding agile or various methods based on it is not difficult. Implementing practices laid down by
such methods have their own complexities, but even that is not difficult. The most difficult part of
shifting is figuring out what works for you and how to start implementing it – paving the actual path.
Once the road is paved in the right direction, driving down it is never that big a problem.
Appendix A
• Our highest priority is to satisfy the customer through early and continuous delivery
of valuable software.
• Welcome changing requirements, even late in development. Agile processes harness
change for the customer's competitive advantage.
• Deliver working software frequently, from a couple of weeks to a couple of months
with a preference to the shorter time scale.
• Business people and developers must work together daily throughout the project.
• Build projects around motivated individuals. Give them the environment and support
they need, and trust them to get the job done.
• The most efficient and effective method of conveying information to and within a
development team is face-to-face conversation.
• Working software is the primary measure of progress.
• Agile processes promote sustainable development. The sponsors, developers, and
users should be able to maintain a constant pace indefinitely.
• Continuous attention to technical excellence and good design enhances agility.
• Simplicity – the art of maximizing the amount of work not done – is essential.
• The best architectures, requirements, and designs emerge from self-organizing
teams.
• At regular intervals, the team reflects on how to become more effective, then tunes
and adjusts its behavior accordingly.
Appendix B