I have been very fortunate in my career to be able to do a lot of interesting things and now I can add working with an offshore development team to the list. My adventure with offshore development has a very interesting story. The client I am working at has offices all over the world with their headquarters in the US. One of their offices is in Shanghai, China and they wanted to utilize some of the local talent for obvious reasons. They have used developers in Shanghai before (they currently have another ongoing project) so to them this was not something they were to concerned with. So in the early stages of the project we decided to do all of the design and prototyping in the US office and then ramp up the Shanghai developers once things were solidified. At first I was very sceptical as to the success of offshore development but over the last seven months I have slowly seen that it can work but requires a lot of planning and a solid processes in place. If you think you can just email high level requirements to a team on the other side of the world and have things work out smoothly you are wrong.
These are the things I have learned during the last seven months as I have worked with a development team in Shanghai, China.
This is the most important thing of all. The waterfall approach to programming seems to work best in these cases while a fast iterative approach nestled with a lot of creativity does not. In our case doing the design and prototyping in the US and then sending complete requirements to Shanghai worked out the best. It is a lot easier when all the parties involved in the design process are under the same roof. You really need that face to face in order to get your point across and doing that long distance is problematic.The other thing I have notice is that when you offshore you get what you asked for. If the specifications say put an apply button on the screen but what really should be there is an ok button you will get an apply button. Think of it this way. Would you want a contractor who is constructing a building all of the sudden decide you don’t need a 2 by 4 but instead a 1 by 4 and then have the piece of wood break when to much weight is applied. If you look at programming this way then things should be clear since the requirements are the blueprints to your application.
Know the Culture of the Area
The culture in China is very passive and when working with the team here they were reluctant to express their opinion at first. This does change after time (it has for us) but the passiveness of the culture is still there. So how do you deal with this you ask? Well for us working very closely with the team has help tremendously. You have to get a feel for the team members, which can only really be done in person, to better help you make the determination of whether they are understanding you or not.
When we first started working with the team in Shanghai we corresponded a lot over email and Live Meeting which had mixed results. What we found was things got lost in translation so to speak and we always got the “yes I understand this” response but were really unclear if they really did (another culture thing). Traveling to Shanghai seemed to be the missing link and did wonders for us. Once we arrived we quickly broke down the culture barrier (as best you can) and we all were on the same page. This in my view couldn’t be done via email and WebEx and really required some face time. So with this in mind be prepared to do some traveling to ensure the success of your project.
Talent of the Team
The guys we are working with here are bright and energetic developers and are much better than other teams I had head of in the past. They are on top of the newest technologies (actually this project is using the .NET 3.0 stack and ATLAS) and are always eager to try new things. They know their way around MSDN and all of the hot sites and are aware of new trends and coding styles. I am not saying that you will have this much luck but follow the same guidelines you follow in the US. Interview the developers and learn what they know even if you are using an outside firm (which my client isn’t).
So in closing I think offshore development can work but you can’t just throw things over the fence and expect the work to get done. This is no different than having a team in the US. If you don’t work with them and guide them (in person) then you are not going to get the results you wanted. So if you are going to do offshore be prepared to do some traveling but with good guidance, solid requirements and a talented team you can be successful.