Thursday, February 14, 2008

"Outsourcing": Four-letter Word?

I attended an executive round table today hosted by Microsoft and Aditi, an India-based outsourcing company. On the surface, it was basically a sales pitch for partnering with Microsoft and outsourcing with Aditi, but it was actually pretty interesting. And I got a continental breakfast, a pretty nice lunch, and a Microsoft webcam (so I can finally put racy videos of myself on the Internet).

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?
  1. Realistic cost-saving expectations
  2. Choosing the right partner
  3. Committing the appropriate local resources to the relationship
  4. 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:

  1. 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.
  2. 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.

Wednesday, February 13, 2008

Inaugural Post (or, "Yes, my ego really IS that big...")

So, why is a guy who didn't even "get" blogs a few weeks ago creating his own blog? Great question, and I'm glad you asked.

For over eight years, we've been doing some pretty amazing things at AdvancedMD Software and, as much as we enjoy patting our own backs, it's time to show off a little and give our customers and the outside world a window into our little shop.

Also, some really smart people have told me that I should blog. So, I'll blog.

The first name I came up with for this blog was "AdvancedMD Tech Musings", and that's pretty much what it's all about--just a place to think out loud about where we've been, what we're doing, and where we're going, from my perspective as VP of Techy Stuff (not my official title, but one I like) at AdvancedMD.

So, fasten your seatbelts and keep your hands inside the vehicle at all times. I'll start posting whenever I start thinking something...and that happens more often than my co-workers might believe.