Five Tips for Outsourcing in Agile Software Development

  • Share
  • Sharebar
  • Share

In every business, one of the methods of making a bigger profit is cutting cost, which includes labor cost. The most common way of doing it is outsourcing the work to a country with lower labor costs. Outsourcing also applies to the software development business where partial or full outsourcing is a common practice. Needless to say that there is enough experience gathered in the whole software industry to know what can and what cannot be outsourced as well as what the drawbacks are. Surely enough when it comes to agile software development methods outsourcing idea comes to the table.  Today I have five tips I want to share with you.

Outsourcing in Agile illustration

wanted By Paul Keller

1. Secure a Traveling Budget

It seems to be a big surprise to many managers, but outsourcing does not mean that everything can be done remotely without meeting the people you want to work with. If you have two or more teams that need to work with each other, you need to setup team building activities to enable the work spirit and make sure that the teams are self-organized and self-managed, which is very important in building real agile teams. A good exercise is to setup at least one iteration to be   done with mixed teams like having the mixed teams in Scrum working in Scrum of Scrums and building two potentially shippable increments, which will be merged into one product at the end of Sprint. The target of this exercise is to not only team build, but also transfer knowledge, setup a common language, and best practices. Sometimes one of the outcomes is a good understanding of what agile software development is because understanding that by outsourcing partner is usually different.

Besides the agile aspects of the whole process, you need to travel to see that the outsourcing company has the resources and environment capable of working with you and fulfilling your needs.

  • Check that people are not double booked on different projects (quite a common practice),
  • Test videoconferencing, teleconferencing, and Internet connection. Communication is crucial in outsourcing.
  • Audit security level. It wouldn’t be nice to know that anybody could walk in, steal your work and launch the product before you.

2. Outsource the Whole Team not a Part

One of the success factors of agile software development is a short feedback loop. People cannot wait for information, don’t hesitate to ask questions, or find ways of communicating with somebody crucial to make the decision.  If possible the agile team should be located in same country, same building, same floor, and same open space. As the team I mean the Team for Scrum, the developers for XP. The team can share stakeholders, Product Owner, people responsible for the process like Scrum Master. You can easily notice how much time will be wasted if team members are separated.

Even walking to the other side of building is some kind of effort and people automatically postpone it or just don’t do it. When you make decision about outsourcing it is much better to build another agile team that outsources only part of expertise. This way you will allow to keep your short feedback loop in the new team, otherwise communication becomes a huge overhead. Spending one full-time resource to communicate with two members of outsourced team is not anything unusual.

The common idea is to outsource agile software testing. Agile testers need to communicate on daily bases with the product owner and developers. They need to drive acceptance driven development, do agile testing, and attend planning and review meetings. Let’s look now on issues being created that way.

  • Offshore testers cannot actively attend planning meetings and follow all the conversations going on.
  • Local team has to think about ways of sharing brainstorms, drawings, and discussions with the agile testing team, which naturally limits tools and shifts focus to ‘how can we show it in that tool’ instead of ‘how to present the idea’.
  • Some of the techniques of agile testing are not possible to use, in example ‘show me’.
  • The number of questions asked.
  • You will not remember to share all the information. In agile teams a lot of information is shared informally.
  • The number of messages in e-mail, instant messaging, and phone calls can become annoying to the local team members and will be treated as a distraction.

3. Set up One Environment and Issue Reporting System

You need to agree on using the same environment and issue reporting systems. Ideally, if you can have these systems on site, you control them and give access to the outsourced team. Why it’s so important? Because first of all you want to have defects found in the same environment, so you do not spend time on investigation if the issue was system specific. In case of two or more teams delivering increments, you want to have that increment integrated on the same environment using the same Continuous Integration system. To follow the same standards and best practices you need to have the same IDE, plug-ins, and building tools. It will make resolving issues easier and force the same standards in all the teams. To track progress of work in the outsourced team, you need to have issued a tracking system such as Atlassian Jira with access for all the team members. This way you can also have one Product Backlog or in other words common collection of User Stories, defects and so on, which is necessary in any agile development methodology. One tracking system also means easier reporting.

You should also set up one Wiki for the agile project, which can be accessed by everybody and put pictures of team members and contact details. It will make the team members fill more like they are talking to actual person, not a nick or avatar in an issue tracking system.

4. Agree on Delivery and Reporting

You need to agree up front on deliverables, the process of acceptance of the deliverables, and time reporting. It is a good practice to have it in the contract. However don’t push for logging the same amount of hours in an issue tracking system as in the time tracking system. Remember that when you are talking to your outsourcing partner, you will get exactly and literally what you are asking. The question is ‘Do you want to have fake data?’ It will take some time to learn how to communicate with your agile outsourcing partner effectively.

5. Choose Your Instant Messaging

There will be many questions about names and address, location of documents and so on. They are too short to have a phone call or write an email for each of them. The best is to agree on an Instant Messenger service everyone will use. It can be internal messenger with access provided together with VPN or just one of the popular brands like Skype. Pick one and stick with it, make it mandatory to be online. Users in your Agile Team should also properly use the auto away status, so you know where someone is not at his or her desk. Remember that good communication and short feedback loop is crucial in agile software development. Using instant messaging:

  • Is quicker than phone and cost less,
  • Gives you a copy and paste functionality for code, error messages, and many other short pieces of text, and
  • Enables you to quickly share screen and send files i.e. application logs.

Now it’s Your Turn

Share other issues you have found in your experience with outsourcing agile testing and tips about making outsourcing easier.

Enjoy!

Similar Posts:

2 Comments

  1. Alok says:

    Good post Krystian. Culture also plays a big role in outsourcing an agile product. For example, agile values can fit in the less bureaucratic, more flexible American culture, but not necessarily in the more hierarchical and structured cultures found in corporations in India, especially the IT services companies. Captive centers are a different ball game, but I have seen issues there as well. Heard of a term ” Agile Waterfall” ;)

Leave a Reply