In theory, using an offshore, outsourced software development team sounds great, since it’s hard to recruit and retain local talent. Adding people from another location supposedly gives you the flexibility of faster ramp ups, ramping down when you need to, and access to good technical talent. The problem is that it’s not that easy.
You must consider the overhead of collaborating while living in two different time zones, the challenges of communicating with people you’ve never met, and that unsettling feeling that you aren’t accurately measuring the productivity of staff you can’t see. We refer to it as the “productivity tax” associated with working with an offshore software development and testing team.
Narrowing this gap and reducing the productivity tax is a challenge we welcome. By lessening this bothersome tax, we are able to offer our clients all the upsides to outsourcing software development without the downsides. Every company we work with is different, so the solutions we come up with are unique to individual clients and how they prefer to operate. Here are a few examples.
Not only is the outsourced software development team working from a different location, its members don’t work the same hours as the internal team. Communication is limited and the client doesn’t always feel supported.
Solution: When you have software development teams working in different time zones, there is a big benefit to having one or more key technical contacts always available to the client. The client then always has someone who can answer questions and address issues during its business hours. We refer to these as “unstructured meetings.” We also use time zone overlap to hold grooming sessions, sprint planning, and retrospectives. This “always on” technical contact structure also helps solve the next common challenge.
We’ve got two software development teams (one internal to the client, one outsourced) that have never met or worked together before. It’s a nightmare getting everyone marching in the same direction.
Solution: In addition to daily standups, planning, and retrospective meetings, we invite every team member to two key “structured meetings.” In one meeting, we discuss development problems we encountered, design decisions we made and why, the result of code reviews, and other topics that are more development centric. In the other meeting, we talk about the bugs that were identified, those that were not caught early on, test automation strategies, and other issues related to testing. Yes, it’s an investment to involve every member of the team and conventional wisdom would lead you to believe we are adding a heftier productivity tax. However, in our experience we’ve learned that these meetings improve productivity. Everyone understands the purpose behind the goals to achieve and the reasons behind the decisions that are made, plus they learn from one another by solving problems as a group. With teams in two different time zones, we plan for some overlap every day for structured meetings and more at the beginning and end of each sprint.
If you can’t see your outsourced team, how do you know how good it is and whether it’s efficient? You may not be used to managing people who aren’t right in front of you. How do you know how they spend their time?
Every day is different for engineers, who face different problems and challenges. They may spend their time working on planned tasks or reworking a user story from the day before. It’s a common and very natural question for the client to wonder whether team members are making good decisions on how to spend their days.
Solution: In addition to the structured meetings discussed as a solution to challenge #2, opening up communication among every team member in unstructured meetings provides greater visibility and further reduces the productivity tax. We leverage tools like Lync and Skype in addition to traditional email. It has been a surprise to us to realize how important video conferencing is in bridging communication gaps and building a sense of team. It’s dramatically different when you can see the person you’re talking to. When clients are regularly exposed to every member of the team, they experience firsthand how their remote team members brainstorm solutions, solve problems, take ownership, and are willing to jump in and help with issues as they arise. We are able to eliminate doubt and trust issues no longer exist.
It is true that there are sound reasons why team members are supposed to be in one location under the tenets of Agile development. Being in the same place makes it easier to get on the same page and work as one unit. But in the real world, we can’t all work from the same office. While the details of the solution may vary slightly from team to team, the objectives are the same. Get your people talking and working together. Do whatever you can to bring everyone together to work as one team. It may seem like a big investment and you may think you’ll spend less time coding and testing, but you’ll see pretty quickly that increased productivity results.
At Integrant, we are committed to helping our clients reduce the Productivity Tax through our proven processes. Learn more about how Integrant makes outsourced software development efficient and effective.