Outsourcers

"Our people are just as bad as your people, and cheaper"

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:

  • They want to get big customers and big jobs. Big customers are much more profitable than small customers. This fact explains most of the problems that a small customer will have in getting good talent. The outsourcers have a limited supply of top talent, and they make it available to their biggest customers, but not their small customers.
  • They often get paid by the hour, so they give you the cheapest person that matches your buzzword. They get no benefit from productivity improvements. In fact, they get paid more if jobs take longer.
  • They have high turnover. Turnover at an outsourcing firm is often high. It's even higher for the best people, because they get poached. It's much higher for the customers that are working with the best people, because those people often get pulled off onto bigger or newer clients. Outsourcing firms double the natural turnover by pulling people off projects. Also, outsourcing firms cover up turnover by hiding their individual contributors behind project managers. This is inefficient.

Protect yourself

Here are some strategies for protecting yourself when working with outsourcing companies:

  • Insist on individual accountability. You should have individual logins, code commits, standup reports, and activity streams from every contributor. This will help you find the good contributors, address problems quickly, and react to turnover. It also gives you a good, friendly working environment.
  • Be the biggest customer (or buy the firm). If you are the biggest customer, you will get the best talent. Most big technology companies eventually figure this out and ensure that they get the best talent by buying their outsourcing suppliers and becoming the only customer.
  • Build around tech leads. If you can't buy an outsourcing company, you can probably buy a good tech lead. Remote tech leads will often offer to find a team of like-minded individuals to work with them.
  • Learn to manage a distributed, global team. You may feel dependent on the outsourcing model, where you get a remote office that you can manage with your co-located management skills. However, that model gives you limited access to the best talent. If you learn to manage a truly distributed global team, you will be able to work with the very best contractors and outsourcers.

Find the right outsourcer

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.