Offshore and Agile - Real Scenarios
|
A lot of heated debate is going on topics such as "Can
we develop software using an offshore model using Agile Methodologies?" This
article is my humble attempt to give more insight on this question using a
story to describe a real scenario with some assumptions and with not so real
people.
Introduction
John is just out of the board meeting where the agenda
was to discuss cutting down development costs so that funds can be better
utilised on advertising and marketing. The words "we won't be able to go for
second round of fund-raising if we don't get a prototype developed in 3 months
from now", from CFO's presentation, are still hammering in his head. John is
the COO of an innovative product company, which is going to be the next
Facebook. The technology they are planning to use for this product is
cutting-edge and it is not easy to find developers or programmers charging
nominal rates who develop software products using this latest technology
platform. The product prototype has been 40-50% completed by 2 developers,
working full-time for 5 months.
John has worked as a software programmer himself years
ago and had experienced offshore development when he was working for an
investment bank in late 90s. At that time, the bank had outsourced huge chunk
of software requirements to a company in India to save software development
costs. But this time the situation is different; the product prototype needs to
be developed in shortest time possible, and John's company is nowhere near the
size of an investment bank. Recently, John read about Agile software
development and how it works in short iterations to deliver working software
fast. He decides to outsource product prototype development, for 3 months, to
some company in India
that practices Agile and to keep this engagement for longer term if the
offshore company delivers the working prototype in the given time.
Now, the next to biggest challenge is to find an
offshore agile software development company in India, which has expertise in
cutting-edge technology and charges nominal outsourced hourly rates. John
prepares a list of criteria on the basis of which he feels he will be able to
select an offshore partner. The list is merely a copy paste from some book he
read on "iterative software development" a few days ago. The few points he
considers the off-shore development partner should have are:
1) experience of
doing one or more software projects using Agile
2) should have
worked on cutting-edge technology
3) should deliver
working software every 2 weeks
4) should be
approachable and cost effective
Selection
John prepares evaluation criteria and starts looking
for a software development firm through various websites such as Elance.com,
Guru.com, LinkedIn, and through his professional and personal contacts. The
evaluation criteria have items such as price, technical competence, cultural
fit, timely delivery, reliable process, and ease of communication. As someone
has well said, "A man is known by the company he keeps" so clientele too was an
important part of the evaluation criteria.
John shortlists few companies fulfilling the
evaluation criteria, having experience in iterative software development, and
having quality process certification. After rigorous search, spanning across
from introductory rounds on Skype to third party verification checks, which
went on for around 7-8 days, John zeroes on an offshore partner in India.
After formal discussions and necessary verifications,
John, along with CTO Sean, signs a commercial contract with Pankaj, COO of the
offshore development company. John further arranges a conference call on Skype
at 08:00 pm CST with Pankaj for formal team introductions and to discuss
product requirements and other technical aspects.
Pankaj is a very intelligent guy and has been involved
in Agile for last 3-4 years. Under Pankaj's leadership his company has grown
from 2 developers to 140 developers in just 2 years time. In the conference
call with John, Pankaj introduces himself and Deepak, to Sean and John, and
then explains the process his company follows for each project they get to
develop. He explains how they use an Agile Software Development Tool to keep
track of the requirements, tasks, defects etc and to measure team velocity and
project burn-down. Deepak is a trained ScrumMaster and will be leading this
project. Sean and Deepak discuss technology, architecture, schema and other
product details. Once Deepak becomes clear of the business scope he asks John
to send him code base repository access, use cases (requirements) and any other
documents prepared by the onsite team. The call is signed off after arranging
another call for next week, at 08:00 am CST where Deepak will discuss first
iteration plan outlining stories and estimates. Also, John and Sean express a
wish to meet the complete development team during this call.
Process
The next day, Deepak receives emails from John
regarding the product. He studies product requirements, checks source code,
prepares his development machine, creates new project on an Agile tool - Scrumy
- and creates enough stories for the product backlog. On the second day Deepak
builds his team, explains the product to the team and organises a meeting to
discuss stories and estimates. The team has 3 developers and 1 QA. During
meeting the next day, the team estimates each story and Deepak updates stories
on Scrumy with the estimates. In the evening Deepak sends out an email to John
and Sean (cc: Pankaj) with their login details to Scrumy asking them to provide
their feedback and to prioritize the stories.
Once stories are accepted and prioritized by John,
Deepak will pick stories with high priority and will create iteration1 lasting
for 2 weeks. All the stories are estimated relative to the story that would
take the least time to get developed. Each story estimate considers unit
testing and acceptance testing time taken.
The next week, during the conference call Deepak
introduces team to John and Sean. All team members introduce themselves with a)
background b) experience and qualifications c) Agile experience. Sean discusses
both technical details and business scope of the product with the team to make
them comfortable. John asks Deepak for weekly demonstrations to feel
comfortable and remain updated about what's going on, every week, at other side
of the world. Deepak agrees to weekly demonstrations considering it as a good
opportunity to gain John's trust and signs off the conference call after
arranging a weekly call every Friday at 08:00 am CST for next 3 months. Deepak
creates a wiki account for this project on company's wiki server, and posts all
documents, conference calls transcripts on it. An email is sent out to both
onshore and offshore teams with everyone's Skype accounts and cell phone
details.
The first iteration starts on Monday with a daily
morning standup meeting where Deepak asks each team member to mention stories
he/she will be working on today. The meeting goes on for 15-20 minutes, and
after the meeting each team member logs on to Scrumy and updates it after
picking stories. At the end of each day the team commits source code changes to
code base repository. Deepak then reviews the code, prepares new builds after
verifying all unit and acceptance tests pass and updates wiki with standup
meeting report.
On Friday, during the scheduled conference call, the
team demonstrates stories done during first week of the iteration to John and
Sean. John and Sean point out few defects and minor changes during the
demonstration, for which Deepak creates tasks on Scrumy. After the
demonstration a short retrospective meeting is held where team discusses issues
faced and the changes that should be brought in to resolve those issues.
Issues
On Monday, the first day of second iteration, John, in
his office, is impatiently waiting for Deepak to come online on Skype as he
wants to discuss an important change in some use-case which has been just
discussed with the sales team; hence approved by the board. Teams in offshore
delivery model often have to face this issue of time management where the one
team is dying to speak to the other team but it can't happen just because when
one team is in its office the other team is in its bed.
After waiting for couple of hours and without
realizing the time zone difference John gives a call to Deepak on his cell
phone. It is just thirty minutes to midnight in India and Deepak is having a good
sleep after a tiring day at work. Deepak picks up his cell phone and just asks
John "politely" to discuss all this with him tomorrow morning his time. John
didn't like Deepak's approach and drops an email to Pankaj asking to end the
contract as he is finding it hard to communicate with the offshore team in case
of urgency.
At 12:30 in night Pankaj's Blackberry wakes him up, he
reads John's email and gives him a call on his cell-phone. After discussing
what happened, Pankaj assures John of some solution and arranges a meeting with
him early morning, where the matter will be discussed with Deepak and a viable
solution will be derived.
Deepak receives a call from Pankaj early morning at
6:00 am where Pankaj discusses with him what happened last night and asks him
to be on Skype meeting at 7:30 am with John.
A protocol is proposed which offers a solution to most
of the pain points both the teams had discussed in the meeting:
1) In case of an urgency
Deepak and John must be approachable from 6 in the morning till 12 midnight by
viable means of communication.
2) If there is any
requirement change during an iteration, which might effect current iteration,
then it must be addressed in an urgent meeting, and the current iteration must
be frozen or current iteration must be modified to address this urgent change.
Also, both product and iteration backlogs must be updated.
3) Deepak must
overlap 2 working hours with John, and stay online on Skype.
4) Deepak must send
a weekly report to John on:
1. What was done
this week.
2. What will be done
next week.
3. Any issues which
might effect team's velocity and product's burndown.
On Tuesday morning, after the meeting with John and
Pankaj, Deepak asks the team to study requirement changes and to come up with
estimates. Fortunately, in couple of hours the team gives an estimate of 10
story points to do requirement changes. Deepak updates Scrumy with new stories
and related tasks, drops an email to John to prioritize these new tasks and to
suspend those current tasks he feels not important to this iteration, and asks
the team to keep on working on current tasks while he waits for John to update
Scrumy. By Deepak's Tuesday evening John prioritizes the new tasks, and calls
Deepak on his cell-phone to ask what next. Deepak explains John that the team
will pick new tasks against the suspended tasks of equivalent story points.
John agrees and asks Deepak for demonstration on Friday before leaving the
call.
Outcome
Pankaj receives a call from John where he expresses
his feeling of being impressed with the derived solution, with the tool Scrumy,
and with Deepak's use of wiki and Scrum process. John wishes to meet the team
in person. After 3rd iteration John takes a flight from New
York to India,
and stays for 2 days with the team where he watches them working.
During his visit to India John discusses a long-term
engagement with Pankaj.
The team delivers first working prototype in 2.4
months (10 weeks) than expected deadline of 3 months and the initial team of
four increases to double the size in just 4 months time.
Conclusion
Agile doesn't mean to follow the iterative cycle
stringently but it means to work in collaboration with customer and deliver a
fast high valued working software at the end of an iteration. Offshore Agile
software development model allows companies to innovate and mould processes in
the benefit of both customer and team so that a win-win situation is created at
the end for both. The real scenario in this article is an example of "Yes!
Offshore and Agile can go hand-in-hand".
About the Author
Chetan Mittal has overall 8 years professional experience in software
development and consulting, and heads Mortar Systems (http://www.mortarsystems.com) - an Agile
web development and product engineering shop. He has lived in both India and
Australia, and is MBA from Melbourne Business School. He is one of the first
RubyonRails professionals in India, and loves providing innovative solutions
with latest cutting edge technologies. His career has seen him in roles ranging
from hands-on-development, leading teams/projects to developing and managing
business. Chetan blogs at http://www.chetanmittal.com
|