Home arrow Spotlight arrow Articles arrow Agile Using Offshore Development: The Costs and Risks
Agile Using Offshore Development: The Costs and Risks PDF Print E-mail
User Rating: / 1
PoorBest 
Written by Kevin Coleman   
Sunday, 07 September 2008
sep08offshorebig
With today's economic pressures coupled with a highly competitive business environment, management is aggressively pursuing ways to increase effectiveness and efficiencies at the same time as they strive to improve customer services.  For these reasons many organizations are trying to integrate offshore development into the Agile projects.  Offshore development has seen tremendous growth in recent years.  The efficiencies gained by combining these two methods could be significant, but there are some pot-holes on the road to success. 

Distributed communications, time zone differences, language and cultural barriers, security problems, lack of direct interaction with the business subject matter experts are just a few of the challenges faced when combining Agile and offshore development.  All of these challenges are significant and require directed effort if they are to be overcome. 

Most off-shore development organization have standardized on the traditional waterfall development as their methodology.  These more traditional methods define tasks that have to be done on a large scale, classically organized project. These traditional development techniques tend to run contrary to the fundamental concept of Agile.  In Agile there is always a working product which is incrementally improved at the direction of the customer as the learnings are extracted during the demonstrations.  Traditional methods set hard and fast requirements upfront.

The Hybrid Model
Many organizations have tried combining these techniques with varying degrees of success.  The following graphic illustrates one approach that has worked well in the past.  By no means is this meant to say that's the only way you can be successful with and Agile/Offshore - Agile/Waterfall approach, but it is a very common way found in today's environment.  That being said the success using this approach still rests in cooperation and flexibility among the onshore and offshore teams.

kc0908

The Agile initiation process remains the same and a project baseline is established.  The baseline defines the parameters of the project, standards, technology architecture and other fundamentals that each interaction will be built upon.  Often time this work takes place in what has been called Sprint 0.

In this hybrid model Sprint 1 is the first real iteration in the project.  The onshore team works directly with the business user/subject matter experts to define functional requirements.  Once these function requirements are in sufficient detail, they are entered in the function back-log. The function backlog is an inventory of capabilities that must be designed, developed, tested, and accepted by the key stakeholder(s). 

The Problem
The offshore development team looks at this inventory, evaluates the requirements, size, complexity and effort required for each component in the inventory. Based on these estimates and the size of the development team the onshore and offshore team define and then refine what functionality will be delivered in the Sprint.  Once the definition of what will be delivered is agreed upon, the development process begins.  This is where the problems start.  Most offshore development houses use rigid methodologies.  Even the ones that claim to use iterative development approaches like Agile really don't.  They are driven by a Sprint task list and want every aspect of the software locked down tight.  As the Agile methods progress through what has been called an iterative discovery process using demos and proof of concepts, new requirements are uncovered.  This becomes very costly, as billable hours are spent rewriting code and estimating the newly discovered requirements and changing schedules.

But it gets better.  Many hybrid (Agile/Traditional) projects use time-box management techniques and call it Agile.  Time-boxing is a technique that fixes the time spent on a given task or set of tasks.  Once the time-box is established, the development staff does the best that they can to stay within that time frame. So instead working on something until it is completed, as is the case with typical waterfall development, the offshore team only works on it for say, 5 days. At the end of those 5 days the work is either completed or is placed in the backlog inventory to be addressed at a later date, or replaces other functionality that was originally scheduled in the Sprint.  The reason this is done, is that the costs have now changed to implement this piece of functionality and needs to be re-evaluated by the onshore team.


Example 1:  In one specific instance, the offshore team increased the hours estimate about 1/4 of the way thru the Sprint.  When asked for an explanation they said, "they did not include any time in the estimates for proof-of-concepts, prototypes, demos or code reviews."  Isn't AGILE all about proof-of-concepts, prototypes, demos?  This just proves the offshore team really did not understand the Agile approach development. 


The waterfall development process begins with each requirement broken down into functions.  Each piece of functionality treated as a line item on the Sprint task lists.  As the software is coded and becomes functional, it is walked through with the onshore team, business user/SME as well as the key stakeholder.  This is where the offshore development team gets feedback thus clarifying capabilities that were "sort-of" delivered.  The customer's comments are integrated back into the design or deferred, and are addressed later.  If they comments and clarification are integrated back into the design, the rework is estimated, change orders issued and the cash register rings again. 

Another hybrid technique replaces traditional reviews with functional demonstrations.  As the work progresses, feedback from the onshore team, business user/SME as well as the key stakeholder is received the feedback is integrated or if it requires significant additional effort it is deferred and entered into the function backlog inventory and addressed in a later Sprint.  If the feedback is required at that specific time it is, you guessed it, added to the Sprint task list, the work is estimated, change orders issued and the cash register rings yet again.

As each item on the Sprint task list goes through the waterfall development process, the output is demonstrated and signed-off on by the key stakeholder.  At that point of the Sprint, the code based is integrated with other code produced during that Sprint.  Once the time allotted for the Sprint development effort has elapsed, all completed items are assembled into one code base.  At that point a formal Sprint review is conducted.   A formal Sprint review signifies the end of a specific Sprint.  The review is a step-by-step/functional piece-by-functional piece demonstration and walk-thru with the business users and key stakeholder.  During the Sprint review the delivery is assessed against the sprint goals and objects determined during Sprint planning. Ideally the team has completed the selected functions for that Sprint, but it is not always the case.  Since the Sprint review is the close of that iteration, official sign-off also takes place.  Implementing this formal review and sign-off process reinforces the wrap-it-up habit and avoids the hanging Sprint problem. 
 

Example 2:  In another specific instance, the offshore team basically refused to begin development until they had a formal specification document and functional test cases signed- off on by the customer.  In Agile, customer acceptance and approval to proceed is at every demonstration and functional walkthroughs.  Again the offshore team reverting back to traditional methods and failing to grasp the Agile approach.


A hanging Sprint is defined as an iteration that is 90% or above done but never completed.  The unfinished Sprints have been known to hang around for months.  The development team just doesn't seem to have time to go back and complete the work in that they have moved on to the next Sprint.

A Fact of Life!

Many organizations have turned to outsourcing software development projects in an effort to reduce their costs. Despite its benefits, outsourcing carries some unique risks. Forcing an offshore team to adopt and use a methodology that they are not familiar with increases the risk on the project.  In addition the fundamental and operational differences between Agile and Waterfall methodologies can and do create substantial cultural change requirements that can not be adopted in a short period of time.

The reduced structure and documentation of Agile create another risk.  This risk manifests itself in misunderstandings between the onshore requirements gathering team and the offshore development team as well as between the onshore requirements gathering team and the client's subject matter experts.  In addition, where the application area has regulatory compliance provisions the reduced structure and documentation can create significant challenges.  Often regulatory requirements mandate process documentation for audits and compliance reviews. 

A significant risk that is intensified when using the Agile development approach is in the area of scope creep.  Many times the user has difficult envisioning what is achievable while defining a new system.  Once they begin to experience the system through the iterative development demonstrations, the "tweaking" and "wouldn't it be nice if we could" requirements expansion begins to occur.  The best way to handle this issue is to push off the "tweaking" and "wouldn't it be nice if we could" to future Sprints and estimate the costs associated with them at a future time.  That being said, this does tend to cause increased work for both the onshore and offshore teams and drive the overall cost of the project higher.

Perhaps the biggest area of risk is based on the degree of interactivity of software developed in early sprints and the software scheduled for development in later sprints. Highly integrated application can become very inefficient if the requirements for one area of code change through various iterations, the same programming may need to be modified several times over. Whereas,  a more formal and complete program specification practices at the beginning, a single area of code could include much more if not all the needs of later programs and be developed with minimal modifications.  It basically provides a bigger picture.

Conclusion
There is no question that integration of offshore development into an Agile program can enhance the value to customers by reducing overall costs.  However, many offshore organizations have their traditional methodology engrained so deeply into their operations, it is next to impossible to get them to change.  Offshore development organizations tend to focus on hard requirement established upfront, but in Agile requirements evolve over time and change.   Agile and the use of offshore development that leverages the waterfall development is a tricky, risky, and sometimes very costly venture.  While combining the two different techniques is a bit more risky, it is far less risky that forcing the offshore development team to rapidly adopt a new methodology for development that changes their way of operating.  If the two parties are just beginning their business relationship, mutual trust has not been established and that is critical when combining Agile and tradition methods.  Organizations who decide to try this hybrid development model should first fully investigate and verify the offshore company's true Agile experience and capabilities.  For those who are considering the hybrid model, go into it with your eyes open.  Combining the two different development styles and approach create substantial risks.  You must consider those risks and weigh them against the potential time and dollar savings when making your decision.  Software development is tough - this hybrid model makes it tougher.


About the Author
Kevin G. Coleman is a seasoned management consultant with nearly two decades of experience. He brings with him a unique perspective on management, technology, and the global risk environment. He was the Chief Strategist for Netscape and has worked for leading consulting organizations such as Deloitte & Touche and CSC Consulting.  During his career he has consulted in dozens countries and thirty plus states. Additionally, he has personally briefed fifteen executives from the Global 100 and nearly 100 CEO's worldwide. In addition, he has testified before Congress on technology policies.

Comments (11)add feed
Anton: ...
Hi! Chetan Mittal,
Thank you for the advice. I had no idea that this group was using Agile Development when they started my project. They had to use SQL, CMS and Flash and they seemed to have the required qualifications. They failed to deliver mainly because they did not communicate with each other nor the business owner. When I questioned about the progress and a development plan then they advised me that they were using Agile Development (This was after 20 months into the project). At least the lead developer had a good knowledge of web development but did not have the skills of a good communicator. The sad thing is that the end result left me high and dry. I strongly believe that whatever methods you use, you should have a plan. To go from one point to another, you have to have a road map. To build a house, you need a Plan. Agile programming fits well for large companies that develop software for sale but may not sit well for small single owner projects. This was the mistake. The developers believed the project was easy to accomplish but they were discovering daily that it was more complicated than they thought. If they understood the business specifications from A to Z and had a plan up front, they would have never got into a mess.
1

October 06, 2008
Kevin: ...
All great points and most of these have already been considered. A few comments are way off base, but that is perhaps due to lack of clarity in my article. Given the amount of debate, I decided to go to an authoritative source. The source is a professor who teaches Agile. Below are the more striking comments.

1. “AGILE and CMM is like gasoline and water - they don't mix” and offshore is slightly less of a bad mix that that.

2. AGILE requires enhances interaction between team members and intensive collaboration – “I don't see how that can be achieved using offshore.”

3. Too many people take liberties and make changes to Agile and this is fine as long as “you do not change the fundamental concepts of Agile. Many organization grab the buzzwords and use them for marketing and really do not spend the time to understand adopt and train their staff on Agile.

So, in conclusion, I believe using AGILE combined with offshore increases RISKS that were reduced by the basic concepts of Agile. What does not work is CMM and Agile. The formal processes of CMM are the exact opposite of the “discover thru prototype/demo/POCs” processes of Agile.
2

October 03, 2008
Tom Looy: ...
I found a couple of things in your article that are not consistent with my experiences with Agile. First of all, the work on a story card is not time boxed - the sprint or iteration is time boxed. A developer is not supposed to stop working on a story card just because 'time ran out' on the estimate.

Secondly, if a sprint is not completed you don't just 'leave the sprint 90% complete' in hopes that you go back and finish it later. If there are story cards that were not completed in the previous sprint they are either played in the next sprint or put back in the backlog for re-prioritization. Most likely you will play those story cards in the next sprint as they should be the highest priority story cards left to complete. If they are not and they can be deferred for completion later, then why were they being played in the first place?

Third, Agile is not 'all about proof of concepts, prototypes and demos'. It's about getting working software that adds business value into production quickly.

If the offshore team really doesn't understand the fundamentals of Agile then they should not try to participate. Confusion will reign and things will be worse off than if they would have done traditional waterfall in the first place.
3

October 02, 2008
Jay Padinjaredath: ...
Kevin,

Some thoughts I had that you might want to consider:

What has been done to integrate the offshore or onshore teams? Did you have a Sprint 0 where the two teams met and worked together?
What about a permanent representation in either place? Perhaps on a rotation basis?

You say: "Once the definition of what will be delivered is agreed upon, the development process begins"

Having someone agree to deliver anything upfront even within a sprint will IMHO ensure that the people who commit to it will try to be overly pessimistic in what they can achieve. Its a lot more fruitful to develop trust upfront.

You say: "In one specific instance, the offshore team increased the hours estimate about 1/4 of the way thru the Sprint."

An estimate is an estimate, IMHO, leave it at that. Dont waste time re-estimating. Get people to do actual work instead. Once the trust is established everything else will follow.

You say: "The reduced structure and documentation of Agile create another risk. This risk manifests itself in misunderstandings between the onshore requirements gathering team and the offshore development team as well as between the onshore . . . "

Misunderstandings are common. Cross cultural communication is not easy. A lot of effort is needed to be spent on informal communication. And re "reduced" documentation. Agile requires just enough, you decide what just enough means.

If you have an issue with stories not being completed, they are either too big or their acceptance criteria has not been defined clearly.

You say: "There is no question that integration of offshore development into an Agile program can enhance the value to customers by reducing overall costs."

I am not convinced of this. Does it really reduce costs? Or is it management looking at the dollar rates and deciding? Have you measured the time that goes into the communication that would not be required otherwise?

You say: "However, many offshore organizations have their traditional methodology engrained so deeply into their operations, it is next to impossible to get them to change."

The key is to get a team that understands Agile well. Offshoring is not easy. When you make the decision to offshore, you might as well get someone thats good at it.

Thanks for sharing your experience.

Jay (blog.jayanthan.com)
4

October 02, 2008
Greg Willits: ...
I have worked with two offshore outfits. One worked well and suceeded, one I didn't care for. There was no claims of Agile in the latter, so not real relevant to this discussion. I inherited it, it was brief, and was a stereotypical relationship everyone hiring a crew prays to avoid.

The other project is one that I started, it lasted for about a year, and was successful. However, there are several contributing factors which I believe made it uniquely qualified for success.

1. The company we used is a (the?) leader in Agile methodology with several offices throughout the world. So, their Agility is well established.

2. We began talks with US-based people to establish the culture fit and the qualifications of #1. Originally we planned to start a US-based team, but there were a few factors that had us consider the Indian office.

3. The project was not very big, had been prototyped to a high degree, and over the course of several months during #2, our side had remained steadfast in the app's goals, design etc. It was a minimum concept to prove a business model. Scope creep was declared evil. This gave the contractors confidence that the project could be done with a remote team...with a couple of conditions.

4. I and one other person went to India for 3 weeks to embed with the team to launch the project. We had the opportunity to infuse the team with the business model, the goals of our project from a business perspective, and to talk about design. We made each of those first three weeks an iteration, so we could go through the entire cycle of an interation together a couple of times. Then we switched to two-week cycles.

5. For the first couple months, I altered my work schedule to be available during India time for most of their day. I like late hours anyway. After a while, I shifted to be available at least half their day to split my attention between US and India. By available, I mean I was working when they were, and we had an open chat channel at all times that typically was quite busy. We maintained a fairly high degree of open discussion IMO.

Lest ye think because of #3 the team wasn't allowed to inject new design... it was not so. We found several small weaknesses in the prototype and made improvements during development. They were a bright bunch with good ideas, and we took advantage of that within the scope.

The initial team size in India was 8 people, and the core project was completed in 5 months. After that we used from 2-4 devs to work on extensions for several more months.

I'm sure you can see that there were some exceptional conditions in this case, but nevertheless it did work because both sides recognized the conditions necessary to ensure it worked.

5

October 02, 2008
Chetan Mittal: ...
Hi!

I run an agile product development shop in India. I can understand your pain as I have seen this myself while working at another shop.

My advice is as follows:-

@Kevin - In the diagram if we try to break down sprint1 .. sprintn into two parts (sprint1-onshore, sprint1-offshore .. sprintn-onshore, sprintn-offshore) I think the problem gets solved. Because of different timezones, collaboration/communication levels, other outside factors there might be some delay/issue in delivery. So, there needs to be some process derived by taking care of these factors. Agile doesn't mean just blind-foldly and stringently following development cycle; it is to deliver high valued software by following processes which are in benefit of both the dev teams and stakeholders (customers). Solution - 1) divide sprint into 2 parts - sprintn-offshore starts 1-2 days before/after sprintn-onshore 2) get collaborating with offshore instead of complaining 3) get some daily/weekly demonstration process in place 4) start bringing members from offshore team onshore for 2-4 weeks so that they get comfortable with onshore team members

@Anton - I advice to select good team not cheap. Agile doesn't say not to prepare documentation, not to send execution plan etc. A Scrum Owner (Agile Product Manager) can prepare and send this. Team can send daily report to customer answering 3 questions - 1) what we did today 2) what we will do tomorrow 3) any problems we ran into.

@Tom - Yes, customers need to know how good the offshore team is. What processes they have in place. Customer making a visit at offshore dev center helps in gaining more insight.

@Kelly - If I might be of any help?

Cheers,
Chetan Mittal.
This e-mail address is being protected from spam bots, you need JavaScript enabled to view it
6

October 01, 2008
Anton de Silva: ...
Agile Development is yet another phase in the evolving concepts in programming. Who knows we might coin a word “Leap Frog Development” that might replace “Agile” Whichever method we use a good program is a good program and any program will have a short or long life cycle and will be replaced by another.
7

September 21, 2008
Anton de Silva: ...
My work life was mostly on business analysis and suggesting and implementing programs to automate work flow. The programmers used Agile Development even though they never called it such. I was part of the team when development took place.

Since I am retired now, I had given a group of four developers overseas to develop a website for my small company. I gave them comprehensive specifications of my requirements but I hardly ever got to know what they were doing. In short I was not in the loop. The developer kept on saying he was following the current website and my specifications but never gave me his plan of execution. When I started to see the site in progress, I was happy but still had no idea how it is going to work. I insisted on a plan of action and his reply was that he was doing Agile Development. He was critical of the Planning Concepts that I had advocated. I went looking for books on Agile Development and searched Google on the subject and could not find any convincing articles on Agile.

Recently I came across this book on The Art Of Agile Development by James Shore & Shane Warden (First Published on October 2007, it has great reviews) to acquaint myself of Agile Development. Other than the English Dictionary Explanation of Agile, the book does not give a specific analysis of the word. However it gives a comprehensive analysis of Agile Development. It is a good read for those who are interested in Agile Development.

Agile Development seems a word that is catching fire, especially in the younger generation even though it was a gradual development of programming that took place over the years. This is definitely the way we did business in the company I worked. The only thing was I was always a part of the planning group and was able to thrash out what was being done and nip any deviations in the bud. Since development, analysis and planning were going hand in hand you have to keep the Business Owner completely on the loop. Therefore there is a danger in using Agile Development in an offshore setting, especially when the development is for an individual entrepreneur and his business concept. My experience was that while I saw a great program being developed; the developers lost the final concepts and the program was never completed. A team of four developers could not see the final steps of the programs requirements. A three-week program dragged on for two years without an end in sight. All those who are contemplating using Agile Development for their work should read this book and the above article.

A word of caution to those who are using Agile Development by Offshore Developers, you have to make sure that the developers understand that it is your business and your money and your time that is being used by these developers. Since comprehensive planning goes on while the developers tackle the job and if you are not in the loop and no constant communication, then you are going to be in trouble.

8

September 21, 2008
Tom: ...
I am hoping that the client knew the offshore company had little or no experience in Agile style development. Most of them would not disclose this and either evade the topic or falsify their experience. I know of on such case where the consultants onshore and the offshore company are being sued because the lied about their capabilities in Agile and the project went about 60% over budget.
9

September 12, 2008
Michael Walkden: ...
You have a very good point that combining the two two methodologies is risky! However, until both companies have worked together on a project or two and the level of trust is established between them, I have never seen a traditionally waterfall organization complete an Agile project smoothly. Usually you have to determine which practices each company hold firmly to then creatively build the hybrid/mutual process from there.
10

September 12, 2008
Kelly: ...
I am living this issue right now - glad I am not alone. What’s the old saying misery love company?
11

September 11, 2008
Write comment


Write the displayed characters


busy
Tags:
Click to add your tags...,
 
< Prev   Next >






Lost Password?
No account yet? Register

Video News

 
Copyright © 2006 - 2008 CMC Media, Inc. All rights reserved. All marks are trademarks of CMC Media Reproduction in whole or in part in any form or medium without the express written permission of CMC Media, Inc. is prohibited  
 
 CM Yellow Pages | ALM Expo | CM Today | Configuration Management Journal | CM Crossroads