Skip to content

Secret sauce of offshoring and distribution - summary of Scan-Agile open space session

October 31, 2008 by Artem

This Wednesday on the first Scandinavian Agile conference in Helsinki I was running an open space session about what works and what doesn't work with distributed and/or outsourcing teams. During the two hours we had an excellent discussion with many people in various roles from offshore customers to ones working in an outsourcing company to people being pushed to distribute, from product managers to Scrum Masters to developers.

A lot of the discussion results are intangible and stay in the heads of the participants and I didn't record the excellent discussion on feature teams VS component teams VS functional teams in the case of distribution. Here is the brief summary of what was commonly acknowledged to be working and not working in cases of offshoring and distribution. Use at your own risk.

What doesn't work

  • Distributing for cutting costs. Whatever attractive cost cutting might sound for business people, the problem is that value of software development is way more difficult to calculate, than the programmers' salary and if your only motivation is to cut costs, you might be loosing way more, than you are getting without realizing it. Some studies report that with the careful calculation you may loose way more, than you are getting.
    • Also when many business people read the same cost cutting books and are pushed by similar shareholders, the demand for programmers in the "low cost" countries raises that quickly, that prices go up and it is not that low-cost anymore. Some companies started realizing that and are actually moving jobs back to the main site.. at least they were doing that before the current financial crisis.
  • They come, learn and go. For the same reason of high demand for programmers, the turn-over in the typical outsourcing countries can be that high, that any people you see are newbies who learn new technologies. Once they learn, they go for continuing their career in a different place.
  • Investing in coaching people in remote location. Because of the same high level of turnover, you might find out that you are investing into people.. who will go to another companies and position very soon.

What works

  • Expand globally, when you don't have skills or talent available locally. For example, in Finland all the guys skilled in Linux programming seem to be hired by just a couple of companies. If you want to hire more people, you have to look in the other countries.
  • Get good guys only, Start with motivated individuals. Getting good guys is important in any kind of business, but it is twice as important in the case of distribution, especially in the start-up phase. Distribution is adding enough challenges on its own. Hiring the mediocre people might make it unbearably difficult.
  • Synchronization, synchronization, synchronization. Whenever you get a multisite configuration, there is a communication barrier and it is twice as important to make the problems and issues as visible as possible. Invest into daily or ideally continuous builds, extensive automated test coverage and communication tools such as wikis and video conferencing.
    • Invest into good communication tools. Tandberg video conferencing are expensive comparing to the telephone, but they make the communication so much easier that I would wholeheartedly recommend considering the video conferencing seriously (Note, I am not affiliated with Tandberg in any monetary way)
  • Small business. A particularly good type of a customer for offshoring seems to be small and very small business in the Western countries. The scale of the business makes such customer count money well, invest into making sure the development team understands what he wants and such customers are often eager to embrace early releases and provide continuous feedback.
  • Start together (meet live). When starting the distributed project it proved to be effective to colocate team or at least some members from remote and main site teams for a reasonable amount of time such as several weeks to several months. That helps building the common understanding greatly.

General conclusion:

General conclusion was such that outsourcing and distribution is rarely a good thing if you count actual costs really well. With the few exceptions, the only case when it works is when you distribute for getting local talent not available at your main site or when you expand to get connections to the local market. In any case it is more efficient to become efficient on the main site first and expand to many locations after that.

What is your experience in the distribution and outsourcing? Does it work for you? If it works, what is your secret sauce?

Comments

What works - for me

October 31, 2008 by Bob (not verified), 9 weeks 3 days ago
Comment id: 1965

We do our development offshore with a team of 5 developers. In Agile-speak I'm the product owner/part-time scrummaster. Project has completed about 25 sprints.
What works:
Shortish iterations - we use 2 weeks. Started with 4 weeks but was too long for comfort.
More detailed user stories helps. This includes very detailed story-related docs when the features is at a higher level of complexity.
Automated testing.
Done includes the usual PLUS it's not done (from a development point of view) until QA says it is.
A higher level of collaboration especially re what impediments are present. Remove impediments as fast as possible.

Where I have reservations and what I'd do differently:
A bit more architecture up front. Encountered some fundamental issues that were caused by our desire to 'start developing'.
Co-located QA. With our team they're not with developers.
Establishing more of a quality mindset of what 'done' means.
A better setting of management's expectations that Agile/Scrum is not magic and that the developers, not them, provide the estimates.

Interesting, Bob. How do you

November 3, 2008 by Artem, 9 weeks 14 hours ago
Comment id: 1969

Interesting, Bob. How do you get these "very detailed story related docs". Are they prepared by the clever customers (and his UI people?) or do you build them together during workshops or regular work? Do you ever meet live with the customer side of the project?

come, learn and go: unit tests and double code reviews

December 10, 2008 by Chris (not verified), 3 weeks 5 days ago
Comment id: 2098

When faced with the come, learn and go scenario for off-shored work, perhaps performing twice the number of code reviews and insisting on unit tests can help manage to a quality deliverable.

People over control

December 10, 2008 by Artem, 3 weeks 5 days ago
Comment id: 2099

Extra rigor might help a little. However, software development is so much more people, than code - I am not sure how much it helps if extra code reviews and tests are done by people or for people who don't really care. Did it help in your case, Chris?

insisting on unit tests

December 10, 2008 by Ilja Preuss (not verified), 3 weeks 5 days ago
Comment id: 2101

This reminds me of the story of the team which established a code coverage of 99%, as demanded. And all the tests run. None of the tests contained a single assert statement.

Extra rigor doesn't help with a team that doesn't want to deliver quality. Every rigor can be gamed - or you spend so much time enforcing quality, that you as well could have developed the system yourself, or so it seems to me.

Post new comment

The content of this field is kept private and will not be shown publicly.
  • Allowed HTML tags: <a> <b> <i> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img> <br> <blockquote>
  • Lines and paragraphs break automatically.
  • Web page addresses and e-mail addresses turn into links automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>. Beside the tag style "<foo>" it is also possible to use "[foo]".

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.

Best of AgileSoftwareDevelopment.com