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?


Mark Kerzner said...

That was my feeling too: you can do waterfall development with an outsourced company - maybe - but not the creative, best quality software products.

And, with the abundance of software development tools today, one developer or a small team can be incredibly productive.

So yes, it does make a difference - being able to talk to someone any time, and often argue vehemently, which is hard to be in a friendly manner over the wire.

John Salch said...

This Steve Jobs quote sums it up to me. If you can't put the rocks together, its very hard to smooth out the rough edges in the team.

(Quote begins here:)
And one day he said to me, "come on into my garage I want to show you something." And he pulled out this dusty old rock tumbler. It was a motor and a coffee can and a little band between them. And he said, "come on with me." We went out into the back and we got just some rocks. Some regular old ugly rocks. And we put them in the can with a little bit of liquid and little bit of grit powder, and we closed the can up and he turned this motor on and he said, "come back tomorrow."

And this can was making a racket as the stones went around.

And I came back the next day, and we opened the can. And we took out these amazingly beautiful polished rocks. The same common stones that had gone in, through rubbing against each other like this (clapping his hands), creating a little bit of friction, creating a little bit of noise, had come out these beautiful polished rocks.

That's always been in my mind my metaphor for a team working really hard on something they're passionate about. It's that through the team, through that group of incredibly talented people bumping up against each other, having arguments, having fights sometimes, making some noise, and working together they polish each other and they polish the ideas, and what comes out are these really beautiful stones.