A lot of heated debate is going on topics such as "Can we develop software using an offshore model with 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:
- experience of doing one or more software projects using Agile
- should have worked on cutting-edge technology
- should deliver working software every 2 weeks
- 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, 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.