Professional Documents
Culture Documents
Methodology
A simplistic approach to address most non-Agile
pain points
Ravi Warrier
ravi@raviwarrier.name
August, 2007
Based on my experience with projects, its teams and the customers and by doing a simple analysis of
what are the most common pain points of these three entities, I have come to an approach that can be
applied in the world of Offshore Contractual Software Development (OCSD). By OCSD, I mean all IT
companies in the world that provide services such as software development, testing, or maintenance of
existing systems to external customers that are not located in the same location (most commonly – in
another country).
I came up with this approach by simply collating a list of all the problems that the customer and the
vendor teams would want to do away with, thereby benefitting from its absence. I took the 6 most
common problem statements (and presumably the most troublesome) from the list to derive this
methodology.
Deliver Frequently (Also known as ‘Small Releases’ in Extreme Programming and ‘Frequent Delivery of
Products’ in DSDM).
This practices suggests that you have frequent releases of “potentially shippable software” that allows
the customers to see gradual (and incremental) progress during the execution of the project. The
frequency is suggested to be between 1 – 4 weeks in length and at the end of every such period some
functional piece of software must be delivered or demonstrated to the customer.
This is possible with the adoption of iterative and incremental development approach.
The frequency at which release are made also depends on the volatility of requirements. Higher the rate
of change requests, shorter should be the duration.
Optional Practice
Whole Team – Extreme Programming (Also known as ‘Active User Involvement’ in DSDM)
This practice involves not only the project team members, but also Customer teams and End Users in an
active dialog to verify and validate the progress.
Daily Scrums, Sprint Retrospectives – Scrum (Also known as ‘Continuous Improvement’ in Extreme
Programming)
The purpose of this practices is to communicate – ‘What works’ and ‘What Could Work Better’.
Daily Scrums are internal team meetings where the team members inform each other on task updates
and problems they faced. Sprint Retrospectives are done at the end of iterations to identify good
practices and problems that can be avoided in future sprints. Thereby, fine tuning existing processes to
work better.
Must Have Practice (Set Three) – Right Features for Best Business Value
Design Improvements & Simple Design – Extreme Programming, Fitness for Purpose (DSDM)
Constant design improvements during the life cycle of the project help identify unnecessary
functionality and also prioritize features that would result in higher ROIs for the customer. Weeding out
dead weight from the project will result also in higher productivity and better quality.
This can be done as a part of planning or retrospective meetings by the team involving the customers
and end users. Demos at the end of iterations also help the customer/end users to realize what is
important to them and what is not.
Must Have Practices (Set Four) – Increasing Quality
Code Standard – Extreme Programming, Continuous Testing – Extreme Programming (Also known as
‘Integrated Testing’ in DSDM)
Defining Coding Standards and Guidelines for project teams to follow will help in standardizing and
maintaining the quality of code. Practices such as continuous testing allow project teams to identify
defects early on during the development compared to the late detection of defects as in the Waterfall
model.
Optional Practice
Pair Programming – Extreme Programming
Another method of organizing development teams is to pair programmers to work together on the same
piece of work on one terminal that is shared between the two. One writes the code (called the driver),
while the other one reviews it in parallel (called the navigator). The pair takes turns in playing each role.
This pair is also rotated on other tasks. Two of the primary advantages of this practice are that two
minds work on the same code resulting in better logic and the fact the code is reviewed as it is written,
resulting in better code sooner.
Must Have Practices (Set Five) – Sticking to Planned Effort and Schedules
Optional Practices
Self Organizing/Managing Teams – Scrum (Also known as ‘Empowered Teams’ in DSDM)
Giving the team the responsibility of planning and estimating may not be enough. It is advisable that the
team is also empowered to meet their commitments. Hence, having a self managed team proves
beneficial to the project.
Product Backlog – Scrum (Also known as ‘Base-lining Requirements at a High Level’ in DSDM)
Sprint Backlog – Scrum
A Product Backlog is a list of all functional and non-functional requirements of the project. It may also
include tasks that need to be carried out to clear impediments or resolve dependencies. Having a
product backlog allows the team to see a larger picture, though only the requirements that will go into
immediate production need to be detailed.
A Sprint Backlog on the other hand is a sub-set of the Product Backlog and contains only those
requirements/tasks that the team is undertaking for the current iteration.
While the iteration is in progress, the customer (Product Owner) is free to modify all product backlog
items except those that have moved to the sprint backlog.
As mentioned above in practices set one, if the requirements volatility is high, then it is better to have
shorter durations for iterations.
As you might have noticed, even though the practices are categorized as per the problem statement it
immediately solves, it also would help reducing or eliminating other problem which might not figure in
the List of Six.
Disclaimer
These practices have been borrowed from various agile methodologies, but each of these
methodologies has more practices that it suggests implementation. And since, we do not in this
concoction of practices implement all practices of a particular methodology; we should not claim to be
practicing that methodology. However, by taking a dose of this mix, you can claim to be “agile”.
All credit for defining the above practices go to organizations of respective agile methodologies. But
however, I take full credit for this tangy cocktail!