Once in a while it’s fun to put on shoes of a vendor and see the selection process from the other side of the table. A few days ago I was asked by my long time vendor to help them on a sales call. I have to mention that one of the reasons I like working with these guys is they made themselves a true part of my team, so I felt obligated to help them out as I would do to someone from my own company. Nothing to make a sales call fun like last minute changes. This time it was pretty dramatic – the sales person could not make it. So I found myself along with another guy in a similar situation in front of a CTO of successful startup in the city. Ted, the CTO, did not seem to enjoy the situation. He turned to the “hiring manager” and asked him: “Vladimir, are you saying to me that the company which we are considering is not even here!?” I felt bad for the guy and decided to say few good words about my vendor, reasons I hired and kept them for quite some time now. Ted did not find my attempts to any degree entertaining “Why are you talking!? It should be the sales rep who answers my questions! I have real questions – what is your turn over ratio? I need to know exact percentage!” In the next few minutes the situation progressed from goofy to outright embarrassing. Fortunately it did not last long and in 15 minutes we were escorted out of the building. Oh boy, am I glad that my paycheck doesn’t depend on outcomes of such meetings. BTW, to the best of my knowledge we paved the trail for an Indian company that made a presentation right after us, they had a solid slide deck, all ratios ready and I am sure were not wearing jeans and pullovers. What is still bewildering to me is why someone would prefer a ppp to a genuine customer reference. But as they say “different strokes for different folks”
No matter how well traveled you are be beware of dining experiences. The dangers come in all shapes and forms, literally. Many of my friends were knocked down by local foods while vendor shopping especially in China or India. My friend Boris, VPE of a successful Silicon Valley startup, was out for two days after savoring jellyfish dinner in China, another friend was hard down for almost a week after lunch at McDonald’s in Moscow. I heard that asking for simple local food (something they know how to cook) works well. I also heard that asking for “food that an American can eat without getting sick” gets the message across. I tried those as well as many others and can assure you that none are fail-proof. My latest memory is a low key dinner in Bangalore, where my hosts were quite accustomed to guests from the states. Everything was beautifully served and spiced to a perfect degree; no surprises and no concerns. After the dinner the waiter brought a plate with leaves wrapped into small pouches. My hosts all gabbed one of those and suggested that I do the same – “it’s like a mint candy”. I guess “like” was the key word there, a second later I learned that biting the green pouch feels like drinking Listerine out of fire hose. Luckily I knew the way to restrooms which I covered in just a few jumps.
Shopping for an offshore vendor is unforgettable experience even if you are looking for relatively small contract. Where else an IT manager would be a subject to such royal treatment? Every time when I face a dubious pleasure of vendor shopping I keep reminding myself that it is probably one of the best parts of outsourcing. And there is always something fun to remember about those trips. Not long ago I was in Pune, India meetings with Satyam – one of the top tier outsourcing firms. The lobby of Stayam’s office was decorated with welcome slogans, flowers and colored sand “paintings” on the floor. There were four of five executives greeting me, all holding high positions in the company. They shook my hand with impressive enthusiasm. A few women dressed in saris welcomed me with large bouquets of roses. While a photographer jumped around taking pictures of this one-of-a-kind event one of the execs whispered in my ear that this was unusually flamboyant greeting that they only offered to utmost important guests. After a few more awkward moments we moved to the conference room with maybe 20 execs and managers. The power point parade began after 30 minute round of “quick” introductions. 15 min into presentation I noticed that older execs started to fall asleep, most with their eyes opened; the skill I always wanted to master. A couple hours later I was exposed to more glorious aspects of the company history and abilities than one can possibly tolerate. By that time I knew for sure that no company in the world comes close to Satyam in terms of quality of the resources, ingenuity of leadership and reliability of its management. Speaker after speaker we were moving down the agenda of what was called out as a brief discussion of the company’s capabilities. Lunch, a buffet of monumental proportions, was a welcome break then an hour later and a few pounds heavier I was back to the power point water-boarding. But I was adapting, it seemed that finally I was getting the grip on the art of sleeping while actively participating. Unfortunately the photographer woke me up. He brought me a CD with my pictures. I put it in my laptop to bring back fading memories of the morning. Here they were: the lobby, execs, saris, roses… Alas, the victims of the greeting ceremony were two strange guys wearing suites and all American smiles. For some reason I did not feel that special anymore. Yet so happy as that little excitement saved me from immanent death by power point.
Why is offshore developer’s productivity so much lower than one from your local employees? You would expect that for positions that require high communication overhead or for those tightly linked to difficult to acquire domain expertise, but why developer? Java, C#, C/C++ know no borders and far more international than Esperanto ever aspired to be. So why do we habitually see offshore developers offering productivity at fraction of what we expect in-house. I think there are many reasons for that, some transient some foundational. Here are just some of them, specifically applicable to India outsourcing:
- Bangalore is a beautiful vibrant city; in some strange way it reminds me of San Francisco. No wonder it has become the heart and a synonym for IT outsourcing, one would be hard pressed to find a better place for India’s Silicon Valley. One of the parallels between Bangalore and SF Bay Area is abundance of technical jobs. Everyone and their brother are there from giants like Microsoft, IBM, and Siemens to small progressive engineering companies. Just look at a very small subset at http://en.wikipedia.org/wiki/List_of_IT_companies_in_Bangalore. So if you are a decent developer your job choices are practically unlimited. And let me ask you that – if due to your exceptional talents you had a choice of working for any software company in the world would you pick someone like Google or Infosys Technologies? It’s tough to get into someone’s mind yet I am sure that a choice between Google and Quadwave Consulting Pvt. Ltd. is statistically obvious. The corollary here is obvious as well: when it comes to pick of the litter even very successful outsourcers are in a long line behind a very large group of “the best companies to work for”.
- One of the interesting phenomena is how cultural environment affects building the skills. What I have observed in several geo areas is that the culture is “against” the learning progress; that is especially true for consulting companies. For example, many consulting companies have a business development track vs. expert track, the first one being compensated substantially better. In that case a bright person is pushed either to take a biz dev track or bail out of the company when his / her earnings come hits the ceiling. Broader cultural issues have even more profound effect, for example I noticed that in India one’s personal success is measured in number of people working “under you”, most of the time that means that one’s skills would be used mostly on management tasks and not tuned to acquiring new skills / knowledge / etc. Very much a cliché – promoting a good engineer to a manger means losing a good engineer and gaining a bad manager. The impact of that trend is quite devastating for buyer especially with smaller sized teams – how can you get a solid tech lead for your team if it is only 3-4 people while someone with 5 years experience could be managing a team of 30? That trend is exacerbated by scarcity of high-level resources every consulting company faces: if a practice gets their hands on great resource, he or she must be leveraged across large group of mediocre resources.
- I realized another angle to the topic when building my own consulting / outsourcing teams. Managing engineers is not an easy task, managing bright engineers is extremely complex. So if your main goal is generating a revenue stream (a.k.a. “putting buns in seats”) you may take an “expert” route and deal with celebrity personalities and never-ending need for motivation or build your team with “a middle of the road” resource in mind and live happily ever after. The later seems like a much easier route and that’s why many offshore resource augmentation companies are in the business of “selling mediocrity in bulk”. What is the difference in productivity between star and mediocre software developer? Some say that it’s order of several magnitudes, and I can attest to it.
On a surface that seems obvious: even with dollar fall, rising cost of living in India, China and especially eastern Europe the hourly rates continue to be much lower than those you have to pay in the states. For example, a mid level java developer would roughly cost you:
SF Bay Area, full time $60/hr
SF Bay Area, contractor $80/hr
Bangalore, India $25/hr
St. Petersburg, Russia $30/hr
Shenzhen, China $20/hr
So for every contractor in your San Mateo office you can put 4 in Shenzhen or 2 in St. Petersburg. Or, looking from savings angle, instead of paying a team of 8 engineers roughly $80K a month you can pay less than $30K in China and get yourself a hefty raise.
However, let’s take a look at real cost of outsourcing. The first rate killer is productivity: in my experience on average productivity of resources in India would be 50% of what you would get with local mid level resources, for senior developers it would be at best 75%, and for juniors you could potentially see it as good as 80%. To achieve that level of productivity you would need to put above average efforts in shaping your team and have considerable amount of luck. Typically getting a good senior developer is only possible if s/he is managing is at least 20-25 resources. Also be prepared that understanding of seniority may greatly vary from what is considered a norm locally, and in that light delivering another productivity hit. Let’s imagine that you are planning to outsource a 5 member team that includes one tech lead, two mid-level java developer and relatively junior ones. Your cost for the team would be roughly:
|Role||Level||Experience||QTY||Salary||Aprox Rate||Monthly Cost|
|Tech Lead||Senior||10+||1||$140,000.00||$ 82.60||$ 14,537.60|
|Developer||Mid||7+||2||$100,000.00||$ 59.00||$ 20,768.00|
|Developer||Junior||3+||2||$ 75,000.00||$ 44.25||$ 15,576.00|
What would it cost you in Noida? Let’s assume that you got lucky in finding a tech lead for the team and the rest of the members were typical developers you could find out there.
|Role||Level||Experience||QTY||Salary||Aprox Rate||Monthly Cost|
|Tech Lead||Senior||10+||1||N/A||$ 32.00||$ 5,632.00|
|Developer||Mid||7+||2||N/A||$ 28.00||$ 19,712.00|
|Developer||Junior||3+||2||N/A||$ 25.00||$ 17,600.00|
|PM||Mid||5+||1||N/A||$ 30.00||$ 5,280.00|
Note that team in India also includes full time PM which is not surprising for a team of 9. The result is a staggering 5% of cost savings. Your actual numbers could be different based on your negotiating skills, but the dynamics won’t change.
I am sure that many outsourcing companies would dispute my assessment of productivity. Well, let me give you a couple examples:
- We stopped a development project (CICS adapter) being developed by team of five “very senior engineers” from Mastech after ~3 months due to unacceptable quality of deliverables. 2 months later the adapter was developed by a single developer we had on staff.
- We had to stop and take in-house a handheld development project (.NET) being delivered by a senior developer and several mid-level ones from MindTree due to low quality of code and extremely low productivity. This project was later delivered by a single mid-level developer with oversight from a senior developer in time shorter than it had taken us to ramp up the team in Bangalore.
The list of examples can go on and on, they are just examples, however, considering that I could not offer any examples of an opposite nature, there is possibly a trend here. The question is why offshore developer’s productivity is so low? I’ll put my thoughts on in a separate post.
Whenever I have to introduce using offshore to executives I start with a slide with has title “Good reasons for going offshore”. The slide is otherwise empty. With all the headache it will cause why would I go offshore if I do not absolutely have to? I have been using offshore vendors since ‘92 and there is no place on my body which doesn’t have scars left by that experience – from grotesque stabs on the back to burned fingers. And yet again and again I find myself using offshore vendors and recommending them to my clients and partners. So what are the main “bad” reasons for using offshore? What typically drives companies to consider offshore outsourcing? For many companies those reasons could be roughly grouped into 3 categories:
Reducing operations cost, some most obvious examples would be:
- Lower resource cost; this topic deserves a separate discussion but for now let me just say that if you are good at utilizing offshore you may realize 25-30% savings;
- G&A savings (benefits, office space, utilities, etc.);
- Other resources related savings (reasonable severance, resource add-on acquisition cost, training cost, etc.).
Reducing time to operations / time to market, some examples include:
- Access to existing pool of resources vs. hiring; I will need to touch upon that subject in more details, for now let me just say that that in some cases that is true;
- Establishing development / operations infrastructure vs. using existing or building upon existing;
- Access to specific skills / domain expertise / methodology, etc.
Solving specific organizational issues, a lot of diverse and unique items here, here are just a few common examples:
- Outsourcing legacy maintenance to motivate developers by moving them onto more glorious tasks. That is a well known double-edged sward though.
- Dealing with sawmill of resource demand. Need for resources goes up and down if you staff at the top level your resource utilization suffers, if you target the bottom you can not react to market needs. Proper offshore supplement can help alleviate the issue.
- Risk mitigation, for example: should you hire for dealing with substantial spike in demand? Is the change permanent or when the novelties ware off you will be facing RIWFs? Outsourcing could be a better way to handle the spike.
- In some way the same idea as above but put into terms very clear and dear to hearts of CFOs – eliminating fixed cost
- Using third party operational expertise, existing processes, certifications, etc.
While in a way each of the reasons above could be enough to consider offshore in my view you need more than one reason to actually go offshore. The risks and penalties are just too high. And that deserves a separate discussion.