Outsourcing isn't a particularly popular topic at AdvancedMD, at least among some of the developers. And who can blame them? We've all seen plenty of failed outsourcing projects, and few of us have seen successful ones.
And we're starting to hear more and more stories about Company X outsourcing all of their Y to India for Z years and then frantically pulling everything back here to the US. "A-ha!" we tell ourselves, "The offshore outsourcing fad is over, and we can all get back to business." The cost savings are a hoax, you see, because (1) the overhead is far more expensive than anyone could have imagined and (2) those poor Indians can't write decent code.
On the other hand, we have offshore outsourcing firms like Aditi and others assuring us that we can cut 20% of our existing development staff, at $150-200K apiece, and replace them seamlessly with twice as many engineers based in India, China, Belarus, etc. "Those legacy products that you hate maintaining? Just send them to us, and we'll make the problem go away!"
So, what's the truth? Is offshore outsourcing a panacea or a pariah?
I think we're still seeing failed projects, but some companies, like AdvancedMD, have moved to what I'll call "Outsourcing 2.0" (just in time for Web 2.0!) This isn't your grandfather's outsourcing. In fact, Aditi meticulously avoided the term "outsourcing" today, and instead used the word "co-engineering". What's the difference? Read on...
A few months ago, we started a project with CitiusTech, an outsourcing outfit with most of its engineering resources based in Mumbai, India, and the results have been surprisingly good. In fact, I expect that, as AdvancedMD grows and our R&D budget increases, some portion of those resources will go toward expanding our CitiusTech team.
So, what has made this experience different?
- Realistic cost-saving expectations
- Choosing the right partner
- Committing the appropriate local resources to the relationship
- Leveraging an Agile development approach
1. Realistic cost-saving expectations
Unless you're headquartered in an ultra-high salary area like New York or San Francisco, you're kidding yourself if you think you're going to save a lot of money by outsourcing to the other side of the world. (No one in Salt Lake City is paying $150K/year for developers, even with benefits, equipment, and office space.) In all likelihood, you'll save a little, but saving money shouldn't be your primary objective.
There are many reasons that this is true, but primarily it's due to the overhead involved in managing the relationship. It's just not easy to coordinate the efforts of a team in the United States and those of a completely separate group of engineers half a world away.
2. Choosing the right partner
I believe that healthcare has a steeper learning curve than any other industry. You can't build a team of engineers that have never worked in healthcare before and expect them to be productive in less than 6 months, no matter how technically competent they are.
CitiusTech focuses exclusively on healthcare. This focus brings a couple of key benefits:
- Each team that CitiusTech builds for us has immediate access to subject matter experts, so they don't have to wait 12 hours or more to get an answer to every question.
- CitiusTech invests a great deal of time and money to provide training to senior analysts, architects and engineers, both in healthcare topics and technology. So, not only do we not have to spend a lot of time explaining healthcare to our CitiusTech team, but they are often able to teach us.
3. Committing the appropriate local resources to the relationship
We recognized from the very beginning that we couldn't just throw functional specs over the pond and expect good results. We put two of our best people (project manager, Mickey, and senior developer, Dave) on the project to foster the relationship, provide guidance and feedback, and monitor progress.
4. Leveraging an Agile development approach
We have been using Scrum at AdvancedMD for almost a year now, with fantastic results. (I'll blog about that later.) As we embarked on our relationship with CitiusTech, we found that they use Scrum, also, and they were willing to tweak some of their process to align them more closely with ours.
The Scrum approach provides us with transparency into their processes, just as it allows other departments in AdvancedMD to see what we're doing, in our sequestered "cave". It also allows us to evaluate their progress monthly, and, if necessary change direction. Sounds pretty "agile", right?
We have yet to deploy a completed product from this relationship, but that isn't more than a couple of months away, so I'll let you know how it works out. But at this point, those of us who have been involved in the project are very optimistic. The end result, we hope, is that we can turn over an entire subsystem (actually three subsystems that could be combined into one) to CitiusTech in a few months, allowing us to focus on our core products.
2 comments:
"those poor Indians can't write decent code"
these americans can't stop being racist.
Putting aside the irony of your comment, the purpose of this post was to credit our valued partner in India with providing unique expertise and value to our organization. It discourages unwarranted ethnic discrimination, and encourages the reader to be open minded about seeking highly-skilled resources among people of other cultures. It is the opposite of "racist".
Thank you for reading at least part of one of my posts. I think you just doubled my readership. ;)
Post a Comment