Companies that outsource IT operations are often very successful. How do they succeed? I think that they often replace in-house IT staff with operational roles rather than those doing product development work. The managers in their client companies are often unhappy with their own IT staff. The outsourcers essentially promise "Our people are just as bad as your people, and cheaper." Their cheaper model works well for many IT tasks. It is not working well for product development.
We have seen particular problems with Indian outsourcing firms. We went through a phase where we took candidates from outsourcing firms and worked with them on two-week trial contracts. The salespeople from these firms promised, over and over again, that we were getting their best programming talent. However, the results were disappointing. About 10% of these candidates performed at an acceptable level. When we select our own individual contributors for trials we have a success rate of around 50%. These results explain why Silicon Valley firms often pay more than $100 per hour for local talent, even though Indian outsourcers offer similar services for $20 per hour.
There are many talented individual contractors working on the Internet, from many countries. The Assembla team currently includes 43 people from 16 countries. There are also (in theory) many talented people working in outsourcing firms. These companies promise professional management in addition to programming talent. Some of these outsourcers are good. However, in our experience, outsourcing firms are often useless for software product development. You can protect yourself if you understand their incentives, and take some of the actions recommended below, such as moving to fully transparent continuous agile.
We can see how the incentives of Indian outsourcing vendors work against product development projects:
Here are some strategies for protecting yourself when working with outsourcing companies:
There are attributes you can look for to find an outsourcer that can do real software engineering and development. It might be the beginning of a beautiful friendship.
Specialization. A lot of outsourcing companies claim to do almost everything. That is a bad sign. They may have one person in the company who has done each thing they claim to know. That doesn't mean that the team assigned to you will have any relevant experience. It is a good sign when the whole company is specialized. They are probably very good at their specialty.
Fixed price options. Offering a fixed price option shows that the firm has confidence in its ability to manage and deliver. I don't usually recommend buying development services for a fixed price because it causes delays. You need extra time to specify and negotiate work and to test and accept the deliverable. However, I think it is a good sign if the firm offers a fixed price option, and a good idea to test it.
Practicing continuous delivery. This gives you a lot of visibility into the development process, and creates many places where you can work together for improvement. Use a continuous agile process to get individual accountability, engagement, and a good workflow for distributed team members.