Wednesday, October 19, 2011

What's wrong with offshoring for software jobs

In my job I spend a lot of time talking with various offshoring companies. I feel that offshoring is an important tool to consider when growing a company. I can talk more along these lines ('necessity') if there is interest, but that is not the focus of this post.

I keep running into the same problem and I think this presents an opportunity and a challenge to these companies. The problem can be summarized in the following question:
Who is responsible for the team and the team's productivity?
From what I can tell, the most comment offshoring company thought process is as follows:
I (the offshore company) can provide to you plenty of resources with foo skill set. 'foo' could be Java programming, cloud development, testing services, cloud management services or any other skill set.
While skill/knowledge is critical to the job, there are other critical elements that can get in the way. I will refer to Joel Spolsky's model, of 'smart and gets things done'.

First, let me say that in my experience, I believe these companies have smart people. I am very impressed with the education systems in the various countries and their ability to get people ready. I have no issues here.

What's really missing is what happens after someone begins a job (the 'gets things done' part). In solid software companies, starting a job is only the beginning. People begin a career, learning how the company works, working with other smart people, and producing useful and high quality software in the context of how the company works.

Unless you are a company producing lots of small, independent apps, your code will be interrelated. No programmer is on an island.

We have seen that this process requires a high dose of collaboration, and in that process knowledge transfer, learning and debate. This is not something that can happen effectively over the phone or using some other remote communication model. At least not as the only communication model. The team building aspect takes a lot of time. The term 'jelling of a team' has been used to describe this process.

If it goes well, this process leads to highly productive teams. Let me be clear, I used the word 'team' instead of ' individuals'.

From the experience I have so far - I have not seen an offshore company that deals directly with this aspect. I have many theories about why this is the case.

What are your thoughts on this?