(Part 5 of a 5 part series: “So, you need to develop a product?“)
Outsourcing has become a popular topic and practice these days. I have been outsourcing to India since before it became popular. Cost was definitely one of the driving factors, initially. However, these days, the cost benefits are quickly declining as prices in India continue to rise and productivity decreases due to factors such as declining loyalty and retraining. I am still a big fan of outsourcing. Why? Primarily for the intellectual capital and the flexibility.
I’m going to break this down into 8 areas, give a little background on each and give each area a rating (1-5, 5 being the highest). I will give each area a rating for today and a comparable rating to what it was 5 years ago. Since India still seems to be the most popular place to outsource, I will give my ratings based only on my experiences (directly and indirectly) on outsourcing to India:
Cost (Today = 2; 5 Years Ago = 4):
Costs in India have been rising as competition for resources grows. While still considerably less then the U.S., it is important to consider the efficiency (see below) of the engineers and working relationship while assessing the overall cost benefit. Personally, I go to India now for the intellectual capital as a primary benefit instead of cost. Recently, a number of companies I’m involved with have had good success, from a cost benefit perspective, outsourcing to other countries such as China, Vietnam, Latvia and the Phillipines.
Intellectual Capital (Today = 5; 5 Years Ago = 3):
Intellectual capital is my primary driver for outsourcing to India. I have been able to find extremely talented engineers in India. They tend to be much more disciplined and have developed a deeper expertise than many of the engineers here in the U.S. This is probably due to their extreme focus on education and the lure and competition of their quickly growing tech economy. If you want architecture done right and well documented code, or if you need to build something that is high capacity and highly scalable, India is an excellent place to go. However, this discipline and process comes at the cost of efficiency and speed.
Efficiency / Speed (Today = 3; 5 Years Ago = 2):
When I first started outsourcing, it was pretty inefficient. There were challenges with time zone differences, communication, language/translation, working styles, etc. This resulted in more hours being spent (overall) to get a job done. I’m not sure that there were any real cost savings given these inefficiencies. Today, things have improved considerably. We still have a time zone issue, but as quality increases this becomes less of a speed bump. Also, communication is much better (including the quality of telephone connections between the U.S. and India) and the working styles and language/translation gap has become much smaller. It seems that Indians know just as much about American culture now and news as we do (I’m embarrassed to say that sometimes they know more about what’s happening in the U.S. than I do!) All of this has made communication much more seamless; resulting in greater efficiencies. One resource sitting next to you in your office is still more efficient than one resource in India (communication being the primary factor); however, comparing that at a group level, you can gain greater efficiencies in India by having a 24 hour development cycle and greater flexibility for expansion.
Flexibility (Today = 4; 5 Years Ago = 2):
Another major advantage for outsourcing is the ability to grow your team quickly. Engineers overseas are easier to find than engineers in the U.S. In India, these days, they have training down to a science and they are producing engineers faster and more efficiently than we are here in the U.S. It’s almost like an assembly line for engineers. I’ve been able to quickly expand teams (permanently or temporarily) as needed and that can be a real advantage to a fast growing company. However, this “assembly line” can definitely have its disadvantages when it comes to quality.
Quality (Today = 4; 5 Years Ago = 2):
One of the most important things to pay attention to is the quality and experience of the engineers when outsourcing. It is important to consider their education and training and whether or not they’ve had real world work experience. A lot of outsourced firms are pulling people fresh out of training and putting them on new projects. The larger outsourced firms have a management and mentoring structure in place to make this more efficient and control quality; but that definitely comes at the cost of efficiency. Don’t let your project (and money) be the training ground for new engineers.
Security (Today = 5; 5 Years Ago = 2):
Security (of your ideas/code) used to be a big concern when outsourcing. In India, if you go with some of the more established firms, this threat is no worse than it is here in the U.S. As technology continues to fuel the growth of India’s economy, everyone has become very sensitive to this issue. They realize that stealing code and ideas could severely hurt their growth. When I first started outsourcing, there was an instance where we found that our ideas and code were being reused and promoted outside of our project (as a separate product at the outsourcing firm). It was alarming and made us really think about security as an important issue. Fortunately, that was the first and only instance I have ever encountered related to security threats. Having said that, this is definitely something to be cautious about when outsourcing to other countries whose economies are not so dependent on outsourcing as a source of income.
Creativity (Today = 3; 5 Years Ago = 1):
As I mentioned before, India provides an enormous amount of intellectual capital, however, where they excel in expertise, often times they may lack in creativity. Engineers in the U.S. seem to have an easier time expressing “vision”, whereas engineers overseas have an easier time expressing “architecture”. I believe in setting the vision, product definition and the architecture of the “user experience” with resources here in the U.S. and leaving the architecture of the code and platform to India. I have seen the creativity level increase quite a bit over the years in India, as they are exposed to more projects and as entrepreneurship grows. However, as a whole, the creativity level in India still has a way to go.
Loyalty (Today = 2; 5 Years Ago = 4):
Loyalty used to be a strength for outsourcing. It used to be pretty easy to keep engineers involved and engaged on a project long-term. Now, there is so much competition that it is very, very difficult to keep people. Engineers want to advance their careers by moving up within an organization (so they want to move from coding to architecture to management, etc. quickly) and they want to increase their earning potential. As a result, there is often a lot of churn and sometimes even a lot of “bait and switch”. When considering outsourcing, find out how long they typically keep an engineer working on one project. Churn will cost you time and money in training and ramp of new project team members.
This tip is mainly for startup companies. Startup companies have less discipline, consistency, process and need to move much faster than larger companies. Outsourcing is optimized for larger companies, due to the management styles/processes of many outsourcing firms. Having said that, there are ways to optimize it for startup companies. The best way, in my opinion, is to manage your engineers directly. Outsourcing companies will try to put in project managers to “make things more efficient”, “maintain quality” and “manage goals”. They are valuable to the team, but I find it best to have a direct relationship with each and every engineer on your project. Manage them directly, communicate with them directly and make it as much of a fluid process as possible (this will also help with loyalty, too). Use the project manager to enforce the goals, but don’t let them be the only point of contact between you and your engineering team.
I still remain a very big fan of outsourcing, if done right…