Perhaps outsourcing is harder than offshoring
I've been thinking a lot recently about why my current company seems to have so much trouble working with our offshore development partner in India. Most of the people I work with spend their time thinking about how to work with a bunch of people who are halfway around the world with only a few hours when we're all awake at the same time. The way we've approached the problem is to take about 20% of the developers and temporarily move them to the US to work alongside us while trying to use technology to collaborate as best we can with the remaining developers (conference calls, IM, email and occasional visits of the US staff to India). We have managed to overcome some of the distance and I personally know many of the developers by all these channels and have met a large number in person (in the US and India), but problems still remain.
I know we're not the only company to face these problems (in fact a recent blog by Jay Fields Is Distributed Development Viable is what got me thinking on this topic this week). I agree with most of Jay's post but have been wondering If we solved the distributed development problem ... would the problems I see everyday disappear? I have to say they wouldn't and when I ask myself why I've concluded that our problem has less to do with the geographic distribution issues we face (which are certainly formidable!!) and more to do with the basic fact that most of our developers work for a different company than we do. I think outsourcing seems to be as big if not a bigger problem than offshoring.
What do I mean by that...In my experience successfully developing software is largely dependent on having a team of good people who know each other, have worked together before and are comfortable using their critical thinking and expressing their opinions. I imagine that we decided the rate differential wasn't important and flew the entire India based development team to the US to sit next to us tomorrow. The problem we would still have is that the members of my development team would still work for a different company than I do. My company spends a lot of time helping its employees think about their professional development and how to advance their careers. For our developers at our outsourced partner we do none of that (one of the advantages outsourcing is supposed to grant us the advantage of a bigger pool of resources to use but I believe that we don't need "resources" we need "developers" - sorry to dive into my liberal arts education and deconstructionism a little bit :) With outsourcing we give up on thinking of our developers as individuals and spending time and energy (and money) on their professional development and ensuring that they are challenged and want to continue working with us. The effect is that the average tenure of most of these developers is measured in months instead of years. The problem cuts both ways as the developers have an institutional loyalty to their employer and know they will likely not be working with us for the long term so its very hard for many of them to assume the role of trusted team member who makes decisions for the long term.
What's the solution... I don't know. All I know is that the current situation is very difficult and only focusing on shrinking the geographical distance between the US and India does not seem likely to work.
If you made it hear thanks for reading, I needed to get this off my chest. I hope to get back to more technical topics with my next post!